четверг, 7 сентября 2017 г.

Laravel. Блог. Аутентификация для админа.

Аутентификация для админа.


Главная страница админки: http://blog.my/admin/home

Возьмем шаблон для страницы логина отсюда: \Row files\admin\pages\examples\login.html
и скопируем его в новую страницу.
Создадим новую страницу \resources\views\admin\login.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Blog Admin | Log in</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<!-- Bootstrap 3.3.7 -->
<link rel="stylesheet" href="{{ asset('admin/bower_components/bootstrap/dist/css/bootstrap.min.css') }}">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('admin/bower_components/font-awesome/css/font-awesome.min.css') }}">
<!-- Ionicons -->
<link rel="stylesheet" href="{{ asset('admin/bower_components/Ionicons/css/ionicons.min.css') }}">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('admin/dist/css/AdminLTE.min.css') }}">
<!-- iCheck -->
<link rel="stylesheet" href="{{ asset('admin/plugins/iCheck/square/blue.css') }}">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->

<!-- Google Font -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<a href="../../index2.html"><b>Admin</b>Blog</a>
</div>
<!-- /.login-logo -->
<div class="login-box-body">
<p class="login-box-msg">Sign in to start your session</p>

<form action="{{ route('admin.login') }}" method="post">
{{ csrf_field() }}
<div class="form-group has-feedback">
<input type="email" class="form-control" name="email" placeholder="Email">
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input type="password" class="form-control" name="password" placeholder="Password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
<label>
<input type="checkbox"> Remember Me
</label>
</div>
</div>
<!-- /.col -->
<div class="col-xs-4">
<button type="submit" class="btn btn-primary btn-block btn-flat">Sign In</button>
</div>
<!-- /.col -->
</div>
</form>

<a href="#">I forgot my password</a><br>

</div>
<!-- /.login-box-body -->
</div>
<!-- /.login-box -->

<!-- jQuery 3 -->
<script src="{{ asset('admin/bower_components/jquery/dist/jquery.min.js') }}"></script>
<!-- Bootstrap 3.3.7 -->
<script src="{{ asset('admin/bower_components/bootstrap/dist/js/bootstrap.min.js') }}"></script>
<!-- iCheck -->
<script src="{{ asset('admin/plugins/iCheck/icheck.min.js"></script>
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
</body>
</html>

Создадим маршрут в routes\web.php
// Admin Routes
Route::group(['namespace' => 'Admin'], function() {
Route::get('admin/home', 'HomeController@index')->name('admin.home');
Route::resource('admin/user', 'UserController');
Route::resource('admin/post', 'PostController');
Route::resource('admin/tag', 'TagController');
Route::resource('admin/category', 'CategoryController');

// Аутентификация
Route::get('admin-login', 'Auth\LoginController@showLoginForm')->name('admin.login');
});

Скопируем из контроллеров папку Auth и вставим ее в папку \app\Http\Controllers\Admin

Откроем файл \app\Http\Controllers\Admin\LoginController.php (у всех остальных файлов)
и изменим namespace на
namespace App\Http\Controllers\Admin\Auth;

В файле \app\Http\Controllers\Admin\LoginController.php
<?php

namespace App\Http\Controllers\Admin\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{

use AuthenticatesUsers;


protected $redirectTo = '/home';

public function showLoginForm() {
return view('admin.login');
}



public function __construct()
{
$this->middleware('guest')->except('logout');
}
}

Теперь по адресу http://blog.my/admin-login открывается форма авторизации.

Создадим маршрут для входа в админку.
В routes\web.php
Route::post('admin-login', 'Auth\LoginController@login');

Далее в файле \app\Http\Controllers\Admin\LoginController.php
<?php

namespace App\Http\Controllers\Admin\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;


class LoginController extends Controller
{


use AuthenticatesUsers;


protected $redirectTo = '/home';

public function showLoginForm() {
return view('admin.login');
}

public function login(Request $request)
{
$this->validateLogin($request);


if ($this->attemptLogin($request)) {
return $this->sendLoginResponse($request);
}


return $this->sendFailedLoginResponse($request);
}


public function __construct()
{
$this->middleware('guest')->except('logout');
}
}

Идем в \resources\views\admin\login.blade.php
И перед формой входа подключаем вывод сообщений.
@include('includes.messages')



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

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

Materialize-css. Футер

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