File tree Expand file tree Collapse file tree 3 files changed +48
-1
lines changed
Expand file tree Collapse file tree 3 files changed +48
-1
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace App \Http \Controllers ;
4+
5+ use App \Models \User ;
6+ use Illuminate \Http \Request ;
7+ use Illuminate \Http \Response ;
8+ use Illuminate \Support \Facades \Hash ;
9+ use Illuminate \Validation \ValidationException ;
10+
11+ class TokenController extends Controller
12+ {
13+ /**
14+ * This controller provides a token for mobile devices
15+ * It can also be used to access the API via a GUI
16+ * Insomnia or Postman are two examples of GUI's
17+ */
18+ public function __invoke (Request $ request )
19+ {
20+ $ request ->validate ([
21+ 'email ' => 'required|email ' ,
22+ 'password ' => 'required ' ,
23+ 'device_name ' => 'required ' ,
24+ ]);
25+
26+ $ user = User::where ('email ' , $ request ->email )->first ();
27+
28+ if (!$ user || !Hash::check ($ request ->password , $ user ->password )) {
29+ throw ValidationException::withMessages ([
30+ 'email ' => ['The provided credentials are incorrect. ' ],
31+ ]);
32+ }
33+
34+ $ token = $ user ->createToken ($ request ->device_name )->plainTextToken ;
35+
36+ return response ()->json (['token ' => $ token ], 200 );
37+ }
38+ }
Original file line number Diff line number Diff line change 66use Illuminate \Database \Eloquent \Factories \HasFactory ;
77use Illuminate \Foundation \Auth \User as Authenticatable ;
88use Illuminate \Notifications \Notifiable ;
9+ use Laravel \Sanctum \HasApiTokens ;
910
1011class User extends Authenticatable implements MustVerifyEmail
1112{
12- use HasFactory, Notifiable;
13+ use HasApiTokens, HasFactory, Notifiable;
1314
1415 /**
1516 * The attributes that are mass assignable.
Original file line number Diff line number Diff line change 22
33use Illuminate \Http \Request ;
44use Illuminate \Support \Facades \Route ;
5+ use App \Http \Controllers \TokenController ;
6+ use App \Models \User ;
57
68/*
79|--------------------------------------------------------------------------
1416|
1517*/
1618
19+ Route::post ('/sanctum/token ' , TokenController::class);
20+
1721Route::middleware ('auth:sanctum ' )->get ('/users/{user} ' , function (Request $ request ) {
1822 return $ request ->user ();
1923});
2024
25+ Route::middleware ('auth:sanctum ' )->get ('/users ' , function (Request $ request ) {
26+ return User::all ();
27+ });
28+
2129Route::middleware ('auth:sanctum ' )->get ('/users/auth ' , function (Request $ request ) {
2230 return auth ()->user ();
2331});
You can’t perform that action at this time.
0 commit comments