all(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]); if ($validator->fails()) { return response()->json([ 'success' => false, 'message' => 'Validation errors', 'data' => $validator->errors() ], 422); } $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'success' => true, 'message' => 'User registered successfully', 'data' => [ 'user' => $user, 'access_token' => $token, 'token_type' => 'Bearer' ] ], 201); } public function login(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required', ]); if ($validator->fails()) { return response()->json([ 'success' => false, 'message' => 'Validation errors', 'data' => $validator->errors() ], 422); } $user = User::where('email', $request->email)->first(); if (!$user || !Hash::check($request->password, $user->password)) { throw ValidationException::withMessages([ 'email' => ['The provided credentials are incorrect.'], ]); } $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'success' => true, 'message' => 'Login successful', 'data' => [ 'user' => $user, 'access_token' => $token, 'token_type' => 'Bearer' ] ]); } public function profile(Request $request) { return response()->json([ 'success' => true, 'message' => 'Profile retrieved successfully', 'data' => $request->user() ]); } public function logout(Request $request) { $request->user()->currentAccessToken()->delete(); return response()->json([ 'success' => true, 'message' => 'Logout successful' ]); } }