tallieutallieu/dry-accounts

该软件包最新版本(1.0.9)没有可用的许可证信息。

DRY应用的账户系统

1.0.9 2024-04-30 08:43 UTC

This package is auto-updated.

Last update: 2024-09-30 09:37:17 UTC


README

DRY应用的账户系统

安装说明

composer require tallieutallieu/dry-accounts

php oak migration migrate -m accounts
配置选项

基本示例用法

使用方法
<?php

namespace controller;

class authentication
{
    public static function login(Request $request)
    {
        $login_form = new Form( $request);
        
        $login_form->add_email( 'email', [ 'required' => true ] );
        $login_form->add_password( 'password', [ 'required' => true ] );

        $auth_failed = false;
        $is_logged_in = \Tnt\Account\Facade\Auth::isAuthenticated();

        if( $login_form->validate() ) {

            if( \Tnt\Account\Facade\Auth::authenticate( $login_form->get( 'email' ), $login_form->get( 'password' ) ) ) {
                $is_logged_in = true;

            } else {
                $auth_failed = true;
            }
        }

        $tpl = new Template();
        $tpl->login_form = $login_form;
        $tpl->auth_failed = $auth_failed;
        $tpl->is_logged_in = $is_logged_in;
        $tpl->render('users/login.tpl');
    }
    
    public static function register(Request $request)
    {
        $app = Application::get();

        $register_form = new Form( $request);

        $register_failed = false;

        $register_form->add_email('email', [
            'required' => true,
            'extra_validation' => function( $value, &$errors ) use ( &$register_failed, $app )
            {
                if ($app->get(AuthenticationInterface::class)->getActivatedUser($value)) {

                    $errors[] = 'user_already_activated';
                    $register_failed = true;
                }
            }
        ]);

        $register_form->add_password( 'password', ['required' => true,] );

        if( $register_form->validate() ) {

            $user = $app->get(AuthenticationInterface::class)
                ->register(
                    $register_form->get('email'),
                    $register_form->get('password')
                );

            echo 'User registered ' . $user->email;
        }

        $tpl = new Template();
        $tpl->register_form = $register_form;
        $tpl->register_failed = $register_failed;
        $tpl->render('users/register.tpl');
    }

    public static function logout(Request $request)
    {
        \Tnt\Account\Facade\Auth::logout();

        Response::redirect('login/');
    }
}