Авторизация бывает необходима не только для взаимодействия с посетителями, но и для управления сайтом, например, при создании админки. Так что, эта функция бывает необходима, даже для самых простых сайтов.
В системе уже предустановленны необходимые функции, в частности при установке можно создать необходимые таблицы в базе данных. Для авторизации потребуются таблицы users и sessions. Если нужно сделать эти таблицы вручную, то за основу можно взять sql файлы установщика system/install-system/sql.
Для авторизации пользователя в системе отвечает класс system/core/user/auth.php Основные методы:
В нашем примере форма авторизации будет отправлять post запрос на страницу /auth с полями csrf, login и password. И для начала, создадим контроллер для обработки запроса командой:
php e create/controller user/auth
Будет создан контроллер app/controllers/user/auth.php
Кроме того, нам понадобятся модель таблицы users:
php e create/model users
А в файле роутера app/route/web.php создадим запись:
$route->namespace('app/controllers/user')
$route->post('/auth')->controller('authController', 'index');
Теперь, осталось принять запрос в контроллере:
$login = new \system\core\user\auth();
$login->setPass($_POST['pass']);
$login->setLogin($_POST['login']);
$login->redirect(referal_url());
$login->login(function($auth, $user, $valid){
if($valid->control()){
redirect(referal_url());
}else{
redirect(referal_url(), $valid->data(), $valid->error());
}
});
В этом примере я продеменстрировал установку параметров класса auth: передал значения логина, пароля и адрес для редиректа.
Осталось только создать форму в шаблоне:
<form method="post" action="/auth">
<csrf type="input" name="auth" />
<input type="text" name="login">
<input type="password" name="password">
<input type="submit">
</form>
Вот собственно и всё, мы сделали авторизацию в системе. При желании её можно дополнять и другими функциями.