103 lines
2.4 KiB
Go
103 lines
2.4 KiB
Go
package repo
|
|
|
|
import (
|
|
"voltaserve/infra"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type UserPermission struct {
|
|
ID string `json:"id" gorm:"column:id"`
|
|
UserID string `json:"userId" gorm:"column:user_id"`
|
|
ResourceID string `json:"resourceId" gorm:"column:resource_id"`
|
|
Permission string `json:"permission" gorm:"column:permission"`
|
|
CreateTime string `json:"createTime" gorm:"column:create_time"`
|
|
}
|
|
|
|
type GroupPermission struct {
|
|
ID string `json:"id" gorm:"column:id"`
|
|
GroupID string `json:"groupId" gorm:"column:group_id"`
|
|
ResourceID string `json:"resourceId" gorm:"column:resource_id"`
|
|
Permission string `json:"permission" gorm:"column:permission"`
|
|
CreateTime string `json:"createTime" gorm:"column:create_time"`
|
|
}
|
|
|
|
type PermissionRepo interface {
|
|
GetUserPermissions(id string) ([]*UserPermission, error)
|
|
GetGroupPermissions(id string) ([]*GroupPermission, error)
|
|
}
|
|
|
|
func NewPermissionRepo() PermissionRepo {
|
|
return newPermissionRepo()
|
|
}
|
|
|
|
func (UserPermission) TableName() string {
|
|
return "userpermission"
|
|
}
|
|
|
|
func (GroupPermission) TableName() string {
|
|
return "grouppermission"
|
|
}
|
|
|
|
type userPermissionValue struct {
|
|
UserID string `json:"userId,omitempty"`
|
|
Value string `json:"value,omitempty"`
|
|
}
|
|
|
|
func (p userPermissionValue) GetUserID() string {
|
|
return p.UserID
|
|
}
|
|
func (p userPermissionValue) GetValue() string {
|
|
return p.Value
|
|
}
|
|
|
|
type groupPermissionValue struct {
|
|
GroupID string `json:"groupId,omitempty"`
|
|
Value string `json:"value,omitempty"`
|
|
}
|
|
|
|
func (p groupPermissionValue) GetGroupID() string {
|
|
return p.GroupID
|
|
}
|
|
func (p groupPermissionValue) GetValue() string {
|
|
return p.Value
|
|
}
|
|
|
|
type permissionRepo struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func newPermissionRepo() *permissionRepo {
|
|
return &permissionRepo{
|
|
db: infra.GetDb(),
|
|
}
|
|
}
|
|
|
|
func (repo *permissionRepo) GetUserPermissions(id string) ([]*UserPermission, error) {
|
|
var res []*UserPermission
|
|
if db := repo.db.
|
|
Raw("SELECT * FROM userpermission WHERE resource_id = ?", id).
|
|
Scan(&res); db.Error != nil {
|
|
return nil, db.Error
|
|
}
|
|
if len(res) > 0 {
|
|
return res, nil
|
|
} else {
|
|
return []*UserPermission{}, nil
|
|
}
|
|
}
|
|
|
|
func (repo *permissionRepo) GetGroupPermissions(id string) ([]*GroupPermission, error) {
|
|
var res []*GroupPermission
|
|
if db := repo.db.
|
|
Raw("SELECT * FROM grouppermission WHERE resource_id = ?", id).
|
|
Scan(&res); db.Error != nil {
|
|
return nil, db.Error
|
|
}
|
|
if len(res) > 0 {
|
|
return res, nil
|
|
} else {
|
|
return []*GroupPermission{}, nil
|
|
}
|
|
}
|