Выполните аутентификацию пользователя, если в базе данных есть электронная почта

В Laravel возможно ли входить в систему только по электронной почте пользователя — пароль не требуется.


Я пытался

public function postSignIn(){

$validator = Validator::make(Input::only('email') , array(
'email' => 'required',
));

if ($validator->fails()) {
return Redirect::to('/')->with('error', 'Please fill out your information ')->withErrors($validator)->withInput();
}

$email = strtolower(Input::get('email'));

$auth = Auth::attempt(array('email' => $email ));

if ($auth) {
return Redirect::to('/dashboard')->with('success', 'Hi '. Auth::user()->name .'! You have been successfully logged in.');
}

else {
return Redirect::to('/')->with('error', 'Username/Password Wrong')
->with('username', $username)
->withErrors($validator);
}

Я продолжаю получать: Undefined index: password

Нужно ли мне модифицировать любой тип драйвера Auth, чтобы это работало?

Любые намеки / предложения по этому вопросу будут высоко оценены!

1

Решение

Вы можете сделать что-то вроде этого:

public function postSignIn(){

$validator = Validator::make(Input::only('email') , array(
'email' => 'required',
));

if ($validator->fails()) {
return Redirect::to('/')->with('error', 'Please fill out your information ')->withErrors($validator)->withInput();
}

$email = strtolower(Input::get('email'));

try{
$user = User::where('email', $email)->firstOrFail();
Auth::login($user);

return Redirect::to('/dashboard')->with('success', 'Hi '. Auth::user()->name .'! You have been successfully logged in.');
}
catch(ModelNotFoundException $exception){
return Redirect::to('/')->with('error', 'Username/Password Wrong')
->with('username', $username)
->withErrors($validator);

}
}

Вы можете проверить больше информации в Вот о том, как вручную войти в систему ваших пользователей (вам придется немного прокрутить вниз)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector