Laravel: сбой входа в систему после смены пароля в API - PullRequest
0 голосов
/ 25 апреля 2018

Впервые в JWT, и я хочу просто изменить свой пароль, после этого я пытаюсь войти в систему, он не работает.

Мой код функции обновления пароля:

public function resetPassword(ResetPasswordRequest $request, JWTAuth $JWTAuth)
{
    $password = Hash::make($request->password);
    $user = User::where('email', '=', $request->email)->first();
    if(!$user) {
        return response()->json([
            'message' => "Credential do not match",
            'status_code' => 403,
        ]);
    }
    if($user) {
        $user->password = $password;
        $user->save();
    }
    return response()->json(['message' => 'Your password has been changed successfully','status_code' => 204]);
}

Эта функция работаетнормально после того, как я попытаюсь войти в систему, это возвращает $token null.

Мой код контроллера входа в систему:

public function login(LoginRequest $request, JWTAuth $JWTAuth)
{

    $credentials = $request->only(['email', 'password']);
    try {
        $token = Auth::guard()->attempt($credentials);
        if(!$token) {
            return response()->json([
                'message' => "Email and password do not match",
                'status_code' => 403,
            ]);
        }
        $user = Auth::user();
        $user->last_login = Carbon::now();
        $user->save();
        $user = Auth::user();
        $user->UserDeviceData()->firstOrCreate([
            'device_id' => $request->device_id
        ]);
    } catch (JWTException $e) {
        return response()->json([
            'message' => "Internal server error",
            'status_code' => 500,
        ]);
    }
    return (new UserTransformer)->transform($user);
}

Вкл. user модель:

public function setPasswordAttribute($value)
{
    $this->attributes['password'] = Hash::make($value);
}

В чем проблема ?Это правильный способ изменить пароль?

1 Ответ

0 голосов
/ 25 апреля 2018

При сбросе пароля вы хешируете пароль два раза, один в функции resetPassword, а второй в setPasswordAttribute, поэтому вам нужно заменить

этот $password = Hash::make($request->password);

наэто $password = $request->password;

в вашей resetPassword функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...