Привет, это структура моей модели пользователей,

'name' => 'required|max:255',
'phone' => 'required|numeric',
'email' => 'required|email|max:255|unique:users',

И это структура модели профиля

'username' => 'required|max:255',
'password' => 'required|min:6|confirmed',

Мне нужно следить за этой структурой и входить в систему с именем пользователя и паролем, потому что некоторые пользователи не могут иметь логин и не могут принимать имя пользователя и пароль.

Я меняю Auth на это

public function create(array $data)
{
     $user = User::create([
         'email' => $data['email'],
         'phone' => $data['phone'],
     ]);
     $user->profile()->create(['name' => $data['name'],'password' =>bcrypt($data['password'])]);
     return $user;
}

А теперь как мне войти в систему: | ? Я знаю, что нужно изменить метод входа в этот файл laravel\vendor\laravel\framework\src\Illuminate\Foundation\A‌​uth\AuthenticatesUse‌​rs.php Но я не знаю, что изменилось

2
Morteza Negahi 25 Окт 2016 в 09:38

2 ответа

Лучший ответ

Если вам нужно войти в систему сразу после регистрации, просто сделайте это:

Auth::attempt($data['name'], $data['password']);

Если вы просто хотите авторизовать пользователей, вы можете переопределить метод Illuminate\Auth\SessionGuard@attempt, но можете просто использовать Auth::login

if ($request->login == $loginFromDB && Hash::check($request->password, $passwordFromDB)) {
    Auth::login($user, true); // User must be an User model instance
}
1
Alexey Mezenin 25 Окт 2016 в 07:08

Что касается метода create, похоже, вам нужно изменить name на username, например $user->profile()->create(['username' => ...

Для входа в систему, думаю, можно использовать что-то вроде

public function login(Request $request)
{
    $profile = Profile::where('username', $request->get('username'))->first();

    if(!$profile)
    {
        // Username doesn't exist 
        // return error
    }

    if (Hash::check($request->get('password'), $profile->password))
    {
        // The passwords match, login by ID
        Auth::loginUsingId($profile->user_id);
        // return success
    }

    // return error (invalid password)
}
0
aleksejjj 25 Окт 2016 в 06:59