Просмотр файла libarea-0.9/app/Bootstrap/Services/Auth/Login.php

Размер файла: 1.99Kb
<?php

declare(strict_types=1);

namespace App\Bootstrap\Services\Auth;

use Hleb\Static\Request;
use App\Models\User\UserModel;
use App\Bootstrap\Services\Auth\Remember;
use App\Content\Сheck\Validator;
use Meta;

class Login
{
    public function index(): void
    {
        $data = Request::allPost();
        $user = Validator::login($data);

        // If you clicked "Remember", it establishes a user session and registers it
        // Если нажал "Запомнить", то устанавливает сеанс пользователя и регистрирует его
        $rememberMe = $data['rememberme'] ?? false;
        if ($rememberMe == 1) {
            Remember::rememberMe($user['id']);
        }

        Action::set($user['id']);

        self::setUserLog($user['id']);

        redirect('/');
    }

    /**
     * Login page
     * Страница авторизации
     *
     * @return void
     */
    public function showLoginForm()
    {
        $m = [
            'og'    => false,
            'url'   => url('login'),
        ];

        return render(
            '/auth/login',
            [
                'meta'  => Meta::get(__('app.sign_in'), __('auth.login_info'), $m),
                'data'  => [
                    'sheet' => 'sign.in',
                    'type'  => 'login',
                ]
            ]
        );
    }

    /**
     * Let's record the participant's data: browser, platform...
     * Запишем данные участника: браузера, платформы...
     *
     * @param [type] $user_id
     * @return void
     */
    public static function setUserLog(int $user_id): void
    {
        $info = parse_user_agent();
        UserModel::setLogAgent(
            [
                'user_id'       => $user_id,
                'user_browser'  => $info['browser'] . ' ' . $info['version'],
                'user_os'       => $info['platform'],
                'user_ip'       => Request::getUri()->getIp(),
            ]
        );
    }
}