44
55use App \Core \Controller ;
66use App \Core \Response ;
7+ use App \Core \Request ;
8+ use App \Core \Application ;
79use App \Services \AuthService ;
10+ use App \Helpers \Validator ;
11+ use Exception ;
812
913class AuthController extends Controller
1014{
@@ -15,43 +19,67 @@ public function __construct()
1519 $ this ->authService = new AuthService ();
1620 }
1721
18- public function login ()
22+ public function login (Request $ request ): Response
1923 {
20- $ data = $ this ->getRequestData ();
21-
22- if (!isset ($ data ['email ' ]) || !isset ($ data ['password ' ])) {
23- return Response::json (['error ' => 'Email and password required ' ], 400 );
24+ $ data = $ request ->json ();
25+
26+ $ validator = new Validator ($ data );
27+ $ validator ->validate ([
28+ 'email ' => ['required ' => true , 'email ' => true ],
29+ 'password ' => ['required ' => true , 'min ' => 6 ],
30+ ]);
31+
32+ if (!$ validator ->isValid ()) {
33+ return Response::json (['errors ' => $ validator ->errors ()], 422 );
2434 }
2535
26- $ result = $ this ->authService ->login ($ data ['email ' ], $ data ['password ' ]);
27-
28- if ($ result ) {
29- return Response::json ($ result );
36+ try {
37+ $ result = $ this ->authService ->login ($ data ['email ' ], $ data ['password ' ]);
38+ if ($ result ) {
39+ return Response::json ($ result );
40+ }
41+ return Response::json (['error ' => 'Invalid credentials ' ], 401 );
42+ } catch (Exception $ e ) {
43+ Application::logger ()->error ("Login error: " . $ e ->getMessage ());
44+ return Response::json (['error ' => 'An unexpected error occurred during login. ' ], 500 );
3045 }
31-
32- return Response::json (['error ' => 'Invalid credentials ' ], 401 );
3346 }
3447
35- public function register ()
48+ public function register (Request $ request ): Response
3649 {
37- $ data = $ this ->getRequestData ();
38-
39- if (!isset ($ data ['name ' ]) || !isset ($ data ['email ' ]) || !isset ($ data ['password ' ])) {
40- return Response::json (['error ' => 'Name, email and password required ' ], 400 );
50+ $ data = $ request ->json ();
51+
52+ $ validator = new Validator ($ data );
53+ $ validator ->validate ([
54+ 'name ' => ['required ' => true , 'min ' => 3 ],
55+ 'email ' => ['required ' => true , 'email ' => true ],
56+ 'password ' => ['required ' => true , 'min ' => 6 ],
57+ ]);
58+
59+ if (!$ validator ->isValid ()) {
60+ return Response::json (['errors ' => $ validator ->errors ()], 422 );
4161 }
4262
43- $ result = $ this ->authService ->register ($ data );
44-
45- if ($ result ) {
46- return Response::json ($ result , 201 );
63+ try {
64+ $ result = $ this ->authService ->register ($ data );
65+ if ($ result ) {
66+ return Response::json ($ result , 201 );
67+ }
68+ return Response::json (['error ' => 'Registration failed. Email may already be in use. ' ], 409 );
69+ } catch (Exception $ e ) {
70+ Application::logger ()->error ("Registration error: " . $ e ->getMessage ());
71+ return Response::json (['error ' => 'An unexpected error occurred during registration. ' ], 500 );
4772 }
48-
49- return Response::json (['error ' => 'Registration failed ' ], 400 );
5073 }
5174
52- public function logout ()
75+ public function logout (Request $ request )
5376 {
54- $ token = $ this ->getBearerToken ();
77+ $ authHeader = $ request ->getHeader ('Authorization ' );
78+ $ token = null ;
79+
80+ if ($ authHeader && strpos ($ authHeader , 'Bearer ' ) === 0 ) {
81+ $ token = substr ($ authHeader , 7 );
82+ }
5583
5684 if ($ token ) {
5785 $ this ->authService ->logout ($ token );
0 commit comments