AclRoles.php 1.52 KB
<?php

namespace App\Constants;

class AclRoles
{
    const UNAUTHORIZED = 'Unauthorized';
    const AUTHORIZED = 'Authorized';
    const AUTHOR = 'Author';
    const EDITOR = 'Editor';
    const USER = 'User';
    const ADMINISTRATOR = 'Administrator';

    const ALL_ROLES = [
        self::UNAUTHORIZED,
        self::AUTHORIZED,
        self::AUTHOR,
        self::EDITOR,
        self::USER,
        self::ADMINISTRATOR
    ];

    const ALL_REAL_ROLES = [
        self::AUTHOR,
        self::EDITOR,
        self::USER,
        self::ADMINISTRATOR
    ];

    /**
     * Check if $role can remove user with role $role_to_remove
     *
     * @param $role
     * @param $role_to_remove
     * @return bool
     */
    static public function access_user_delete($role, $role_to_remove)
    {
        $is_accessible = true;
        switch ($role)
        {
            case self::AUTHOR:
                if (in_array($role_to_remove, [self::EDITOR, self::USER, self::ADMINISTRATOR]))
                {
                    $is_accessible = false;
                }
                break;
            case self::EDITOR:
                if (in_array($role_to_remove, [self::USER, self::ADMINISTRATOR]))
                {
                    $is_accessible = false;
                }
                break;
            case self::USER:
                if (in_array($role_to_remove, [self::ADMINISTRATOR]))
                {
                    $is_accessible = false;
                }
                break;
        }
        return $is_accessible;
    }
}