Search code examples
laravelpostman

Route [login] not defined. in file


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']);

Solution

  • 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.