all
This commit is contained in:
102
Downloads/Voltaserve/api/repo/permission_repo.go
Normal file
102
Downloads/Voltaserve/api/repo/permission_repo.go
Normal file
@ -0,0 +1,102 @@
|
||||
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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user