1
0
mirror of https://github.com/fumiama/paper-manager.git synced 2026-06-09 02:01:31 +08:00
Files
paper-manager/backend/global/role.go
2023-03-22 22:38:52 +08:00

63 lines
1.1 KiB
Go

package global
const (
RoleNil UserRole = iota
RoleSuper
RoleFileManager
RoleUser
RoleTop
)
type UserRole uint8
func (r UserRole) IsVaild() bool {
return r > RoleNil && r < RoleTop
}
func (r UserRole) String() string {
switch r {
case RoleSuper:
return "super"
case RoleFileManager:
return "filemgr"
case RoleUser:
return "user"
}
return "invalid"
}
func (r UserRole) Nick() string {
switch r {
case RoleSuper:
return "课程组长"
case RoleFileManager:
return "归档代理"
case RoleUser:
return "课程组员"
}
return "非法角色"
}
// UpdateUserRole ...
func (u *UserDatabase) UpdateUserRole(id int, nr UserRole, opname string) error {
if nr == RoleNil || nr > RoleUser {
return ErrInvalidRole
}
user, err := u.GetUserByID(id)
if err != nil {
return err
}
if opname == user.Name {
return ErrInvalidName
}
user.Role = nr
u.mu.Lock()
err = u.db.Insert(UserTableUser, &user)
u.mu.Unlock()
if err != nil {
return err
}
_ = u.SendMessage("您的权限被 "+opname+" 变更为 "+user.Role.Nick(), opname, *user.ID)
return u.notifyUpdateUserRole(user.Name, opname, nr, *user.ID)
}