воскресенье, 23 июля 2017 г.

LARAVEL. АУТЕНТИФИКАЦИЯ ПОЛЬЗОВАТЕЛЕЙ. ЧАСТЬ 2.

Напишем свой маршрут в файле routes/web.php

// admin/add/post
Route::group(['prefix'=>'admin', 'middleware'=>'auth'], function() {
 
});

В версии 5.4 нет посредника аутентификации. В\app\Http\Middleware\ нет файла Authenticate.php. 

В \app\Exceptions\Handler.php есть похожая часть:
 protected function unauthenticated($request, AuthenticationException $exception)
 {
 if ($request->expectsJson()) {
 return response()->json(['error' => 'Unauthenticated.'], 401);
 }

 return redirect()->guest(route('login'));
 }

Аутентификация реализуется через сессии.
Сессии подключаются в  файле Kernel.php через класс-посредник:
 \Illuminate\Session\Middleware\StartSession::class,

Допишем маршруты в файле routes/web.php
Route::group(['middleware' => 'web'], function () {
    Route::auth();

    //Route::get('/home', 'HomeController@index');
});



//Route::auth();
// admin/edit/post
Route::group(['prefix'=>'admin','middleware'=>['web']],function() {
 // admin/
 Route::get('/',['uses'=>'Admin\AdminController@show','as'=>'admin_index']);
 Route::get('/add/post',['uses'=>'Admin\AdminPostController@create','as'=>'admin_add_post']);
});

Идем в консоль и пишем команду: php artisan make:controller Admin\AdminController
и
php artisan make:controller Admin\AdminPostController

В app\Http\Controllers\Admin\AdminController.php сформируем метод show().
<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AdminController extends Controller
{
 public function show() {
        return view('welcome');
    }
}

Регистрация \resources\views\auth\register.blade.php
Добавим новое поле логин в шаблон.

<div class="form-group{{ $errors->has('login') ? ' has-error' : '' }}">
 <label for="name" class="col-md-4 control-label">Login</label>

 <div class="col-md-6">
 <input id="name" type="text" class="form-control" name="login" value="{{ old('login') }}" required autofocus>

 @if ($errors->has('login'))
 <span class="help-block">
 <strong>{{ $errors->first('login') }}</strong>
 </span>
 @endif
 </div>
 </div>

Идем в БД в таблицу users и добавляем новое поле.
login varchar 255 NULL
Без null не вставляет.

Добавим правила для валидации логина: \app\Http\Controllers\Auth\RegisterController.php
return Validator::make($data, [
 'name' => 'required|string|max:255',
 'login' => 'required|string|max:255|unique:users,login',
 'email' => 'required|string|email|max:255',
 'password' => 'required|string|min:6|confirmed',
 ]);

Далее:
protected function create(array $data)
 {
 return User::create([
 'name' => $data['name'],
            'login' => $data['login'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

Сделаем аутентификацию с использованием логина, а не емейла.
Идем в \resources\views\auth\login.blade.php и переписываем поле.
<div class="form-group{{ $errors->has('login') ? ' has-error' : '' }}">
 <label for="login" class="col-md-4 control-label">Login</label>

 <div class="col-md-6">
 <input id="email" type="text" class="form-control" name="login" value="{{ old('login') }}" required autofocus>

 @if ($errors->has('login'))
 <span class="help-block">
 <strong>{{ $errors->first('login') }}</strong>
 </span>
 @endif
 </div>
 </div>

В \app\Http\Controllers\Auth\LoginController.php  дописываем:
\app\Http\Controllers\Auth\LoginController.php 

   public function username()
{
    return 'login';
}


В моделе \app\User.php напишем:
 protected $fillable = [
        'name', 'email', 'password', 'login'
    ];

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html