Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.04.2016 21:25:10

Не верно работает работа с авторизацией

Продолжаю делать сайт. Дошёл до авторизации.

Контроллер:

<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

## Модели
use App\Models\Forum\Forum; // Модель форума

use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Redirect;

class AuthController extends Controller{
    use AuthenticatesAndRegistersUsers, ThrottlesLogins;
    protected $redirectTo = '/';

    public function __construct(){
        $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    protected function validator(array $data){
        return Validator::make($data, [
            'login_users' => 'required|min:4|max:60',
            'mail_users' => 'required|email|min:4|max:255|unique:users',
            'password' => 'required|min:6|confirmed:password_confirmation',
            'password_confirmation' => 'required|min:6',
            'iAgree' => 'accepted'
        ]);
    }

    ## Страница авторизация
    public function getLogin(){
        return view('Auth.getLogin');
    }

    public function postLogin(Request $request){
        $data = $request->all();
        $dataSave = $request->flashExcept('password');

        $v = $this->validator($data);

        if($v->fails()){
            // Если есть ошибки
            return redirect()->back()->withErrors($v->errors())->withInput($dataSave);
        }else{

        }
    }
}

Дизайн:

<div class="control-group {{($errors->first('login_users') ? 'error' : '')}}">
    <label class="control-label" for="login_users">Логин:</label>
    <div class="controls">
        {{ Form::text('login_users', '', ['placeholder' => 'Введите ваш логин']) }}
        <span class="help-inline">{{($errors->first('login_users') ? $errors->first('login_users') : '')}}</span>
    </div>
</div>

<div class="control-group {{($errors->first('password') ? 'error' : '')}}">
    <label class="control-label" for="password">Пароль:</label>
    <div class="controls">
        {{ Form::password('password', ['placeholder' => 'Введите ваш пароль']) }}
        <span class="help-inline">{{($errors->first('password') ? $errors->first('password') : '')}}</span>
    </div>
</div>

<div class="control-group">
    <div class="controls">
        <button type="submit" class="btn btn-success">Войти</button>
    </div>
</div>

Всё вроде работает, но вот к паролю пишется ошибка, мол пароль не совпадает. Что делать?

Не в сети

#2 06.04.2016 18:01:10

Re: Не верно работает работа с авторизацией

Ребзя, что, нет решений данной проблемы?

Не в сети

#3 06.04.2016 20:17:32

WebDev

Re: Не верно работает работа с авторизацией

dima9595 пишет:

Ребзя, что, нет решений данной проблемы?

Дак вас же валидатор не пускает. Эти правила для регистрации подходят, а не для логина

#4 06.04.2016 20:26:44

Re: Не верно работает работа с авторизацией

А как тогда сделать для авторизации?

Не в сети

#5 06.04.2016 20:44:07

WebDev

Re: Не верно работает работа с авторизацией

dima9595 пишет:

А как тогда сделать для авторизации?

К примеру так:

    protected function validator(array $data){
        return Validator::make($data, [
            'login_users' => 'required|min:4|max:60',
            'mail_users' => 'required|email|min:4|max:255|unique:users',
            'password' => 'required|min:6|confirmed:password_confirmation',
            'password_confirmation' => 'required|min:6',
            'iAgree' => 'accepted'
        ]);
    }

    protected function validatorLogin(array $data){
        return Validator::make($data, [
            'login_users' => 'required',
            'password' => 'required',
        ]);
    }

    ## Страница авторизация
    public function getLogin(){
        return view('Auth.getLogin');
    }

    public function postLogin(Request $request){
        $data = $request->all();
        $dataSave = $request->flashExcept('password');

        $v = $this->validatorLogin($data);

        if($v->fails()){
            // Если есть ошибки
            return redirect()->back()->withErrors($v->errors())->withInput($dataSave);
        }else{

        }
    }

Но лучше все переделать и валидацию в Request писать

#6 06.04.2016 21:39:31

Re: Не верно работает работа с авторизацией

WebDev пишет:

Но лучше все переделать и валидацию в Request писать

Т.е. старым, дедовским способом?
Validate::make?

Я пробовал создавать:

protected function validatorLogin(array $data){
        return Validator::make($data, [
            'login_users' => 'required',
            'password' => 'required',
        ]);
    }

но каким-то магическим способом эта фигня не считывалась, хоть в авторизации я явно указывал её...

$v = $this->validatorLogin($data);

Не в сети

#7 07.04.2016 18:37:38

WebDev

Re: Не верно работает работа с авторизацией

dima9595 пишет:
WebDev пишет:

Но лучше все переделать и валидацию в Request писать

Т.е. старым, дедовским способом?
Validate::make?

Я пробовал создавать:

protected function validatorLogin(array $data){
        return Validator::make($data, [
            'login_users' => 'required',
            'password' => 'required',
        ]);
    }

но каким-то магическим способом эта фигня не считывалась, хоть в авторизации я явно указывал её...

$v = $this->validatorLogin($data);

Каким дедовским? Дедовским это как сейчас, когда правила находятся с самом контролере.

Создаете Request и пишете там все правила, а в метод в контролере передаете Request.
https://laravel.com/docs/5.1/requests#a … he-request

Насчет this->validatorLogin, как она могла считываться когда такого метода у вас не было.

#8 07.04.2016 21:02:21

Re: Не верно работает работа с авторизацией

Всё, решено)

Пробовал и с validatorLogin (на форуме не опубликовал, т.к. потом попытался так сделать) - не работало. А сейчас всё ок)

Не в сети

Подвал раздела