Проблема с логином после регистрации Laravel - PullRequest
0 голосов
/ 15 сентября 2018

Когда я регистрируюсь в laravel, я не могу войти под этой учетной записью.Это код моего контроллера:

public function register(Request $request)
    {
        if ($request->isMethod('post')) {
            $request->validate([
                'name' => 'required|string|min:3|max:255',
                'phone' => 'required|numeric|digits:11|unique:users',
                'password' => 'required|string|min:6',
            ]);
            $data = $request->all();

            //check unique phone
            $usersCount = User::where('phone', $data['phone'])->count();
            if ($usersCount > 0) {
                return back()->with('flash_message_error', 'این شماره قبلا ثبت شده است');
            } else {
                $user = new User;
                $user->name = $data['name'];
                $user->phone = $data['phone'];
                $user->password = bcrypt($data['password']);
                $user->save();
                if (Auth::attempt(['phone' => $data['phone'], 'password' => $data['password']])) {
                    Session::put('frontSession', $data['phone']);
                    return redirect('profile');
                }
            }
        }

    public function login(Request $request)
    {
        if ($request->isMethod('post')) {
            $request->validate([
                'phone' => 'required|numeric|digits:11',
                'password' => 'required|string',
            ]);
            $data = $request->all();
            if (Auth::attempt(['phone' => $data['phone'], 'password' => $data['password']])) {
                Session::put('frontSession', $data['phone']);
                return redirect('/');
            } else {
                return redirect()->back()->with('flash_message_error', 'Not Valid');
            }
        }
    }

А это блейд:

<form action="{{route('userLogin')}}" name="loginForm" method="POST">
@csrf
<input class="form-control" type="number" id="phone" name="phone" placeholder="phone number"/>
<input class="form-control" type="password" id="password" name="password" placeholder="password"/>

<small  style="direction: ltr">
<label for="remember" class="form-check-label">remember me</label>
<input id="remember" class="form-check-input" type="checkbox" class="checkbox">
</small>
<button type="submit" class="btn iren-btn btn-block">login</button>
</form>

<form id="registerForm" name="registerForm" action="{{url('user-register')}}" method="post">
@csrf
<input class="form-control" id="name" name="name" type="text" placeholder="name"/>
<input class="form-control" id="phone" name="phone" type="number" placeholder="phone"/>
<input class="form-control mb-2" id="myPassword"
name="password" type="password" placeholder="password" style="direction: ltr"/>
<button type="submit" class="btn iren-btn btn-block">register</button>
</form>

после входа в систему появляется сообщение об ошибке «Недействительно» из-за пароля. При изменениипароль в базе данных, скопировав из другого поля, которое я создал db: seed, он работает.

1 Ответ

0 голосов
/ 15 сентября 2018

Заменить

public function login(Request $request)
{
    if ($request->isMethod('post')) {
        $request->validate([
            'phone' => 'required|numeric|digits:11',
            'password' => 'required|string',
        ]);
        $data = $request->all();
        if (Auth::attempt(['phone' => $data['phone'], 'password' => $data['password']])) {
            Session::put('frontSession', $data['phone']);
            return redirect('/');
        } else {
            return redirect()->back()->with('flash_message_error', 'Not Valid');
        }
    }
}

с:

public function login(Request $request)
{
    if ($request->isMethod('post')) {
        $request->validate([
            'phone' => 'required|numeric|digits:11',
            'password' => 'required|string',
        ]);
        $data = $request->all();
        $user = User::where('phone', $data['phone'])->first();

        if ($user) {
            if(Hash::check($data['password'], $user->password))
            {
                Auth::login($user);
                Session::put('frontSession', $data['phone']);
                return redirect('/');
            }
            else{
                 return redirect()->back()->with('flash_message_error', 'password does not match');
            }
        } else {
            return redirect()->back()->with('flash_message_error', 'Not Valid');
        }
    }
}
...