mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/izyim-api.git
synced 2026-08-19 04:24:01 +00:00
added verification
This commit is contained in:
+7
-5
@@ -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
|
||||||
@@ -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
@@ -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');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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']);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user