У многих из нас приложения на Laravel имеют схожий SaaS-тип фреймворка: регистрация пользователя, вход, сброс пароля, страница публичных продаж, информационная панель, маршрут выхода и базовый стиль Bootstrap в самом начале разработки. В Laravel для этого была заготовка прямо из коробки. К моему большому сожалению, она недавно исчезла из Laravel, но теперь вернулась в качестве Artisan-команды %%(sh)make:auth%%. %%(t) mattstauffer at Cassim in ~/Sites/auth-scaffold on master ± php artisan make:auth Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/auth/login.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/auth/register.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/auth/passwords/email.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/auth/passwords/reset.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/auth/emails/password.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/layouts/app.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/home.blade.php Created View: /Users/mattstauffer/Sites/auth-scaffold/resources/views/welcome.blade.php Installed HomeController. Updated Routes File. Authentication scaffolding generated successfully! %% Что она даёт? Давайте разберёмся. Это одна из статей о новых функциях Laravel 5.2. Скоро будут ещё, не пропустите. {{Cut}} 1. ((posts/354 Проверка массива формы в Laravel 5.2)) 2. ((posts/372 Неявная привязка модели маршрута в Laravel 5.2)) 3. ((posts/379 Ограничение скорости запросов API в Laravel 5.2)) 4. ((posts/380 Заготовка авторизации в Laravel 5.2)) 5. ((posts/381 Множественные драйверы защиты авторизации (включая API) в Laravel 5.2)) == Что изменилось? == У нас есть макет (%%(t)resources/views/layouts/app.blade.php%%) - ядро этой заготовки, а также набор представлений, наследующий его: * **welcome.blade.php** - публичная страница приветствия * **home.blade.php** - информационная панель для вошедших пользователей * **auth/login.blade.php** - страница входа * **auth/register.blade.php** - страница регистрации/подписки * **auth/passwords/email.blade.php** - страница подтверждения сброса пароля * **auth/passwords/reset.blade.php** - страница для сброса пароля * **auth/emails/password.blade.php** - email для сброса пароля Наша публичная страница по-прежнему маршрутизируется через %%(t)routes.php%%: %% Route::get('/', function () { return view('welcome'); }); %% И теперь у нас есть %%(t)HomeController%%, который маршутизирует нашу информационную панель: %% class HomeController extends Controller { /** * Показать информационную панель приложения. * * @return Response */ public function index() { return view('home'); } } %% Конечно, это маршрутизируется в группе %%(t)web%% в %%(t)routes.php%%. Заметьте, здесь есть ещё кое-что новое - метод %%Route::auth()%%: %% Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home', 'HomeController@index'); }); %% === %%Route::auth()%% === Метод %%auth()%% - это быстрый способ для определения следующих маршрутов: %% // Маршруты авторизации... $this->get('login', 'Auth\AuthController@showLoginForm'); $this->post('login', 'Auth\AuthController@login'); $this->get('logout', 'Auth\AuthController@logout'); // Маршруты регистрации... $this->get('register', 'Auth\AuthController@showRegistrationForm'); $this->post('register', 'Auth\AuthController@register'); // Маршруты сброса пароля... $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm'); $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail'); $this->post('password/reset', 'Auth\PasswordController@reset'); %% == Фронтенд == Теперь посмотрим, что у нас в браузере: {{Image /packages/proger/habravel/uploads/380-scaffold-preview.png, width=100%}} Как видите, у нас есть Bootstrap CSS, базовый макет приложения Bootstrap и полезные действия для нашей базовой авторизации. === %%(t)App.blade.php%% === Как же выглядит этот главный макет? У нас есть ((https://fortawesome.github.io/Font-Awesome/ FontAwesome)), шрифт ((https://www.google.com/fonts/specimen/Lato Lato)), ((http://getbootstrap.com/ Bootstrap CSS)), мобильно-ориентированный макет "гамбургер", jQuery, Bootstrap JS, и закоментированные места для вывода файлов CSS и JS по-умолчанию, если вы выберете ((/docs/v5/elixir Elixir)). Также у нас есть верхнее меню навигации, ведущее к главной странице, и направляющее невошедших гостей к странице входа или регистрации, а вошедших пользователей к выходу. == Заключение == Вот и всё! Это не так сложно, но сэкономит вам 30-60 минут набора кода для каждого приложения, где это необходимо.