mengstack-api/internal/modules/rbac/domain/permission.go
MengStack Dev f8c374a624 feat(rbac): M3 RBAC 权限模型完整实现
- 4 表设计: permissions, roles, role_permissions(m2m), user_roles
- 多租户隔离: 角色和用户角色分配按 tenant_id 隔离
- 权限并集: 多角色用户取权限并集,无继承
- 系统角色保护: is_system 角色不可修改/删除
- 种子数据: 7 个默认权限 + 3 个系统角色(super_admin/tenant_admin/member)
- 权限中间件: RequirePermission 支持按路由粒度控制
- API 路由: /api/v1/rbac/ 下完整 CRUD 端点
- fx 注册: RBAC Module 集成到 app.go
2026-10-03 00:54:26 +08:00

36 lines
937 B
Go

package domain
import "time"
type Permission struct {
ID uint `json:"id" gorm:"primaryKey"`
Code string `json:"code" gorm:"uniqueIndex;size:128;not null"`
Name string `json:"name" gorm:"size:128;not null"`
Module string `json:"module" gorm:"size:64;not null;index"`
Description string `json:"description" gorm:"size:256"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func (Permission) TableName() string {
return "permissions"
}
type PermissionDTO struct {
ID uint `json:"id"`
Code string `json:"code"`
Name string `json:"name"`
Module string `json:"module"`
Description string `json:"description"`
}
func ToPermissionDTO(p *Permission) PermissionDTO {
return PermissionDTO{
ID: p.ID,
Code: p.Code,
Name: p.Name,
Module: p.Module,
Description: p.Description,
}
}