120 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\API;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Facades\Auth;
 | |
| use App\Models\User;
 | |
| 
 | |
| class AuthController extends Controller
 | |
| {
 | |
|     /**
 | |
|      * Create user
 | |
|      *
 | |
|      * @param  [string] name
 | |
|      * @param  [string] email
 | |
|      * @param  [string] password
 | |
|      * @param  [string] password_confirmation
 | |
|      * @return [string] message
 | |
|      */
 | |
|     public function register(Request $request)
 | |
|     {
 | |
|         $request->validate([
 | |
|             'name' => 'required|string',
 | |
|             'email'=>'required|string|unique:users',
 | |
|             'password'=>'required|string',
 | |
|             'c_password' => 'required|same:password'
 | |
|         ]);
 | |
| 
 | |
|         $user = new User([
 | |
|             'name'  => $request->name,
 | |
|             'email' => $request->email,
 | |
|             'password' => bcrypt($request->password),
 | |
|         ]);
 | |
| 
 | |
|         if($user->save()){
 | |
|             $tokenResult = $user->createToken('Personal Access Token');
 | |
|             $token = $tokenResult->plainTextToken;
 | |
| 
 | |
|             return response()->json([
 | |
|                 'message' => 'Successfully created user!',
 | |
|                 'user' => $user,
 | |
|                 'accessToken'=> $token,
 | |
|             ],201);
 | |
|         }
 | |
|         else{
 | |
|             return response()->json(['error'=>'Provide proper details']);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Login user and create token
 | |
|      *
 | |
|      * @param  [string] email
 | |
|      * @param  [string] password
 | |
|      * @param  [boolean] remember_me
 | |
|      */
 | |
|     public function login(Request $request)
 | |
|     {
 | |
|         $request->validate([
 | |
|             'email' => 'required|string|email',
 | |
|             'password' => 'required|string',
 | |
|             'remember_me' => 'boolean'
 | |
|         ]);
 | |
| 
 | |
|         $credentials = request(['email','password']);
 | |
|         if(!Auth::attempt($credentials))
 | |
|         {
 | |
|             return response()->json([
 | |
|                 'message' => 'Unauthorized'
 | |
|             ],401);
 | |
|         }
 | |
| 
 | |
|         $user = $request->user();
 | |
|         $tokenResult = $user->createToken('Personal Access Token');
 | |
|         $token = $tokenResult->plainTextToken;
 | |
| 
 | |
|         return response()->json([
 | |
|             'accessToken' =>$token,
 | |
|             'user' => $user,
 | |
|             'token_type' => 'Bearer',
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the authenticated User
 | |
|      *
 | |
|      * @return [json] user object
 | |
|      */
 | |
|     public function user(Request $request)
 | |
|     {
 | |
|         return response()->json($request->user());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the authenticated User
 | |
|      *
 | |
|      * @return [json] user object
 | |
|      */
 | |
|     public function username(Request $request)
 | |
|     {
 | |
|         return response()->json($request->user()['name']);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Logout user (Revoke the token)
 | |
|      *
 | |
|      * @return [string] message
 | |
|      */
 | |
|     public function logout(Request $request)
 | |
|     {
 | |
|         $request->user()->tokens()->delete();
 | |
| 
 | |
|         return response()->json([
 | |
|             'message' => 'Successfully logged out'
 | |
|         ]);
 | |
| 
 | |
|     }
 | |
| }
 |