Skip to content
Snippets Groups Projects
Auth.php 5.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • use CodeIgniter\Shield\Authentication\Actions\ActionInterface;
    
    use CodeIgniter\Shield\Authentication\Actions\Email2FA;
    
    use CodeIgniter\Shield\Config\Auth as ShieldAuth;
    use Modules\Auth\Models\UserModel;
    
         * ////////////////// AUTHENTICATION //////////////////
    
            'login' => 'login',
            'register' => 'register',
    
            'layout' => '_layout',
            'action_email_2fa' => 'email_2fa_show',
            'action_email_2fa_verify' => 'email_2fa_verify',
            'action_email_2fa_email' => 'emails/email_2fa_email',
            'action_email_activate_show' => 'email_activate_show',
            'action_email_activate_email' => 'emails/email_activate_email',
            'magic-link-login' => 'magic_link_form',
            'magic-link-message' => 'magic_link_message',
            'magic-link-email' => 'emails/magic_link_email',
            'magic-link-set-password' => 'magic_link_set_password',
            'welcome-email' => 'emails/welcome_email',
    
         * --------------------------------------------------------------------
         * Redirect urLs
         * --------------------------------------------------------------------
         * The default URL that a user will be redirected to after
         * various auth actions. If you need more flexibility you can
         * override the `getUrl()` method to apply any logic you may need.
    
        public array $redirects = [
            'register' => '/',
            'login' => '/',
            'logout' => 'login',
        ];
    
         * --------------------------------------------------------------------
         * Authentication Actions
         * --------------------------------------------------------------------
         * Specifies the class that represents an action to take after
         * the user logs in or registers a new account at the site.
         *
         * You must register actions in the order of the actions to be performed.
         *
         * Available actions with Shield:
         * - register: 'CodeIgniter\Shield\Authentication\Actions\EmailActivator'
         * - login:    'CodeIgniter\Shield\Authentication\Actions\Email2FA'
         *
         * @var array<string, class-string<ActionInterface>|null>
         */
        public array $actions = [
            'register' => null,
            'login' => null,
        ];
    
        /**
         * --------------------------------------------------------------------
         * Allow Registration
         * --------------------------------------------------------------------
         * Determines whether users can register for the site.
         */
    
        public bool $allowRegistration = false;
    
        /**
         * --------------------------------------------------------------------
         * Allow Two-Factor Authentication
         * --------------------------------------------------------------------
         * Determines whether email 2FA is enabled.
         */
        public bool $enable2FA = false;
    
    
        /**
         * --------------------------------------------------------------------
         * Welcome Link Lifetime
         * --------------------------------------------------------------------
         * Specifies the amount of time, in seconds, that a welcome link is valid.
         * You can use Time Constants or any desired number.
         */
        public int $welcomeLinkLifetime = 48 * HOUR;
    
        /**
         * --------------------------------------------------------------------
         * User Provider
         * --------------------------------------------------------------------
         * The name of the class that handles user persistence.
         * By default, this is the included UserModel, which
         * works with any of the database engines supported by CodeIgniter.
         * You can change it as long as they adhere to the
         * CodeIgniter\Shield\Models\UserModel.
    
        public string $userProvider = UserModel::class;
    
        /**
         * --------------------------------------------------------------------------
         * Auth gateway
         * --------------------------------------------------------------------------
         * Defines a base route for all authentication related pages
         */
        public string $gateway = 'cp-auth';
    
            $adminGateway = config('Admin')
                ->gateway;
    
            $this->redirects = [
                'register' => $adminGateway,
                'login' => $adminGateway,
                'logout' => $adminGateway,
            ];
    
    
            // FIXME: enable2FA config can only be updated in the .env
            // Using the settings service to have it set in the db causes infinite loop.
            if ($this->enable2FA) {
                $this->actions['login'] = Email2FA::class;
            }
    
        }
    
        /**
         * Returns the URL that a user should be redirected to after a successful login.
         *
         * Redirects to the set-password form if magicLogin
         */
        public function loginRedirect(): string
        {
            $url = session('magicLogin') ? route_to('magic-link-set-password') : setting('Auth.redirects')['login'];
    
            return $this->getUrl($url);
        }