Search code examples
laravelauthenticationlaravel-passport

Getting Column not found: 1054 Unknown column ' ' in 'where clause' for laravel passport authentication


I am working on laravel passport authentication. My laravel version is 6.0 and passport version is 8.0

User.php

    <?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Hash;
use Illuminate\Notifications\Notifiable;
use DB;
use Auth;
use Session;
use Laravel\Passport\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable  
{
    use Notifiable, HasApiTokens, HasRoles;
 
    protected $fillable = [
        'id', 'name', 'email', 'password', 'phone', 'address_line_1',
        'address_line_2', 'city', 'pincode', 'user_id',
    ];

    
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $rememberTokenName = 'remember_token';

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function getAuthIdentifierName() {}
    public function getAuthIdentifier(){}
   
    public function setRememberToken($value){}
    public function getRememberTokenName(){}

    public function getAuthPassword() {
        return $this->getAttribute('password');
    }


    public function getReminderEmail() {
        return $this->getAttribute('email');
    }


    public function getRememberToken() {
        return $this->getAttribute('remember_token');
    }
}

config/app.php

Laravel\Passport\PassportServiceProvider::class,

authServiceProvider.php

use Laravel\Passport\Passport;
use Carbon\Carbon;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        Passport::tokensExpireIn(Carbon::now()->addDays(1));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(10));
    }

config/auth.php

    'guards' => [
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
    
            'api' => [
                'driver' => 'passport',
                'provider' => 'users',
            ],    
        ],
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    ],

AuthAPIController

 public function signup(Request $request)
    {
        $request->validate([
            'name' => 'required|string',
            'email' => 'required|string|email|unique:users',
            'password' => 'required|string|confirmed'
        ]);
        $user = new User([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password)
        ]);
        $user->save();
        return response()->json([
            'message' => 'Successfully created user!'
        ], 201);
    }
  
    /**
     * Login user and create token
     *
     * @param  [string] email
     * @param  [string] password
     * @param  [boolean] remember_me
     * @return [string] access_token
     * @return [string] token_type
     * @return [string] expires_at
     */
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
            'remember_me' => 'boolean'
        ]);
        $credentials = request(['email', 'password']);
        if(!Auth::attempt($credentials))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        $user = $request->user();
        $tokenResult = $user->createToken('Personal Access Token');
        $token = $tokenResult->token;
        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);
        $token->save();
        return response()->json([
            'access_token' => $tokenResult->accessToken,
            'token_type' => 'Bearer',
            'expires_at' => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString()
        ]);
    }

Api.php

  Route::group([
    'prefix' => 'auth'
], function () {
    Route::post('login', 'Auth\AuthAPIController@login');
    Route::post('sign-up', 'Auth\AuthAPIController@signup');
  
    Route::group([
      'middleware' => 'auth:api', 'cors', 'json.response'
    ], function() {
        Route::get('/all-slider-images', 'HomeController@getSliderImages');
        Route::get('/user', 'Auth\AuthAPIController@user');
       
    });
   
    
});

HomeController.php

public function getSliderImages(){
        try{
            $images = SliderImage::where("deleted", 0)->get();
            return response()->json(["status"=>200, "data"=> $images]);
        }catch(Extension $e){
            return response()->json(["status"=>500, "data"=> "System Error! Please try again!"]);
        }         
    }

This is my log file

[2020-12-18 12:11:20] local.ERROR: SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where `` = 28 limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from `users` where `` = 28 limit 1) at C:\\xampp\\htdocs\\pressbell\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php:665)

[stacktrace] #0 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Connection.php(625): Illuminate\Database\Connection->runQueryCallback('select * from ...', Array, Object(Closure)) #1 C:\\xampp\\htdocs\\pressbell\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php(334): Illuminate\\Database\\Connection->run('select * from ...', Array, Object(Closure)) #2 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2140): Illuminate\Database\Connection->select('select * from `...', Array, true) #3 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2128): Illuminate\Database\Query\Builder->runSelect() #4 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2572): Illuminate\Database\Query\Builder->Illuminate\Database\Query\{closure}() #5 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php(2129): Illuminate\Database\Query\Builder->onceWithColumns(Array, Object(Closure)) #6 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(521): Illuminate\Database\Query\Builder->get(Array) #7 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Builder.php(505): Illuminate\Database\Eloquent\Builder->getModels(Array) #8 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Database\Concerns\BuildsQueries.php(143): Illuminate\Database\Eloquent\Builder->get(Array) #9 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php(52): Illuminate\Database\Eloquent\Builder->first() #10 C:\xampp\htdocs\pressbell\vendor\laravel\passport\src\Guards\TokenGuard.php(139): Illuminate\Auth\EloquentUserProvider->retrieveById('28') #11 C:\xampp\htdocs\pressbell\vendor\laravel\passport\src\Guards\TokenGuard.php(94): Laravel\Passport\Guards\TokenGuard->authenticateViaBearerToken(Object(Illuminate\Http\Request)) #12 C:\xampp\htdocs\pressbell\vendor\laravel\passport\src\PassportServiceProvider.php(277): Laravel\Passport\Guards\TokenGuard->user(Object(Illuminate\Http\Request)) #13 [internal function]: Laravel\Passport\PassportServiceProvider->Laravel\Passport\{closure}(Object(Illuminate\Http\Request), NULL) #14 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\RequestGuard.php(58): call_user_func(Object(Closure), Object(Illuminate\Http\Request), NULL) #15 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\GuardHelpers.php(60): Illuminate\Auth\RequestGuard->user() #16 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php(62): Illuminate\Auth\RequestGuard->check() #17 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php(41): Illuminate\Auth\Middleware\Authenticate->authenticate(Object(Illuminate\Http\Request), Array) #18 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure), 'api') #19 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #20 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(682): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #21 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(657): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #22 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(623): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route)) #23 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Routing\Router.php(612): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #24 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #25 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #26 C:\xampp\htdocs\pressbell\app\Http\Middleware\Cors.php(18): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #27 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): App\Http\Middleware\Cors->handle(Object(Illuminate\Http\Request), Object(Closure)) #28 C:\xampp\htdocs\pressbell\app\Http\Middleware\ForceJsonResponse.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #29 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): App\Http\Middleware\ForceJsonResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #30 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #31 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #32 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #33 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #34 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #35 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure)) #36 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #37 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #38 C:\xampp\htdocs\pressbell\vendor\fideloper\proxy\src\TrustProxies.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #39 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(171): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #41 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #42 C:\xampp\htdocs\pressbell\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #43 C:\xampp\htdocs\pressbell\public\index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #44 C:\xampp\htdocs\pressbell\server.php(21): require_once('C:\\xampp\\htdocs...') #45 {main}

But i get this error,

"message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (SQL: select * from users where `` = 28 limit 1)", "exception": "Illuminate\Database\QueryException",

This is the login API

This is the error


Solution

  • Remove all these overrides from App\User.php. It is not required unless you're using anything different from the defaults. Also you're not returning anything in these functions.

    public function getAuthIdentifierName() {}
    public function getAuthIdentifier(){}
    
    public function setRememberToken($value){}
    public function getRememberTokenName(){}