Skip to content

Instantly share code, notes, and snippets.

@nicholascourage
Created January 30, 2025 16:18
Show Gist options
  • Save nicholascourage/8791cf40b5d54b2235eaa706bb8daaff to your computer and use it in GitHub Desktop.
Save nicholascourage/8791cf40b5d54b2235eaa706bb8daaff to your computer and use it in GitHub Desktop.
Auth Controller for authenticating users with Oauth2/Laravel Passport
<?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