8
8
use Illuminate \Support \Facades \Hash ;
9
9
use App \Models \User ;
10
10
use Illuminate \Http \Response ;
11
+ use Spatie \Permission \Models \Role ;
11
12
12
13
class AuthController extends Controller
13
14
{
15
+ /**
16
+ * Register a new user.
17
+ */
14
18
public function register (Request $ request )
15
19
{
16
20
$ request ->validate ([
17
21
'name ' => ['required ' , 'string ' , 'max:255 ' ],
18
- 'email ' => ['required ' , 'string ' , 'max:255 ' , 'unique:users ' ],
19
- 'password ' => ['required ' , 'confirmed ' , 'min:8 ' ]
22
+ 'email ' => ['required ' , 'string ' , 'email ' , ' max:255 ' , 'unique:users ' ],
23
+ 'password ' => ['required ' , 'confirmed ' , 'min:8 ' ]
20
24
]);
21
25
22
26
$ user = User::create ([
@@ -27,32 +31,53 @@ public function register(Request $request)
27
31
28
32
event (new Registered ($ user ));
29
33
30
- // $device = substr($request->userAgent() ?? '', 0, 255);
34
+ // Assign default role if not specified
35
+ $ defaultRole = Role::where ('name ' , 'user ' )->first ();
36
+ if ($ defaultRole ) {
37
+ $ user ->assignRole ($ defaultRole );
38
+ }
31
39
32
40
return response ()->json ([
33
- // 'access_token ' => $user->createToken($device)->plainTextToken ,
34
- 'message ' => ' Registration successful! '
41
+ ' message ' => ' Registration successful! ' ,
42
+ 'role ' => $ defaultRole ? $ defaultRole -> name : ' No role assigned '
35
43
], 201 );
36
44
}
37
45
38
46
public function login (Request $ request )
39
47
{
48
+ $ request ->validate ([
49
+ 'email ' => ['required ' , 'email ' ],
50
+ 'password ' => ['required ' ]
51
+ ]);
52
+
40
53
$ user = User::where ('email ' , $ request ->email )->first ();
41
54
42
- if (!$ user || !Hash::check ($ request ->password , $ user ->password ))
43
- {
44
- return response ([
45
- 'message ' => ['These credentials do not match with our records. ' ]
46
- ]);
55
+ if (!$ user || !Hash::check ($ request ->password , $ user ->password )) {
56
+ return response ()->json ([
57
+ 'message ' => 'These credentials do not match our records. '
58
+ ], 401 );
59
+ }
60
+
61
+ // Check if user has at least one role assigned
62
+ if ($ user ->roles ->isEmpty ()) {
63
+ return response ()->json ([
64
+ 'message ' => 'User has no assigned role. '
65
+ ], 403 );
47
66
}
48
67
49
- $ token = substr ($ request ->userAgent () ?? '' , 0 , 255 );
50
- $ access_token = $ user ->CreateToken ($ token )->plainTextToken ;
68
+ // Generate access token
69
+ $ device = substr ($ request ->userAgent () ?? '' , 0 , 255 );
70
+ $ access_token = $ user ->createToken ($ device )->plainTextToken ;
51
71
52
72
return response ()->json ([
53
- 'user ' => $ user ,
73
+ 'user ' => [
74
+ 'id ' => $ user ->id ,
75
+ 'name ' => $ user ->name ,
76
+ 'email ' => $ user ->email ,
77
+ 'role ' => $ user ->roles ->pluck ('name ' )->first ()
78
+ ],
54
79
'access_token ' => $ access_token ,
55
- 'message ' => 'Login Successfully ! '
80
+ 'message ' => 'Login successful ! '
56
81
]);
57
82
}
58
83
}
0 commit comments