Advertisement
qoqvja-

controller api jwt

Mar 9th, 2018
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.24 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.  
  20. // public function __construct()
  21. // {
  22. // $this->middleware('auth:api', ['except' => ['login']]);
  23. // }
  24.  
  25.  
  26. public function registerPage(Request $request)
  27. {
  28. //aturan
  29. $rules = [
  30. 'name' => 'required|max:255',
  31. 'email' => 'required|email|max:255|unique:users',
  32. 'password' => 'required|confirmed|min:6',
  33. ];
  34. //wajib di input
  35. $input = $request->only(
  36. 'name',
  37. 'email',
  38. 'password',
  39. 'password_confirmation'
  40. );
  41. //validasi
  42. $validator = Validator::make($input, $rules);
  43. if($validator->fails()) {
  44. $error = $validator->messages()->toJson();
  45. return response()->json(['success'=> false, 'error'=> $error]);
  46. }
  47. //create
  48. $name = $request->name;
  49. $email = $request->email;
  50. $password = $request->password;
  51. $user = User::create(['name' => $name, 'email' => $email, 'password' => bcrypt($password)]);
  52. //verifikasi
  53. $verification_code = str_random(30); //Generate verification code
  54. //mengisi table user verifikasi
  55. DB::table('user_verifications')->insert(['user_id'=>$user->id,'token'=>$verification_code]);
  56. $subject = "Please verify your email address.";
  57. Mail::send('email.verify', ['name' => $name, 'verification_code' => $verification_code],
  58. function($mail) use ($email, $name, $subject){
  59. $mail->from(getenv('FROM_EMAIL_ADDRESS'), "test1@gmail.com");
  60. $mail->to($email, $name);
  61. $mail->subject($subject);
  62. });
  63. return response()->json(['success'=> true, 'message'=> 'Thanks for signing up! Please check your email to complete your registration.']);
  64. }
  65.  
  66. public function verifyUser($verification_code)
  67. {
  68. //search table token
  69. $check = DB::table('user_verifications')->where('token',$verification_code)->first();
  70. if(!is_null($check)){
  71. $user = User::find($check->user_id);
  72. if($user->is_verified == 1){
  73. return response()->json([
  74. 'success'=> true,
  75. 'message'=> 'Account already verified sir'
  76. ]);
  77. }
  78. $user->update(['is_verified' => 1]);
  79. DB::table('user_verifications')->where('token',$verification_code)->delete();
  80. return response()->json([
  81. 'success'=> true,
  82. 'message'=> 'You have successfully verified your email address.'
  83. ]);
  84. }
  85. return response()->json(['success'=> false, 'error'=> "Verification code is invalid."]);
  86. }
  87.  
  88.  
  89. public function loginPage(Request $request)
  90. {
  91.  
  92.  
  93. //wajib di isi di index login
  94. $credentials = request(['email','password']);
  95. //validasi
  96. $rules = [
  97. 'email' => 'required|email',
  98. 'password' => 'required',
  99. ];
  100.  
  101. $validator = validator::make($credentials,$rules);
  102. if ($validator->fails()) {
  103. return response()->json(['success' => false, 'error' => $validator->message()]);
  104. }
  105.  
  106. $credentials['is_verified'] = 1;
  107. try {
  108. if(!$token = auth()->attempt($credentials))
  109. {
  110. 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);
  111. }
  112. } catch (JWTException $e) {
  113. return response()->json(['success' => false , 'error' => 'failed login please try again'],500);
  114. }
  115. // return response()->json(['success' => true , 'data' => ['token' => $token]]);
  116. return $this->respondWithToken($token);
  117. }
  118.  
  119. public function logout(Request $request) {
  120. $this->validate($request, ['token' => 'required']);
  121.  
  122. try {
  123. auth()->invalidate($request->input('token'));
  124. return response()->json(['success' => true, 'message'=> "You have successfully logged out."]);
  125. } catch (JWTException $e) {
  126. // kesalahan encode token
  127. return response()->json(['success' => false, 'error' => 'Failed to logout, please try again.'], 500);
  128. }
  129. }
  130. //
  131. // protected function respondWithToken($token)
  132. // {
  133. // return response()->json([
  134. // 'access_token' => $token,
  135. // 'token_type' => 'bearer',
  136. // 'expires_in' => auth()->factory()->getTTL() * 60
  137. // ]);
  138. // }
  139.  
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement