xiidea/ezrbac

为 Codeigniter 框架提供的简单易用的基于角色的访问控制库

安装: 833

依赖项: 1

建议者: 0

安全性: 0

星标: 86

关注者: 14

分支: 39

开放问题: 8

类型:codeigniter-third-party

1.3.3 2019-02-06 01:27 UTC

This package is not auto-updated.

Last update: 2024-09-17 10:56:54 UTC


README

为流行的 PHP 框架 Codeigniter 提供简单易用的基于角色的访问控制库

关键特性

  • 易于集成到 Codeigniter 应用程序中
  • 集成了密码恢复功能的用户登录系统
  • 易于定制!!!
  • 集成了访问控制管理界面
  • 可配置数据库表名
  • 支持干净的 URL 路由!
  • 只需编辑配置文件即可轻松适应现有模式!!
  • 与您现有的登录系统兼容!
  • API 用于与库交互
  • 用户元数据表包含用户的个人资料数据(如:姓名、地址等)
  • 覆盖邮件函数以使用您自己的函数发送恢复邮件
  • 配置和视图文件可以被覆盖!
  • 更多功能即将推出....!!!

当前稳定版本

v1.3.2 发布!

如何安装

安装此库简单,只需4个步骤

  1. ezRbac 放置在您的应用程序的 third_party 目录中(或使用 composer 命令

  2. 在 schema 目录中运行 SQL 或手动在数据库中创建三个表。

  3. ./application/config/config.php 中设置 $config['enable_hooks'] = TRUE;

  4. ./application/config/config.php 中设置 $config['encryption_key'] = SOME_SECRET_KEY;

  5. ./application/config/hooks.php 中添加钩子

$hook['post_controller_constructor'] = array(
    'class' => 'EzRbacHook',
    'function' => 'accessCheck',
    'filename' => 'EzRbacHook.php',
    'filepath' => 'third_party/ezRbac'
);

将自定义操作映射到访问映射

在控制器中定义一个名为 access_map 的公共函数,如下所示

 public function access_map(){
        return array(
            'index'=>'view',
            'update'=>'edit'
        );
    }

数组的索引是实际的动作名称,映射到配置为 $config['default_access_map'] = array("view", "create", "edit", "delete", "publish") 的访问权限

##默认凭证

如果您已导入提供的 data.sql,则默认凭证是

user:       admin@admin.com
password:   123456

ezRbac 特定 URL

注销 URL: /index.php/welcome/index/rbac/logout

acl 管理URL: /index.php/welcome/index/rbac/gui

如果您已启用路由(请参阅 如何启用路由),则可以访问所有 URL,如 /rbac/(logout|gui)

如何启用路由

启用路由很简单,只需两步

  1. ./ezRbac/config/ez_rbac.php 中设置 $config['use_routing'] = true;

  2. /application/config/routes.php 中设置 $route['^(rbac)/(.+)$'] = $route['default_controller']."/index/$1/$2";(其中 rbac 可以通过设置 $config['ezrbac_url'] = 'rbac'; 替换为您想要的任何内容)

定制

大部分定制都可以通过设置配置值来完成。您可以通过两种方式定制配置

  1. (简单方法)在 ./third_party/ezRbac/config/ez_rbac.php 中修改配置以匹配您的选择
  2. (高级方法)将 ./third_party/ezRbac/config/ez_rbac.php 的副本作为 ./application/config/ez_rbac.php 创建,或创建新文件以覆盖默认设置。这种方式,每次您更新库时,都不需要担心您的配置值。

您还可以覆盖视图文件。只需将视图文件复制到 /application/views/ezrbac/,并根据需要修改。目前只有 login 目录中的视图可扩展。

配置选项

  • public_controller
    类型: 数组
    默认: 数组()
    不受我们库检查访问的公共控制器列表

  • ajax_no_permission_msg
    类型:字符串
    默认值:您没有权限执行此操作!在执行ajax请求而不是查看完整的受限制页面时返回的消息,因此您可以自行处理这种情况。

  • default_access
    类型:布尔型
    默认值:FALSE
    未知方法的默认访问权限,如果拒绝访问则为TRUE。

  • default_access_map
    类型: 数组
    默认值:array("view", "create", "edit", "delete", "publish")
    系统使用的访问映射数组。您可以根据需要命名,并且可以添加/删除访问名称。

  • autologin_cookie_life
    类型:整数
    默认值:2592000(30天)
    记住我选中时记住用户登录会话的时间(秒)。

  • autologin_cookie_name
    类型:字符串
    默认值:ezrbac_remember_me
    用于存储选中记住我选项的用户数据的自动登录cookie名称。

  • redirect_url
    类型:字符串
    默认值:""
    如果拒绝访问资源URL,则重定向URL(应为公共控制器)。如果不清楚,请留空。

  • login_url
    类型:字符串
    默认值:""
    如果您要处理登录,则在此设置您的登录URL(应为公共控制器),留空以让我处理它!在处理登录时,使用 $this->ezrbac->getCurrentUser($user) 来注册用户会话。

  • login_session_key
    类型:字符串
    默认值:access_role
    登录检查会话键名称,用于检查用户是否已登录。在不修改核心库的情况下,您可以使用以下任何一个:user_id/user_email/access_role

  • password_min_length
    类型:整数
    默认值:6
    密码验证规则检查最小长度。

  • password_recovery_email
    类型:字符串
    默认值:noreply@yourdomain.com
    密码恢复邮件的发件人邮箱

  • password_recovery_email_name
    类型:字符串
    默认值:EzRbac
    密码恢复邮件的发件人名称

  • password_recovery_subject
    类型:字符串
    默认值:密码重置请求
    密码恢复邮件的主题

  • auto_login_table
    类型:字符串
    默认值:user_autologin
    用于存储自动登录数据的数据库表名称

  • user_table
    类型:字符串
    默认值:system_users
    用于存储用户数据的数据库表名称

  • user_meta_table
    类型:字符串
    默认值:user_meta
    用于存储用户元数据的数据库表名称

  • user_role_table
    类型:字符串
    默认值:user_role
    用于存储用户角色信息的数据库表名称

  • access_map_table
    类型:字符串
    默认值:user_access_map
    根据用户角色存储访问控制列表的数据库表名称

  • schema_user_table
    类型: 数组
    默认值

array(
    'id'                  => 'id',
    'email'               => 'email',
    'password'            => 'password',
    'salt'                => 'salt',
    'user_role_id'        => 'user_role_id',
    'last_login'          => 'last_login',
    'last_login_ip'       => 'last_login_ip',
    'reset_request_code'  => 'reset_request_code',
    'reset_request_time'  => 'reset_request_time',
    'reset_request_ip'    => 'reset_request_ip',
    'verification_status' => 'verification_status',
    'status'              => 'status'
);  

您的现有系统的数据库字段映射。有助于在不修改代码的情况下适应数据库!

  • schema_user_role
    类型:数组默认
array(
    'id'        => 'id',
    'role_name' => 'role_name'
);

您的现有系统的数据库字段映射。有助于在不修改代码的情况下适应数据库!

  • user_meta_user_id
    类型:字符串
    默认值:user_id 用户元表中的外键名称

  • show_password_reset_mail
    类型:布尔型
    默认值:FALSE 启用在浏览器中显示电子邮件而不是发送它。用于调试目的。在生产环境中不要设置true

  • override_email_function
    类型:字符串|false
    默认值:FALSE 您可以使用自己的函数发送电子邮件。如果将此值设置为 'name_of_your_function',则调用 name_of_your_function($option) 来发送电子邮件,其中 $option = array('subject'=>'','from'=>'', 'from_name'=>'', 'to'=>'','body'=>'');

  • enable_ezrbac_gui
    类型:布尔型
    默认值:TRUE 启用或禁用管理界面

  • ezrbac_gui_url
    类型:字符串
    默认值:gui
    ezrbac gui接口访问的URL标识符

  • ezrbac_password
    类型:字符串
    默认值:hardtoremember 访问ACL管理界面的密码

  • ezrbac_url
    类型:字符串
    默认: rbac Ezrbac特定的URL标识符。

  • use_assets_within_package
    类型:布尔型
    默认: TRUE 此配置值告诉库它应从哪里使用资源。如果设置为true,库中视图使用的js/css/images将从包的资产目录中提供服务(对快速设置很有帮助)。对于高级用户,最好将资产目录的内容复制到Web可访问的位置,并设置$config['assets_base_directory']='从根目录到资产目录的相对路径'

  • assets_base_directory
    类型:字符串
    默认: rbac 仅在设置$config['use_assets_within_package']=false;时使用。然后设置从根目录到资产目录的相对路径

  • use_routing
    类型:布尔型
    默认值:FALSE
    通过添加路由规则启用管理界面的干净URL。如果$config['ezrbac_url']='rbac',则可以添加$route['^(rbac)/(.+)$'] = $route['default_controller']."/index/$1/$2";并将其设置为true。

依赖关系

要使用此库,您需要Codeigniter 3.0+ 对于旧版本,请使用2.x分支