Laravel по-русски

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

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

#26 Re: Laravel 5.x » Регистрация пользователя администратором » 02.06.2016 09:01:03

max_kp пишет:

Уточните, что Вы хотите сделать? Вам нужно зарегистрировать пользователя и дать ему роль администратора? Или Вам нужно, чтобы пользователь с ролью администратора мог регистрировать других пользователей? И какие именно методы ларавеля Вы использовали и что не получилось?

В AuthController с помощью postRegister я пытался зарегистрировать нового обычного пользователя, но будучи залогиненым как администратор. Когда я отправлял форму абсолютно нчиего не происходило — перенаправляло на домашнюю страницу, а в таблицу users новых пользователей не добавляло. Тогда я решил отправить эту форму не будучи залогиненым и всё прошло успешно — был добавлен новый пользователь без всяких проблем. Следовательно, я пришёл к выводу, что проблема именно в том, что Laravel не позволяет, по крайней мере по дефолту, регистрировать юзера будучи авторизованным.
Я не знаю как это решить по нормальному. Единственный вариант, который я сейчас придумал — это обрабатывать postRegister в другом каком-нибудь своём контроллере.

#27 Laravel 5.x » Регистрация пользователя администратором » 01.06.2016 14:51:22

laravelNewbie
Ответов: 8

Ребята, каким способом можно зарегистрировать пользователя администратором. Я пробовал дефолтные методы ларавеля и ничего не получалось. Когда попробовал зарегистировать пользователя не будучи аутентифицированым, то всё сработало. Я так понял по дефолту ларавель не разрешает регистировать пользователей, если в данный момент ты залогинен. Как это можно исправить?
PS: просто у меня в таблице users есть поле role и в зависимости от этого поля юзеры делятся на администраторов и обычных юзеров. Но по идее, юзеров регать должен именно администратор.

#28 Re: Laravel 5.x » Помогите с аутентификацией » 24.05.2016 16:28:05

PS: так всё и было. надо было хранить хешированые пароли что я и сделал. Что бы не плодить несколько тем, у меня остался один
ВОПРОС:
у меня помимо таблицы users, есть ещё одна таблица, которую так же следует проверять на совпадение почты и пароля. Как и где мне стоит добавить эту таблицу, что бы при роботе Auth::attempt и прочего, проверялись две таблицы, а не только юзерс.
Об этом сказано в файл auth.php, где написано

    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.

Как правильно это записать(как я понимаю всё в том же аuth.php)?

#29 Re: Laravel 5.x » Помогите с аутентификацией » 24.05.2016 16:13:41

Поскольку этот форум малёха баганный, и я немогу исправить свой предыдущий пост, то напишу здесь: возможно это связано с тем, что согласно документации "Если пользователь будет найден, хешированный пароль, сохранённый в базе данных, будет сравниваться с хешированным значением password", но у меня пароли пока не хешированы. Судя по всему оно хеширует вводимый пароль, а потом ищет его в бд, но там пока что не хешированые поли. Видимо отсюда и проблема. Вот правда с хешированием я ещё пока не разобрался.

#30 Re: Laravel 5.x » Помогите с аутентификацией » 24.05.2016 15:53:16

123 пишет:

Тут проблема не в подключении, ты вызываешь метод через фасад БД, а не \Auth.
Покажи код где идёт вызов attempt()

Да, я тогда затупил и беледерду написал. Но теперь у меня новая проблема: при попытке аутентификации attempt возвращает false, хотя введённые данные совпадают с данными с БД.

 
protected function postLogin()
{
        $email = Input::get('email');
        $pass = Input::get('password');

        if (Auth::attempt(['email' => $email, 'password' => $pass])) 
        {
            return redirect()->intended('dashboard');
        }
        else
        {
            return redirect()->intended('login');
        }
}

Не смотря на то, что вводимый юзер и пароль совпадает, меня всё равно перенаправляет на login, когда должно на dashboard. Где искать проблему?

#31 Re: Laravel 5.x » Помогите с аутентификацией » 23.05.2016 22:18:03

возникла ошибка:

Call to undefined method Illuminate\Database\Query\Builder::attempt()
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Support\Facades\Input;
use App\Models\AuthModel;
use App\Models\Trainer;

Что я забыл подключить? Просто вроде как подключил всё как в примере.

#32 Re: Laravel 5.x » Помогите с аутентификацией » 23.05.2016 22:04:52

123 пишет:

Какие дополнительные сессии?, уже всё реализовано
В методе где делаешь ручную аутентификацию используешь метод attempt
\Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password')
]) - если авторизация через имейл, если вдруг по другому -  то указываешь другое поле вместо email

И потом используешь фасад \Auth с нужными методами:
\Auth::user() - получить пользователя (модель)
\Auth::check() - проверка что аутентифицирован пользователь
\Auth::id() - получить id пользователя
и т.д.

спасибо. Примерно так и представлял.

#33 Re: Laravel 5.x » Помогите с аутентификацией » 23.05.2016 21:31:30

hzone пишет:

Authentication
Authorization

какие проблемы с прочтением и пониманием ?

Я знаю что есть документация. И всю прочитал уже несколько раз и тщательно ознакомился. Допустим: нужно ли использовать сессии для авторизации, если пользоваться стандартными инструментами авторизации?

#34 Re: Laravel 5.x » Помогите с аутентификацией » 23.05.2016 15:55:50

TrueKanonir пишет:

Зачем заного изобритать велосипед? Авторизация и регистрация доступны из коробки

Я и пытаюсь пользоваться этой авторизацией, но всё равно непонятно как работать с переменными.

#35 Laravel 5.x » Помогите с аутентификацией » 23.05.2016 12:39:51

laravelNewbie
Ответов: 13

Пишу ручками простую аутентификацию, используя присутствующие в Laravel инструменты.
Кто может помочь объяснить, что следует делать после того, как сверил существует ли данынй пользователь в бд и совпадает ли его пароль. Смотрел на эту статью но так и не понял, как правильно объявить юзера залогиненым и как сделать так, что бы до логаута он везде числился авторизованным. Просто ход мыслей подскажите хотя бы, а я уже как-то додумаю.

#36 Re: Laravel 5.x » В url Отображается не совсем то, что надо » 22.05.2016 23:44:30

Я дурачёк: всё решилось с помощью

return redirect()->intended('dashboard');

#37 Laravel 5.x » В url Отображается не совсем то, что надо » 22.05.2016 23:37:13

laravelNewbie
Ответов: 1

Только познаю азы Laravel. Как сделать так, что бы в адресной строке адрес был идентичен файлу, который отвечает за данную страницу.
Работал со стандартным методом аутентификации. Но после проверки совпадает ли данный существующий юзер с паролем, оказываясь на нужной странице, в адресной строке по прежнему находится `auth/login`.
Роуты:

Route::get('/dashboard', ['uses' => 'HomeController@dashboard', 'as' => 'dashboard']);
Route::get('auth/login/', 'Auth\AuthController@getLogin');
Route::post('auth/login/', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout'); 

HomeController:

public function dashboard()
    {
        return view('pages.dashboard');
    } 

AuthController:

 protected function postLogin()
    {
        $email = Input::get('email');
        $pass = Input::get('password');
        
        if ($email && $pass)
        {
            $user = AuthModel::where('email', $email)->where('password', $pass)->get();
            if (count($user) == 1)
            {
                return view('pages.dashboard');
            }
         }
    } 

То есть после успешного логина отображается страница `dashboard`, но в адресной строке находится `auth/login`. Как сделать что бы в адресной строке было `dashboard`?

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