mirror of https://github.com/IoTcat/auxpi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
package models |
|
|
|
import ( |
|
"github.com/auxpi/auxpiAll" |
|
) |
|
|
|
type Role struct { |
|
Model |
|
|
|
Name string `gorm:"unique;not null VARCHAR(191)" json:"name"` |
|
DisplayName string `gorm:"VARCHAR(191)" json:"display_name"` |
|
Description string `gorm:"VARCHAR(191)" json:"description"` |
|
|
|
Perms []*Permission `gorm:"many2many:role_perms;" json:"perms"` |
|
} |
|
|
|
const ( |
|
ROLE_ADMIN = 1 |
|
ROLE_EDITER = 2 |
|
ROLE_NORMAL_USER = 3 |
|
ROLE_BLOCKED_USER = 4 |
|
) |
|
|
|
func CreateRole(role auxpi.RoleJson) bool { |
|
err := db.Create(&Role{ |
|
Name: role.Name, |
|
DisplayName: role.DisplayName, |
|
Description: role.Description, |
|
Perms: GetPermissionsByIds(role.PIDs), |
|
}).Error |
|
|
|
return modelsError(auxpi.ErrorToString(err)) |
|
} |
|
|
|
func CreateAdminRole() { |
|
var role = new(Role) |
|
role.ID = ROLE_ADMIN |
|
role.Name = "admin" |
|
role.Description = `可以对用户\用户权限\图片\API\站点 进行管理` |
|
role.DisplayName = `管理员` |
|
var ids = make([]uint, 1) |
|
ids[0] = 1 |
|
role.Perms = GetPermissionsByIds(ids) |
|
db.Create(role) |
|
|
|
role.ID = ROLE_NORMAL_USER |
|
role.Name = "normalUser" |
|
role.Description = `可以上传图片,管理自己的图片` |
|
role.DisplayName = `普通用户` |
|
ids = []uint{4, 5} |
|
role.Perms = GetPermissionsByIds(ids) |
|
db.Create(role) |
|
|
|
role.ID = ROLE_BLOCKED_USER |
|
role.Name = "blockUser" |
|
role.DisplayName = `封禁的用户` |
|
role.Description = "无法登录,无法进行任何操作,小黑屋用户" |
|
db.Create(role) |
|
} |
|
|
|
func MigrateRole() error { |
|
if db.HasTable(&Role{}) { |
|
err := db.DropTable(&Role{}).Error |
|
err = db.CreateTable(&Role{}).Error |
|
return err |
|
} else { |
|
err := db.CreateTable(&Role{}).Error |
|
return err |
|
} |
|
}
|
|
|