Created
January 30, 2025 16:18
-
-
Save nicholascourage/8791cf40b5d54b2235eaa706bb8daaff to your computer and use it in GitHub Desktop.
Auth Controller for authenticating users with Oauth2/Laravel Passport
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers\Api\V1; | |
use App\Http\Controllers\Controller; | |
use App\Models\User; | |
use Illuminate\Http\Request; | |
use Illuminate\Support\Facades\Hash; | |
use Validator; | |
use Symfony\Component\HttpFoundation\Response; | |
class AuthController extends Controller | |
{ | |
/** | |
* @OA\Post( | |
** path="/v1/login", | |
* tags={"Auth"}, | |
* summary="Login", | |
* operationId="login", | |
* | |
* @OA\Parameter( | |
* name="email", | |
* in="query", | |
* required=true, | |
* @OA\Schema( | |
* type="string" | |
* ) | |
* ), | |
* @OA\Parameter( | |
* name="password", | |
* in="query", | |
* required=true, | |
* @OA\Schema( | |
* type="string" | |
* ) | |
* ), | |
* @OA\Response( | |
* response=200, | |
* description="Success", | |
* @OA\MediaType( | |
* mediaType="application/json", | |
* ) | |
* ), | |
* @OA\Response( | |
* response=401, | |
* description="Unauthenticated" | |
* ), | |
* @OA\Response( | |
* response=400, | |
* description="Bad Request" | |
* ), | |
* @OA\Response( | |
* response=404, | |
* description="not found" | |
* ), | |
* @OA\Response( | |
* response=403, | |
* description="Forbidden" | |
* ), | |
*) | |
**/ | |
/** | |
* login api | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function login(Request $request) | |
{ | |
$validator = $request->validate([ | |
'email' => 'email|required', | |
'password' => 'required' | |
]); | |
if (!auth()->attempt($validator)) { | |
return response()->json(['error' => 'Unauthorised'], 401); | |
} else { | |
$success['token'] = auth()->user()->createToken('authToken')->accessToken; | |
$success['user'] = auth()->user(); | |
return response()->json(['success' => $success])->setStatusCode(Response::HTTP_ACCEPTED); | |
} | |
} | |
/** | |
* @OA\Post( | |
** path="/v1/logout", | |
* tags={"Auth"}, | |
* summary="Logout", | |
* operationId="logout", | |
* | |
* @OA\Response( | |
* response=200, | |
* description="Success", | |
* @OA\MediaType( | |
* mediaType="application/json", | |
* ) | |
* ), | |
* @OA\Response( | |
* response=401, | |
* description="Unauthenticated" | |
* ), | |
* @OA\Response( | |
* response=400, | |
* description="Bad Request" | |
* ), | |
* @OA\Response( | |
* response=404, | |
* description="not found" | |
* ), | |
* @OA\Response( | |
* response=403, | |
* description="Forbidden" | |
* ), | |
* security={ | |
* {"bearerAuth": {}} | |
* } | |
*) | |
**/ | |
/** | |
* logout api | |
* | |
* @return \Illuminate\Http\Response | |
*/ | |
public function logout(Request $request) | |
{ | |
if($request->user()) | |
{ | |
$request->user()->token()->delete(); | |
} | |
return response()->json([ | |
'success' => true, | |
]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment