mirror of
https://github.com/fumiama/paper-manager.git
synced 2026-06-08 17:40:23 +08:00
63 lines
1.1 KiB
Go
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)
|
|
}
|