Created
November 22, 2020 00:47
-
-
Save tomredman/703f9a237db9d4f6b31988714a8f5d36 to your computer and use it in GitHub Desktop.
Simple Laravel Sanctum API auth controller for 3rd party/mobile register, login and logout
This file contains hidden or 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; | |
use Illuminate\Http\Request; | |
use Illuminate\Routing\Controller; | |
use Illuminate\Support\Facades\Auth; | |
use Illuminate\Auth\Events\Registered; | |
use App\Actions\Fortify\CreateNewUser; | |
use Illuminate\Validation\ValidationException; | |
use Laravel\Fortify\Contracts\RegisterResponse; | |
class AuthController extends Controller | |
{ | |
/** | |
* Create a new registered user. | |
* | |
* @param \Illuminate\Http\Request $request | |
*/ | |
public function register(Request $request) | |
{ | |
$creator = new CreateNewUser; | |
$user = $creator->create($request->all()); | |
event(new Registered($user)); | |
$token = $user->createToken('API'); //or device name,client,etc | |
return response()->json(['token' => $token->plainTextToken]); | |
} | |
/** | |
* Handle an authentication attempt. | |
* | |
* @param \Illuminate\Http\Request $request | |
* | |
* @return Response | |
*/ | |
public function login(Request $request) | |
{ | |
$credentials = $request->only('email', 'password'); | |
if (Auth::attempt($credentials)) { | |
$user = Auth::user(); | |
$token = $user->createToken('token-name'); | |
return response()->json(['token' => $token->plainTextToken]); | |
} | |
else { | |
throw ValidationException::withMessages([ | |
'email' => ['The provided credentials are incorrect.'], | |
]); | |
} | |
} | |
/** | |
* Logout the current sessions | |
* | |
* @param \Illuminate\Http\Request $request | |
* | |
* @return Response | |
*/ | |
public function logout(Request $request) | |
{ | |
//Optionally destroy the current token | |
//Auth::user()->currentAccessToken()->delete(); | |
Auth::logout(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment