Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день, пытаюсь сделать регистрацию\авторизацию на laravel 5.1, таблица с пользователями уже есть и при регистрации нового нужно проверить правильность Имени\Фамилии из формы и проверить наличие такого в таблице, если есть то дописать в таблицу логин\пароль, регистрацию сделал, таблица апдейтится, но вот с авторизацией проблемы, attempt() возвращает false.
Если же я пытаюсь залогинить вручную через Auth::login($user) предварительно найдя пользователя $user = User::where('LOGIN', '=', $request->login)->where('PASSWORD', '=', $request->password)->first();, то при редиректе пользователь не запоминается.
Вот контроллер:
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException($request, $validator);
};
mb_internal_encoding("UTF-8");
function mb_ucfirst($text) {
return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
}
$checked = User::check(mb_ucfirst($request->name), mb_ucfirst($request->sname));
if(!$checked) {
return redirect()->to('register')->with(['message' => 'Пользователь не найден - введите корректное Имя и Фамилию']);
} else {
User::where('ID', $checked)
->update([
'LOGIN' => $request->login,
'PASSWORD' => $request->password,
]);
//редиректим на страницу авторизации с сообщением об активации
return redirect()->to('login')->with(['message' => 'Регистрация прошла успешно']);
}
}
public function postLogin(Request $request)
{
$user = User::where('LOGIN', '=', $request->login)->where('PASSWORD', '=', $request->password)->first();
// $user = Auth::attempt(['LOGIN' => $request->login, 'PASSWORD' => $request->password]);
if (!$user){
return redirect()->to('login')->with(['message' => 'Пользователь не найден']);
}
Auth::login($user);
return Redirect()->to('/dashboard');
}
и еще проблема: если при регистрации пишу в таблицу хэшированый пароль, как потом сравнить введенный пользователем пароль при логине с хэшированным?
База на firebird и имена таблиц и полей написаны заглавными буквами, подозреваю, что attempt() не работает именно по этому, как можно залогинить пользователя?
Пришлось написать руками:
public function postLogin(Request $request)
{
$dbuser = User::where('LOGIN', $request->login)->first();
if (!$dbuser){
return redirect()->to('login')->with(['message' => 'Пользователь не найден']);
}
$dbPass = $dbuser->PASSWORD;
if(Hash::check($request->password, $dbPass)){
Auth::login($dbuser);
return Redirect()->to('dashboard');
} else {
return redirect()->to('login')->with(['message' => 'Не правильный пароль']);
}
}
Страницы 1