Настраиваемая таблица в пользовательской модели laravel - PullRequest
0 голосов
/ 06 февраля 2020

Я использую oauth2, и мои пользователи таблицы "coUsers". Я добавил это в свою модель пользователя

App \ User

protected $table = 'coUsers';
public function getAuthPassword()
    {
        return $this->pass;
    }

AuthController

public function login(Request $request)
{
    $request->validate([
        'usuario' => 'required|string|email',
        'clave' => 'required|string',
        //'remember_me' => 'boolean'
    ]);
    $credentials = [
        'usuario' => $request->get('usuario'),
        'password' => $request->get('clave'),
    ];

    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()
    ]);
}

public function firstLogin(Request $request)
{
    $request->validate([
        'usuario' => 'required|string|email|unique:users',
        'clave' => 'required|string',
        'nuevaClave' => 'required|string'
    ]);

    $user = User::where('usuario', $request['usuario'])
                ->where('clave', $request['clave'])
                ->first();

    $user->clave = bcrypt($request['nuevaClave']);
    $user->first_login = false;
    $user->save();
    return response()->json([
        $user->toArray()
    ]);
}

Авторизация входа работает нормально, но я хочу использовать User :: где в firstLogin .... Я получаю эту ошибку:

Подсветка \ База данных \ QueryException: SQLSTATE [42703]: неопределенный столбец: 7 ОШИБКА: столбец "usuario" не существует ЛИНИЯ 1: выберите количество () как агрегат из "users", где "usuario" = ... ^ (SQL: выберите количество () как агрегат из "users", где "usuario" = xxxxx@gmail.com) в файле \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection. php в строке 669

Смотрите таблицу пользователей вместо использования таблицы, которую я указал в модели.

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете изменить 'usuario' => 'required|string|email|unique:users', на 'usuario' => 'required|string|email|unique:coUsers', в вашем firstLogin методе

Вы также можете изменить этот 'unique:users' в validator метод внутри вашего App\Http\Controllers\Auth\RegisterController

'email' => ['required', 'string', 'email', 'max:255', 'unique:users']

до

protected function validator(array $data)
{
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:coUsers'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...