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. do
# 使用namespace组织权限
namespace :posts do
:index
:create
:update
:destroy
end
namespace :users do
:manage
:view
end
# 可以添加自定义选项
namespace :admin do
:dashboard, description: "访问管理后台"
end
# 支持权限继承
namespace :articles do
:create
:update
:destroy
:manage, requires: [:create, :update, :destroy]
end
# 条件权限
namespace :comments do
: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.("posts.destroy")
# 移除权限
role.("posts.destroy")
# 检查权限
role.("posts.create") # => true
用户权限验证
# 检查用户是否拥有特定权限
user.("posts.create")
# 带条件的权限检查
user.("comments.moderate", comment)
# 获取用户所有权限
user. # => ["posts.create", "posts.update", ...]
权限审计
# 启用权限审计
DoRole.configure do |config|
config. = true
end
# 查看权限变更记录
user.
贡献
- Fork 项目
- 创建特性分支 (
git checkout -b my-new-feature) - 提交你的改动 (
git commit -am 'Add some feature') - 推送到分支 (
git push origin my-new-feature) - 创建一个 Pull Request
许可证
本项目基于 MIT License 开源。