Advertisement
qoqvja-

login auth jwt

Mar 9th, 2018
1,469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4. use App\Models\User;
  5. use Illuminate\Support\Facades\Auth;
  6. use App\Http\Controllers\Controller;
  7. use Illuminate\Http\Request;
  8. // use JWTAuth;
  9. use Tymon\JWTAuth\Exceptions\JWTException;
  10. use Validator;
  11. use DB;
  12. use Mail;
  13. use Illuminate\Support\Facades\Password;
  14. use Illuminate\Mail\Message;
  15.  
  16. class AuthController extends Controller
  17. {
  18.  
  19. public function registerPage(Request $request)
  20. {
  21. //aturan
  22. $rules = [
  23. 'name' => 'required|max:255',
  24. 'email' => 'required|email|max:255|unique:users',
  25. 'password' => 'required|confirmed|min:6',
  26. ];
  27. //wajib di input
  28. $input = $request->only(
  29. 'name',
  30. 'email',
  31. 'password',
  32. 'password_confirmation'
  33. );
  34. //validasi
  35. $validator = Validator::make($input, $rules);
  36. if($validator->fails()) {
  37. $error = $validator->messages()->toJson();
  38. return response()->json(['success'=> false, 'error'=> $error]);
  39. }
  40. //create
  41. $name = $request->name;
  42. $email = $request->email;
  43. $password = $request->password;
  44. $user = User::create(['name' => $name, 'email' => $email, 'password' => bcrypt($password)]);
  45. //verifikasi
  46. $verification_code = str_random(30); //Generate verification code
  47. //mengisi table user verifikasi
  48. DB::table('user_verifications')->insert(['user_id'=>$user->id,'token'=>$verification_code]);
  49. $subject = "Please verify your email address.";
  50. Mail::send('email.verify', ['name' => $name, 'verification_code' => $verification_code],
  51. function($mail) use ($email, $name, $subject){
  52. $mail->from(getenv('FROM_EMAIL_ADDRESS'), "test1@gmail.com");
  53. $mail->to($email, $name);
  54. $mail->subject($subject);
  55. });
  56. return response()->json(['success'=> true, 'message'=> 'Thanks for signing up! Please check your email to complete your registration.']);
  57. }
  58.  
  59. public function verifyUser($verification_code)
  60. {
  61. //search table token
  62. $check = DB::table('user_verifications')->where('token',$verification_code)->first();
  63. if(!is_null($check)){
  64. $user = User::find($check->user_id);
  65. if($user->is_verified == 1){
  66. return response()->json([
  67. 'success'=> true,
  68. 'message'=> 'Account already verified sir'
  69. ]);
  70. }
  71. $user->update(['is_verified' => 1]);
  72. DB::table('user_verifications')->where('token',$verification_code)->delete();
  73. return response()->json([
  74. 'success'=> true,
  75. 'message'=> 'You have successfully verified your email address.'
  76. ]);
  77. }
  78. return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
  79. }
  80.  
  81.  
  82. public function loginPage(Request $request)
  83. {
  84. //wajib di isi di index login
  85. $credentials = request(['email','password']);
  86. //validasi
  87. $rules = [
  88. 'email' => 'required|email',
  89. 'password' => 'required',
  90. ];
  91.  
  92. $validator = validator::make($credentials,$rules);
  93. if ($validator->fails()) {
  94. return response()->json(['success' => false, 'error' => $validator->message()]);
  95. }
  96.  
  97. $credentials['is_verified'] = 1;
  98. try {
  99. if(!$token = auth()->attempt($credentials))
  100. {
  101. 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);
  102. }
  103. } catch (JWTException $e) {
  104. return response()->json(['success' => false , 'error' => 'failed login please try again'],500);
  105. }
  106. // return response()->json(['success' => true , 'data' => ['token' => $token]]);
  107. return $this->respondWithToken($token);
  108. }
  109.  
  110. public function logout(Request $request) {
  111. $this->validate($request, ['token' => 'required']);
  112.  
  113. try {
  114. auth()->invalidate($request->input('token'));
  115. return response()->json(['success' => true, 'message'=> "You have successfully logged out."]);
  116. } catch (JWTException $e) {
  117. // kesalahan encode token
  118. return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
  119. }
  120. }
  121.  
  122. public function recover(Request $request)
  123. {
  124. $user = User::where('email', $request->email)->first();
  125. if (!$user) {
  126. $error_message = "Your email address was not found.";
  127. return response()->json(['success' => false, 'error' => ['email'=> $error_message]], 401);
  128. }
  129. try {
  130. Password::sendResetLink($request->only('email'), function (Message $message) {
  131. $message->subject('Your Password Reset Link');
  132. });
  133. } catch (JWTException $e) {
  134. //Return with error
  135. $error_message = $e->getMessage();
  136. return response()->json(['success' => false, 'error' => $error_message], 401);
  137. }
  138. return response()->json([
  139. 'success' => true, 'data'=> ['msg'=> 'A reset email has been sent! Please check your email.']
  140. ]);
  141. }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement