I Have seen my mistake is the box bracket in the register and login [] Auth\LoginController
Apr 26, 2023
2
Level 1
500 Internal Server Error Laravel API
My Login controller end point is showing 500 status code, when trying to login a user and also the register is also showing 500 when trying to register a new user. But it used to work before and i had a token for a user but when i try to login it shows 500. pls what could be the problem. When i use GET method to access my profile with Bearer Token of the user it throws a 401 status code error with message '' "message": "Unauthenticated."''. Pls i don't seem to know the challenge
Login Controller
class LoginController extends Controller
{
public function __invoke(Request $request)
{
$request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
]);
$user = User::where('email', $request->email)->first();
if ( ! $user || ! Hash::check ($request->password, $user->password)) {
throw ValidationException::withMessages([
'email' => ['The provided credentials are incorrect.'],
]);
}
$device = substr($request->userAgent() ?? '', 0, 255);
$expiresAt = $request->remember ? null : now()->addMinutes(config('session.lifetime'));
return response()->json([
'access_token' => $user->createToken($device, expiresAt: $expiresAt)->plainTextToken,
], Response::HTTP_CREATED);
//
}
Register Controller
class RegisterController extends Controller
{
public function __invoke(Request $request)
{
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'confirmed', Password::defaults()],
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
event(new Registered($user));
$device = substr($request->userAgent() ?? '', 0, 255);
return response()->json([
'access_token' => $user->createToken($device)->plainTextToken,
], Response::HTTP_CREATED);
}
}
Profile Controller
class ProfileController extends Controller
{
public function show(Request $request)
{
return response()->json($request->user()->only('name', 'email'));
}
public function update(Request $request){
$validatedData = $request->validate([
'name' => ['required', 'string'],
'email' => ['required', 'email', Rule::unique('users')->ignore(auth()->user())],
]);
auth()->user()->update($validatedData);
return response()->json($validatedData, Response::HTTP_ACCEPTED);
}
}
API Route
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('auth/register', [Auth\RegisterController::class]);
Route::post('auth/login', [Auth\LoginController::class]);
Route::middleware('auth:sanctum')->group(function () {
Route::get('profile', [Auth\ProfileController::class, 'show']);
Route::put('profile', [Auth\ProfileController::class, 'update']);
});
Please or to participate in this conversation.