DoRole

一个简单而灵活的Ruby on Rails角色权限管理解决方案。DoRole提供了直观的方式来管理Rails应用中的角色和权限。

特性

  • 简单直观的API设计
  • 灵活的权限配置系统
  • 支持权限继承
  • 支持条件权限
  • 内置权限审计功能
  • 完全兼容Rails 7.0+

安装

在你的Gemfile中添加:

gem 'do_role'

然后执行:

$ bundle install

基本配置

生成迁移文件

$ rails generate do_role:install
$ rails db:migrate

配置权限

config/initializers/do_role.rb中定义权限:

DoRole.permission_set do
  # 使用namespace组织权限
  namespace :posts do
    permission :index
    permission :create
    permission :update
    permission :destroy
  end

  namespace :users do
    permission :manage
    permission :view
  end

  # 可以添加自定义选项
  namespace :admin do
    permission :dashboard, description: "访问管理后台"
  end

  # 支持权限继承
  namespace :articles do
    permission :create
    permission :update
    permission :destroy
    permission :manage, requires: [:create, :update, :destroy]
  end

  # 条件权限
  namespace :comments do
    permission :moderate, user_id: ->(user_id) { user_id == @user.id }
  end
end

使用方法

在模型中包含DoRole

class User < ApplicationRecord
  include DoRole::Model
  # 自动提供以下方法:
  # - roles
  # - permissions
  # - has_permission?
 end

创建和管理角色

# 创建角色
role = user.roles.create(name: "编辑", permissions: ["posts.create", "posts.update"])

# 添加权限
role.add_permission("posts.destroy")

# 移除权限
role.remove_permission("posts.destroy")

# 检查权限
role.has_permission?("posts.create") # => true

用户权限验证

# 检查用户是否拥有特定权限
user.has_permission?("posts.create")

# 带条件的权限检查
user.has_permission?("comments.moderate", comment)

# 获取用户所有权限
user.permissions # => ["posts.create", "posts.update", ...]

权限审计

# 启用权限审计
DoRole.configure do |config|
  config.enable_permission_audit = true
end

# 查看权限变更记录
user.permission_audits

贡献

  1. Fork 项目
  2. 创建特性分支 (git checkout -b my-new-feature)
  3. 提交你的改动 (git commit -am 'Add some feature')
  4. 推送到分支 (git push origin my-new-feature)
  5. 创建一个 Pull Request

许可证

本项目基于 MIT License 开源。