Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use App\Models\User;
- use Illuminate\Support\Facades\Auth;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- // use JWTAuth;
- use Tymon\JWTAuth\Exceptions\JWTException;
- use Validator;
- use DB;
- use Mail;
- use Illuminate\Support\Facades\Password;
- use Illuminate\Mail\Message;
- class AuthController extends Controller
- {
- // public function __construct()
- // {
- // $this->middleware('auth:api', ['except' => ['login']]);
- // }
- public function registerPage(Request $request)
- {
- //aturan
- $rules = [
- 'name' => 'required|max:255',
- 'email' => 'required|email|max:255|unique:users',
- 'password' => 'required|confirmed|min:6',
- ];
- //wajib di input
- $input = $request->only(
- 'name',
- 'email',
- 'password',
- 'password_confirmation'
- );
- //validasi
- $validator = Validator::make($input, $rules);
- if($validator->fails()) {
- $error = $validator->messages()->toJson();
- return response()->json(['success'=> false, 'error'=> $error]);
- }
- //create
- $name = $request->name;
- $email = $request->email;
- $password = $request->password;
- $user = User::create(['name' => $name, 'email' => $email, 'password' => bcrypt($password)]);
- //verifikasi
- $verification_code = str_random(30); //Generate verification code
- //mengisi table user verifikasi
- 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'), "test1@gmail.com");
- $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.']);
- }
- public function verifyUser($verification_code)
- {
- //search table token
- $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 sir'
- ]);
- }
- $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."]);
- }
- public function loginPage(Request $request)
- {
- //wajib di isi di index login
- $credentials = request(['email','password']);
- //validasi
- $rules = [
- 'email' => 'required|email',
- 'password' => 'required',
- ];
- $validator = validator::make($credentials,$rules);
- if ($validator->fails()) {
- return response()->json(['success' => false, 'error' => $validator->message()]);
- }
- $credentials['is_verified'] = 1;
- try {
- if(!$token = auth()->attempt($credentials))
- {
- 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) {
- return response()->json(['success' => false , 'error' => 'failed login please try again'],500);
- }
- // return response()->json(['success' => true , 'data' => ['token' => $token]]);
- return $this->respondWithToken($token);
- }
- public function logout(Request $request) {
- $this->validate($request, ['token' => 'required']);
- try {
- auth()->invalidate($request->input('token'));
- return response()->json(['success' => true, 'message'=> "You have successfully logged out."]);
- } catch (JWTException $e) {
- // kesalahan encode token
- return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
- }
- }
- //
- // protected function respondWithToken($token)
- // {
- // return response()->json([
- // 'access_token' => $token,
- // 'token_type' => 'bearer',
- // 'expires_in' => auth()->factory()->getTTL() * 60
- // ]);
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement