I am trying to test the (/user) endpoint on postman but am finding this error everytime //error
<!DOCTYPE html>
<html lang="en" class="auto">
<!--
Symfony\Component\Routing\Exception\RouteNotFoundException: Route [login
] not defined. in file C:\Users\USER\project-blogapp\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php on line 479
the following are the controller class and api class
this is the route class
//public routes
Route::post('/register', [Authcontroller::class, 'register']);
Route::post('/login', [Authcontroller::class, 'Login']);
Route::group(['middleware' => 'auth:sanctum'], function () {
//user
Route::get('/user', [Authcontroller::class, 'user']);
Route::put('/user', [Authcontroller::class, 'Update']);
Route::post('/logOut', [Authcontroller::class, 'logOut']);
//post
Route::get('/posts', [postController::class, 'index']); //all posts
Route::post('/posts', [postController::class, 'store']); //create posts
Route::get('/posts/{id}', [postController::class, 'show']); //single posts
Route::put('/posts/{id}', [postController::class, 'update']); //update
Route::delete('/posts/{id}', [postController::class, 'destroy']); //destroy
//comments
Route::get('/posts/{id}/comments', [commentController::class, 'index']); //all posts
Route::post('/posts/{id}/comments', [commentController::class, 'store']); //create posts
Route::put('/comments/{id}', [commentController::class, 'update']); //update
Route::delete('/comments/{id}', [commentController::class, 'destroy']); //destroy
//likes
Route::post('/posts/{id}/likes', [likeController::class, 'likeOrUnlike']); //like or dislike a post
});
Controller class
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
class Authcontroller extends Controller
{
public function register(Request $request)
{
$attr = $request->validate([
'name' => 'required|string',
'email' => 'required|email|unique:users,email',
'password' => 'required|min:6|confirmed',
]);
$user = User::create(
[
'name' => $attr['name'],
'email' => $attr['email'],
'password' => bcrypt($attr['password']),
]
);
//return responce
return response([
'user' => $user,
'token' => $user->createToken('secret')->plainTextToken,
]);
}
//LOGIN USER
public function Login(Request $request)
{
$attr = $request->validate([
'email' => 'required|email',
'password' => 'required|min:6',
]);
if (!Auth::attempt($attr)) {
return response(
[
'message' => 'INVALID CREDENTIALS'
],
403
);
}
//return responce
return response([
'user' => auth()->user(),
'token' => auth()->user()->createToken('secret')->plainTextToken,
], 200);
}
//logout user
public function logOut(Request $request)
{
auth()->user()->token()->delete();
return response(['message' => 'logout success']);
}
//get user details
public function user()
{
return response(['user' => auth()->user()], 200);
}
public function Update(Request $request)
{
$attrs = $request->validate(['name' => 'required|String']);
$image = $this->saveImage($request->image, 'profile');
auth()->user()->update([
'name' => $attrs['name'],
'image' => $image
]);
return response([
'message' => 'user updated',
'user' => auth()->user()
], 200);
}
}
am expecting to get the users profile from the database but the error route login not defined keeps on popping up
this is the route am testing
Route::get('/user', [Authcontroller::class, 'user']);
This error usually occurs when you try to access a route that requires authorization without a token and your login route is not defined. If you are developing an API, you must inform laravel about this by adding the accept application/json
in your request headers. Then laravel will give the correct 401 response.
Accordingly, there is something wrong with your authorization.