added verification

This commit is contained in:
jack
2018-04-23 11:49:26 +08:00
parent 843103c58c
commit 737c7da54f
15 changed files with 124 additions and 13 deletions
+7 -5
View File
@@ -1,17 +1,17 @@
APP_NAME=IZYIM APP_NAME=IZYIM
APP_ENV=local APP_ENV=local
APP_KEY=base64:Fu2YulXExzm9HJ5LgVmZUmcbRkchHkc82q02MorN5GQ= APP_KEY=base64:SqyQijGTJXCM9o50k2sKTkx+CWqxR+CE1xNS5b8INRQ=
APP_DEBUG=true APP_DEBUG=true
APP_URL=http://localhost APP_URL=http://localhost
LOG_CHANNEL=stack LOG_CHANNEL=stack
DB_CONNECTION=mysql DB_CONNECTION=mysql
DB_HOST=127.0.0.1 DB_HOST=mysql
DB_PORT=3306 DB_PORT=3306
DB_DATABASE=homestead DB_DATABASE=default
DB_USERNAME=homestead DB_USERNAME=default
DB_PASSWORD=secretx DB_PASSWORD=secret
BROADCAST_DRIVER=log BROADCAST_DRIVER=log
CACHE_DRIVER=file CACHE_DRIVER=file
@@ -37,3 +37,5 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
JWT_SECRET=Ra1xgapjSAFoRJIO5Rbg14gfMpNQDmrS
+49 -7
View File
@@ -17,10 +17,10 @@ class AuthController extends Controller
public function register(Request $request) public function register(Request $request)
{ {
$credentials = $request->only('name', 'email', 'password'); $credentials = $request->only('name', 'email', 'password');
$rules = [ $rules = [
'name' => 'required|min:4', 'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users', 'email' => 'required|email|max:255|unique:users'
'password' => 'required|min:6',
]; ];
$validator = Validator::make($credentials, $rules); $validator = Validator::make($credentials, $rules);
if($validator->fails()) { if($validator->fails()) {
@@ -29,8 +29,18 @@ class AuthController extends Controller
$name = $request->name; $name = $request->name;
$email = $request->email; $email = $request->email;
$password = $request->password; $password = $request->password;
User::create(['name' => $name, 'email' => $email, 'password' => Hash::make($password)]);
return $this->login($request); $user = User::create(['name' => $name, 'email' => $email, 'password' => Hash::make($password)]);
$verification_code = str_random(30); //Generate verification code
DB::table('user_verifications')->insert(['user_id'=>$user->id,'token'=>$verification_code]);
$subject = "Please verify your email address.";
Mail::send('email.verify', ['name' => $name, 'verification_code' => $verification_code],
function($mail) use ($email, $name, $subject){
$mail->from(getenv('FROM_EMAIL_ADDRESS'), "From User/Company Name Goes Here");
$mail->to($email, $name);
$mail->subject($subject);
});
return response()->json(['success'=> true, 'message'=> 'Thanks for signing up! Please check your email to complete your registration.']);
} }
/** /**
@@ -42,6 +52,7 @@ class AuthController extends Controller
public function login(Request $request) public function login(Request $request)
{ {
$credentials = $request->only('email', 'password'); $credentials = $request->only('email', 'password');
$rules = [ $rules = [
'email' => 'required|email', 'email' => 'required|email',
'password' => 'required', 'password' => 'required',
@@ -50,10 +61,13 @@ class AuthController extends Controller
if($validator->fails()) { if($validator->fails()) {
return response()->json(['success'=> false, 'error'=> $validator->messages()]); return response()->json(['success'=> false, 'error'=> $validator->messages()]);
} }
$credentials['is_verified'] = 1;
try { try {
// attempt to verify the credentials and create a token for the user // attempt to verify the credentials and create a token for the user
if (!$token = JWTAuth::attempt($credentials)) { if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['success' => false, 'error' => 'We cant find an account with this credentials.'], 401); return response()->json(['success' => false, 'error' => 'We cant find an account with this credentials. Please make sure you entered the right information and you have verified your email address.'], 401);
} }
} catch (JWTException $e) { } catch (JWTException $e) {
// something went wrong whilst attempting to encode the token // something went wrong whilst attempting to encode the token
@@ -72,6 +86,7 @@ class AuthController extends Controller
*/ */
public function logout(Request $request) { public function logout(Request $request) {
$this->validate($request, ['token' => 'required']); $this->validate($request, ['token' => 'required']);
try { try {
JWTAuth::invalidate($request->input('token')); JWTAuth::invalidate($request->input('token'));
return response()->json(['success' => true, 'message'=> "You have successfully logged out."]); return response()->json(['success' => true, 'message'=> "You have successfully logged out."]);
@@ -108,4 +123,31 @@ class AuthController extends Controller
]); ]);
} }
/**
* API Verify User
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function verifyUser($verification_code)
{
$check = DB::table('user_verifications')->where('token',$verification_code)->first();
if(!is_null($check)){
$user = User::find($check->user_id);
if($user->is_verified == 1){
return response()->json([
'success'=> true,
'message'=> 'Account already verified..'
]);
}
$user->update(['is_verified' => 1]);
DB::table('user_verifications')->where('token',$verification_code)->delete();
return response()->json([
'success'=> true,
'message'=> 'You have successfully verified your email address.'
]);
}
return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
}
} }
+3 -1
View File
@@ -18,7 +18,7 @@ class Kernel extends HttpKernel
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class, \App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class, \App\Http\Middleware\TrustProxies::class
]; ];
/** /**
@@ -59,5 +59,7 @@ class Kernel extends HttpKernel
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
]; ];
} }
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,39 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUserVerificationsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_verifications', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('token');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
Schema::table('users', function (Blueprint $table) {
$table->boolean('is_verified')->default(0);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists("user_verifications");
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('is_verified');
});
}
}
+22
View File
@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
<div>
Hi {{ $name }},
<br>
Thank you for creating an account with us. Don't forget to complete your registration!
<br>
Please click on the link below or copy it into the address bar of your browser to confirm your email address:
<br>
<a href="{{ url('user/verify', $verification_code)}}">Confirm my email address </a>
<br/>
</div>
</body>
</html>
+4
View File
@@ -20,6 +20,10 @@ use Illuminate\Http\Request;
Route::post('register', 'AuthController@register'); Route::post('register', 'AuthController@register');
Route::post('login', 'AuthController@login'); Route::post('login', 'AuthController@login');
Route::post('recover', 'AuthController@recover'); Route::post('recover', 'AuthController@recover');
Route::group(['middleware' => ['jwt.auth']], function() { Route::group(['middleware' => ['jwt.auth']], function() {
Route::get('logout', 'AuthController@logout'); Route::get('logout', 'AuthController@logout');
Route::get('test', function(){
return response()->json(['foo'=>'bar']);
});
}); });