zoukankan      html  css  js  c++  java
  • 读ecshop笔记(二)——RBAC

    ECSHOP在线手册:http://book.ecmoban.com/

    admin_action 管理权限分配

    字段类型Null/默认注释
    action_id tinyint(3)  否 /  自增ID号
    parent_id tinyint(3)  否 / 0 该id 项的父id,对应本表的action_id字段
    action_code varchar(20) 否 /  代表权限的英文字符串,对应汉文在语言文件中,如果该字段有某个字符串,就表示有该权限
    relevance varchar(20) 否 /   

    role  

    字段类型Null/默认注释
    Role_id Smallint(5)  
    Role_name Varchar(60)  
    Action_list Text  
    Role_describe text  

    admin_user  管理员管理

    字段类型Null/默认注释
    user_id smallint(5)  否 /  自增id号,管理员代码
    user_name varchar(60) 否 /  管理员登录名
    email varchar(60) 否 /  管理员邮箱
    password varchar(32) 否 /  管理员登录密码
    add_time int(11) 否 /  管理员添加时间
    last_login int(11) 否 /  管理员最后一次登录时间
    last_ip varchar(15) 否 /  管理员最后一次登录IP
    action_list text 否 /  管理员管理权限列表
    nav_list text 否 /  管理员导航栏配置项
    lang_type varchar(50) 否 /   
    agency_id smallint(5)  否 /  该管理员负责的办事处理的id,同agency的agency_id字段.如果管理员没有负责办事处,则此处为0
    suppliers_id smallint(5) 是 / 0  
    todolist longtext 是 /  记事本记录的数据
    role_id smallint(5) 是 /   

    action_list 权限列表会跟随role_id 父类的管理权限分配而改变

    admin_log  管理日志

    字段类型Null/默认注释
    log_id int(10)  否 /  自增ID号
    log_time int(10)  否 / 0 写日志时间
    user_id tinyint(3)  否 / 0 该日志所记录的操作者id,同admin_user的user_id
    log_info varchar(255) 否 / 管理操作内容
    ip_address varchar(15) 否 / 登录者登录IP

    admin_message  管理留言 

    字段类型Null/默认注释
    message_id smallint(5)  否 /  自增id号
    sender_id tinyint(3)  否 / 0 发送该留言的管理员id,同admin_user的user_id
    receiver_id tinyint(3)  否 / 0 接收消息管理员id,同admin_user的user_id,如果是给多个管理员发送,则同一个消息给每个管理员id发送一条
    sent_time int(11)  否 / 0 留言发送时间
    read_time int(11)  否 / 0 留言阅读时间
    readed tinyint(1)  否 / 0 留言是否阅读1已阅读;0未阅读
    deleted tinyint(1)  否 / 0 留言是否已经被删除 1已删除;0未删除
    title varchar(150) 否 /  留言的主题
    message text 否 /  留言的内容

    验证权限

    /**
     * 判断管理员对某一个操作是否有权限。
     *
     * 根据当前对应的action_code,然后再和用户session里面的action_list做匹配,以此来决定是否可以继续执行。
     * @param     string    $priv_str    操作对应的priv_str
     * @param     string    $msg_type       返回的类型
     * @return true/false
     */
    function admin_priv($priv_str, $msg_type = '' , $msg_output = true)
    {
        global $_LANG;
    
        if ($_SESSION['action_list'] == 'all')
        {
            return true;
        }
    
        if (strpos(',' . $_SESSION['action_list'] . ',', ',' . $priv_str . ',') === false)
        {
            $link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');
            if ( $msg_output)
            {
                sys_msg($_LANG['priv_error'], 0, $link);
            }
            return false;
        }
        else
        {
            return true;
        }
    }
    
    /**
     * 检查管理员权限
     *
     * @access  public
     * @param   string  $authz
     * @return  boolean
     */
    function check_authz($authz)
    {
        return (preg_match('/,*'.$authz.',*/', $_SESSION['action_list']) || $_SESSION['action_list'] == 'all');
    }
    
    /**
     * 检查管理员权限,返回JSON格式数剧
     *
     * @access  public
     * @param   string  $authz
     * @return  void
     */
    function check_authz_json($authz)
    {
        if (!check_authz($authz))
        {
            make_json_error($GLOBALS['_LANG']['priv_error']);
        }
    }
  • 相关阅读:
    煲鸡汤流程
    面向对象
    程序员英语学习思维导图
    百度通配符学习
    面向对象
    IO学习
    理解java的三大特性之继承
    重载(overload)、覆盖(override)、隐藏(hide)的区别
    2018年值得关注的10大JavaScript动画库
    小知识点总结
  • 原文地址:https://www.cnblogs.com/lixingbaophp/p/5251387.html
Copyright © 2011-2022 走看看