Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - type AddApiPermissionRequest
 - type AddViewPermissionRequest
 - type ApiPermission
 - type ApiPermissionService
 - type ApiPermissionSpec
 - type CreateRoleRequest
 - type DeleteRoleRequest
 - type DescribeRoleRequest
 - type MATCH_BY
 - type QueryApiPermissionRequest
 - type QueryMatchedEndpointRequest
 - type QueryMatchedPageRequest
 - type QueryRoleRequest
 - type QueryViewPermissionRequest
 - type RemoveApiPermissionRequest
 - type RemoveViewPermissionRequest
 - type Role
 - type RoleService
 - type Service
 - type UpdateApiPermissionRequest
 - type UpdateRoleRequest
 - type UpdateViewPermission
 - type ViewPermission
 - type ViewPermissionService
 - type ViewPermissionSpec
 
Constants ¶
      View Source
      
  
    const ( MATCH_BY_ID = iota MATCH_BY_LABLE MATCH_BY_RESOURCE_ACTION MATCH_BY_RESOURCE_ACCESS_MODE )
      View Source
      
  
    const (
	ADMIN = "admin"
)
    
      View Source
      
  
const (
	AppName = "role"
)
    Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddApiPermissionRequest ¶
type AddApiPermissionRequest struct {
	RoleId uint64               `json:"role_id"`
	Items  []*ApiPermissionSpec `json:"items"`
}
    func NewAddApiPermissionRequest ¶
func NewAddApiPermissionRequest(roleId uint64) *AddApiPermissionRequest
func (*AddApiPermissionRequest) Add ¶ added in v0.0.5
func (r *AddApiPermissionRequest) Add(specs ...*ApiPermissionSpec) *AddApiPermissionRequest
func (*AddApiPermissionRequest) Validate ¶
func (r *AddApiPermissionRequest) Validate() error
type AddViewPermissionRequest ¶
type AddViewPermissionRequest struct {
	RoleId uint64                `json:"role_id"`
	Items  []*ViewPermissionSpec `json:"items"`
}
    func NewAddViewPermissionRequest ¶
func NewAddViewPermissionRequest() *AddViewPermissionRequest
func (*AddViewPermissionRequest) Add ¶ added in v0.0.5
func (r *AddViewPermissionRequest) Add(specs ...*ViewPermissionSpec) *AddViewPermissionRequest
func (*AddViewPermissionRequest) Validate ¶
func (r *AddViewPermissionRequest) Validate() error
type ApiPermission ¶
type ApiPermission struct {
	// 基础数据
	apps.ResourceMeta
	// 角色Id
	RoleId uint64 `json:"role_id" gorm:"column:role_id;index" description:"角色Id"`
	// Api权限定义
	ApiPermissionSpec
}
    func NewApiPermission ¶
func NewApiPermission(roleId uint64, spec *ApiPermissionSpec) *ApiPermission
func (*ApiPermission) String ¶ added in v0.0.5
func (r *ApiPermission) String() string
func (*ApiPermission) TableName ¶
func (r *ApiPermission) TableName() string
type ApiPermissionService ¶
type ApiPermissionService interface {
	// 查询角色关联的权限条目
	QueryApiPermission(context.Context, *QueryApiPermissionRequest) ([]*ApiPermission, error)
	// 添加角色关联API
	AddApiPermission(context.Context, *AddApiPermissionRequest) ([]*ApiPermission, error)
	// 移除角色关联API
	RemoveApiPermission(context.Context, *RemoveApiPermissionRequest) ([]*ApiPermission, error)
	// 查询匹配到的Api接口列表
	QueryMatchedEndpoint(context.Context, *QueryMatchedEndpointRequest) (*types.Set[*endpoint.Endpoint], error)
}
    角色API接口管理
type ApiPermissionSpec ¶
type ApiPermissionSpec struct {
	// 创建者ID
	CreateBy uint64 `json:"create_by" gorm:"column:create_by" description:"创建者ID" optional:"true"`
	// 角色描述
	Description string `json:"description" gorm:"column:description;type:text" bson:"description" description:"角色描述"`
	// 权限匹配方式
	MatchBy MATCH_BY `json:"match_by" gorm:"column:match_by;type:tinyint(1);index" bson:"match_by" description:"权限匹配方式"`
	// MATCH_BY_ID 时指定的 Endpoint Id
	EndpointId *uint64 `json:"endpoint_id" gorm:"column:endpoint_id;type:uint;index"`
	// 操作标签
	Label string `json:"label" gorm:"column:label;type:varchar(200);index"`
	// 服务
	Service string `json:"service" gorm:"column:service;type:varchar(100);index" bson:"service" description:"服务名称"`
	// 资源列表
	Resource string `json:"resource" gorm:"column:resource;type:varchar(100);index" bson:"resource" description:"资源名称"`
	// 资源操作
	Action string `json:"action" bson:"action" gorm:"column:action;type:varchar(100);index"`
	// 读或者读写
	AccessMode endpoint.ACCESS_MODE `json:"access_mode" bson:"access_mode" gorm:"column:access_mode;type:tinyint(1);index"`
	// 其他扩展信息
	Extras map[string]string `json:"extras" gorm:"column:extras;serializer:json;type:json" description:"其他扩展信息" optional:"true"`
}
    func NewResourceActionApiPermissionSpec ¶ added in v0.0.5
func NewResourceActionApiPermissionSpec(service, resource, action string) *ApiPermissionSpec
func (*ApiPermissionSpec) GetEndpointId ¶ added in v0.0.5
func (a *ApiPermissionSpec) GetEndpointId() uint64
type CreateRoleRequest ¶
type CreateRoleRequest struct {
	// 创建者ID
	CreateBy uint64 `json:"create_by" gorm:"column:create_by" description:"创建者ID" optional:"true"`
	// 角色名称
	Name string `json:"name" gorm:"column:name;type:varchar(100);index" bson:"name" description:"角色名称"`
	// 角色描述
	Description string `json:"description" gorm:"column:description;type:text" bson:"description" description:"角色描述"`
	// 是否启用
	Enabled bool `json:"enabled" bson:"enabled" gorm:"column:enabled;type:tinyint(1)" description:"是否启用" optional:"true"`
	// 标签
	Label string `json:"label" gorm:"column:label;type:varchar(200);index" description:"标签" optional:"true"`
	// 其他扩展信息
	Extras map[string]string `json:"extras" gorm:"column:extras;serializer:json;type:json" description:"其他扩展信息" optional:"true"`
}
    func NewCreateRoleRequest ¶
func NewCreateRoleRequest() *CreateRoleRequest
func (*CreateRoleRequest) Validate ¶
func (r *CreateRoleRequest) Validate() error
type DeleteRoleRequest ¶
type DeleteRoleRequest struct {
	apps.GetRequest
}
    func NewDeleteRoleRequest ¶
func NewDeleteRoleRequest() *DeleteRoleRequest
type DescribeRoleRequest ¶
type DescribeRoleRequest struct {
	apps.GetRequest
}
    func NewDescribeRoleRequest ¶
func NewDescribeRoleRequest() *DescribeRoleRequest
type QueryApiPermissionRequest ¶
type QueryApiPermissionRequest struct {
	RoleIds          []uint64 `json:"role_ids"`
	ApiPermissionIds []uint64 `json:"api_permission_ids"`
}
    func NewQueryApiPermissionRequest ¶
func NewQueryApiPermissionRequest() *QueryApiPermissionRequest
func (*QueryApiPermissionRequest) AddPermissionId ¶
func (r *QueryApiPermissionRequest) AddPermissionId(permissionIds ...uint64) *QueryApiPermissionRequest
func (*QueryApiPermissionRequest) AddRoleId ¶
func (r *QueryApiPermissionRequest) AddRoleId(roleIds ...uint64) *QueryApiPermissionRequest
type QueryMatchedEndpointRequest ¶
type QueryMatchedEndpointRequest struct {
	RoleIds []uint64 `json:"role_ids" form:"role_ids"`
}
    func NewQueryMatchedEndpointRequest ¶
func NewQueryMatchedEndpointRequest() *QueryMatchedEndpointRequest
func (*QueryMatchedEndpointRequest) Add ¶ added in v0.0.5
func (r *QueryMatchedEndpointRequest) Add(roleIds ...uint64) *QueryMatchedEndpointRequest
type QueryMatchedPageRequest ¶ added in v0.0.10
type QueryMatchedPageRequest struct {
	apps.GetRequest
}
    func NewQueryMatchedPageRequest ¶ added in v0.0.10
func NewQueryMatchedPageRequest() *QueryMatchedPageRequest
type QueryRoleRequest ¶
type QueryRoleRequest struct {
	*request.PageRequest
	WithMenuPermission bool     `json:"with_menu_permission" form:"with_menu_permission"`
	WithApiPermission  bool     `json:"with_api_permission" form:"with_api_permission"`
	RoleIds            []uint64 `json:"role_ids" form:"role_ids"`
}
    func NewQueryRoleRequest ¶
func NewQueryRoleRequest() *QueryRoleRequest
func (*QueryRoleRequest) AddRoleId ¶ added in v0.0.5
func (r *QueryRoleRequest) AddRoleId(roleIds ...uint64) *QueryRoleRequest
type QueryViewPermissionRequest ¶
type QueryViewPermissionRequest struct {
	RoleIds           []uint64 `json:"role_ids"`
	ViewPermissionIds []uint64 `json:"view_permission_ids"`
}
    func NewQueryViewPermissionRequest ¶
func NewQueryViewPermissionRequest() *QueryViewPermissionRequest
func (*QueryViewPermissionRequest) AddPermissionId ¶
func (r *QueryViewPermissionRequest) AddPermissionId(permissionIds ...uint64) *QueryViewPermissionRequest
func (*QueryViewPermissionRequest) AddRoleId ¶
func (r *QueryViewPermissionRequest) AddRoleId(roleIds ...uint64) *QueryViewPermissionRequest
type RemoveApiPermissionRequest ¶
type RemoveApiPermissionRequest struct {
	RoleId           uint64   `json:"role_id"`
	ApiPermissionIds []uint64 `json:"api_permission_ids"`
}
    func NewRemoveApiPermissionRequest ¶
func NewRemoveApiPermissionRequest(roleId uint64) *RemoveApiPermissionRequest
func (*RemoveApiPermissionRequest) Add ¶ added in v0.0.5
func (r *RemoveApiPermissionRequest) Add(apiPermissionIds ...uint64) *RemoveApiPermissionRequest
func (*RemoveApiPermissionRequest) Validate ¶
func (r *RemoveApiPermissionRequest) Validate() error
type RemoveViewPermissionRequest ¶
type RemoveViewPermissionRequest struct {
	RoleId            uint64   `json:"role_id"`
	ViewPermissionIds []uint64 `json:"menu_permission_ids"`
}
    func NewRemoveViewPermissionRequest ¶
func NewRemoveViewPermissionRequest() *RemoveViewPermissionRequest
func (*RemoveViewPermissionRequest) Validate ¶
func (r *RemoveViewPermissionRequest) Validate() error
type Role ¶
type Role struct {
	// 基础数据
	apps.ResourceMeta
	// 角色创建信息
	CreateRoleRequest
	// 菜单权限
	MenuPermissions []*ViewPermission `json:"menu_permissions,omitempty" gorm:"-" description:"角色关联的菜单权限"`
	// API权限
	ApiPermissions []*ApiPermission `json:"api_permissions,omitempty" gorm:"-" description:"角色关联的API权限"`
}
    type RoleService ¶
type RoleService interface {
	// 创建角色
	CreateRole(context.Context, *CreateRoleRequest) (*Role, error)
	// 列表查询
	QueryRole(context.Context, *QueryRoleRequest) (*types.Set[*Role], error)
	// 详情查询
	DescribeRole(context.Context, *DescribeRoleRequest) (*Role, error)
	// 更新角色
	UpdateRole(context.Context, *UpdateRoleRequest) (*Role, error)
	// 删除角色
	DeleteRole(context.Context, *DeleteRoleRequest) (*Role, error)
}
    角色管理
type Service ¶
type Service interface {
	RoleService
	ApiPermissionService
	ViewPermissionService
}
    func GetService ¶
func GetService() Service
type UpdateApiPermissionRequest ¶
type UpdateApiPermissionRequest struct {
	Items []*ApiPermission `json:"items"`
}
    type UpdateRoleRequest ¶
type UpdateRoleRequest struct {
	apps.GetRequest
	CreateRoleRequest
}
    type UpdateViewPermission ¶
type UpdateViewPermission struct {
	Items []ViewPermission `json:"items"`
}
    type ViewPermission ¶
type ViewPermission struct {
	// 基础数据
	apps.ResourceMeta
	// 角色Id
	RoleId uint64 `json:"role_id" gorm:"column:role_id;index" description:"Role Id"`
	// Menu权限定义
	ViewPermissionSpec
}
    func NewViewPermission ¶
func NewViewPermission(roleId uint64, spec *ViewPermissionSpec) *ViewPermission
func (*ViewPermission) TableName ¶
func (r *ViewPermission) TableName() string
type ViewPermissionService ¶
type ViewPermissionService interface {
	// 查询角色关联的视图权限
	QueryViewPermission(context.Context, *QueryViewPermissionRequest) ([]*ViewPermission, error)
	// 添加角色关联菜单
	AddViewPermission(context.Context, *AddViewPermissionRequest) ([]*ViewPermission, error)
	// 移除角色关联菜单
	RemoveViewPermission(context.Context, *RemoveViewPermissionRequest) ([]*ViewPermission, error)
	// 查询能匹配到视图菜单
	QueryMatchedPage(context.Context, *QueryMatchedPageRequest) (*types.Set[*view.Menu], error)
}
    角色菜单管理
type ViewPermissionSpec ¶
type ViewPermissionSpec struct {
	// 创建者ID
	CreateBy uint64 `json:"create_by" gorm:"column:create_by" description:"创建者ID" optional:"true"`
	// 权限描述
	Description string `json:"description" gorm:"column:description;type:text" bson:"description" description:"角色描述"`
	// 页面路径
	PagePath string `json:"path_path" gorm:"column:path_path;type:varchar(200);index" bson:"path_path" description:"页面路径(可以通配)"`
	// 组件名称
	Components []string `` /* 127-byte string literal not displayed */
	// 其他扩展信息
	Extras map[string]string `json:"extras" gorm:"column:extras;serializer:json;type:json" description:"其他扩展信息" optional:"true"`
}
    func NewViewPermissionSpec ¶ added in v0.0.5
func NewViewPermissionSpec() *ViewPermissionSpec
 Click to show internal directories. 
   Click to hide internal directories.