Files
goalfylearning-admin/internal/models/rbac.go

53 lines
1.3 KiB
Go

package models
// RolePagePermission 角色页面权限关联
type RolePagePermission struct {
BaseModel
RoleID uint `gorm:"not null" json:"roleId"`
PageID uint `gorm:"not null" json:"pageId"`
Role Role `gorm:"foreignKey:RoleID" json:"role,omitempty"`
Page Page `gorm:"foreignKey:PageID" json:"page,omitempty"`
}
// Page 页面模型
type Page struct {
BaseModel
Name string `gorm:"size:50;not null" json:"name"`
Path string `gorm:"uniqueIndex;size:100;not null" json:"path"`
Icon string `gorm:"size:50" json:"icon"`
SortOrder int `gorm:"default:0" json:"sortOrder"`
IsActive bool `gorm:"default:true" json:"isActive"`
}
func (RolePagePermission) TableName() string {
return "admin_role_page_permissions"
}
func (Page) TableName() string {
return "admin_pages"
}
// RBAC请求模型
type UserRoleAssignRequest struct {
UserID uint `json:"userId" binding:"required"`
RoleIDs []uint `json:"roleIds"`
}
type RolePagePermissionAssignRequest struct {
RoleID uint `json:"roleId" binding:"required"`
PageIDs []uint `json:"pageIds"`
}
// 用户权限响应模型
type UserPermissionsResponse struct {
User User `json:"user"`
Roles []Role `json:"roles"`
Pages []Page `json:"pages"`
}
// 角色页面权限响应模型
type RolePagePermissionsResponse struct {
Role Role `json:"role"`
Pages []Page `json:"pages"`
}