submissions: refactor roles again #21

Merged
Quaternions merged 1 commits from roles into staging 2025-03-26 01:08:44 +00:00
2 changed files with 19 additions and 23 deletions

@ -25,19 +25,19 @@ var (
) )
// StrafesNET group roles // StrafesNET group roles
type Role int32 type GroupRole int32
var ( var (
// has ScriptWrite // has ScriptWrite
RoleQuat Role = 240 RoleQuat GroupRole = 240
RolesQuat Roles = RolesScriptWrite|RolesSubmissionPublish|RolesSubmissionReview|RolesMapDownload RolesQuat Roles = RolesScriptWrite|RolesSubmissionPublish|RolesSubmissionReview|RolesMapDownload
// has SubmissionPublish // has SubmissionPublish
RoleMapAdmin Role = 128 RoleMapAdmin GroupRole = 128
RolesMapAdmin Roles = RolesSubmissionPublish|RolesSubmissionReview|RolesMapDownload RolesMapAdmin Roles = RolesSubmissionPublish|RolesSubmissionReview|RolesMapDownload
// has SubmissionReview // has SubmissionReview
RoleMapCouncil Role = 64 RoleMapCouncil GroupRole = 64
RolesMapCouncil Roles = RolesSubmissionReview|RolesMapDownload RolesMapCouncil Roles = RolesSubmissionReview|RolesMapDownload
// access to downloading maps // access to downloading maps
RoleMapAccess Role = 32 RoleMapAccess GroupRole = 32
RolesMapAccess Roles = RolesMapDownload RolesMapAccess Roles = RolesMapDownload
) )
@ -90,20 +90,13 @@ func (usr UserInfoHandle) IsSubmitter(submitter uint64) (bool, error) {
} }
return userId == submitter, nil return userId == submitter, nil
} }
func (usr UserInfoHandle) hasRole(role Role) (bool, error) { func (usr UserInfoHandle) hasRoles(wantRoles Roles) (bool, error) {
roles, err := usr.svc.Client.GetGroupRole(*usr.ctx, &auth.IdMessage{ haveroles, err := usr.GetRoles()
SessionID: usr.sessionId,
})
if err != nil { if err != nil {
return false, err return false, err
} }
for _, r := range roles.Roles { return haveroles & wantRoles == wantRoles, nil
if int32(role) <= r.Rank {
return true, nil
}
}
return false, nil
} }
func (usr UserInfoHandle) GetRoles() (Roles, error) { func (usr UserInfoHandle) GetRoles() (Roles, error) {
roles, err := usr.svc.Client.GetGroupRole(*usr.ctx, &auth.IdMessage{ roles, err := usr.svc.Client.GetGroupRole(*usr.ctx, &auth.IdMessage{
@ -117,7 +110,7 @@ func (usr UserInfoHandle) GetRoles() (Roles, error) {
// map roles into bitflag // map roles into bitflag
for _, r := range roles.Roles { for _, r := range roles.Roles {
switch Role(r.Rank){ switch GroupRole(r.Rank){
case RoleQuat: case RoleQuat:
rolesBitflag|=RolesQuat; rolesBitflag|=RolesQuat;
case RoleMapAdmin: case RoleMapAdmin:
@ -133,14 +126,17 @@ func (usr UserInfoHandle) GetRoles() (Roles, error) {
// RoleThumbnail // RoleThumbnail
// RoleMapDownload // RoleMapDownload
func (usr UserInfoHandle) HasRoleSubmissionRelease() (bool, error) { func (usr UserInfoHandle) HasRoleSubmissionPublish() (bool, error) {
return usr.hasRole(RoleMapAdmin) return usr.hasRoles(RolesSubmissionPublish)
} }
func (usr UserInfoHandle) HasRoleSubmissionReview() (bool, error) { func (usr UserInfoHandle) HasRoleSubmissionReview() (bool, error) {
return usr.hasRole(RoleMapCouncil) return usr.hasRoles(RolesSubmissionReview)
}
func (usr UserInfoHandle) HasRoleMapDownload() (bool, error) {
return usr.hasRoles(RolesMapDownload)
} }
func (usr UserInfoHandle) HasRoleScriptWrite() (bool, error) { func (usr UserInfoHandle) HasRoleScriptWrite() (bool, error) {
return usr.hasRole(RoleQuat) return usr.hasRoles(RolesScriptWrite)
} }
/// Not implemented /// Not implemented
func (usr UserInfoHandle) HasRoleMaptest() (bool, error) { func (usr UserInfoHandle) HasRoleMaptest() (bool, error) {

@ -386,7 +386,7 @@ func (svc *Service) ActionSubmissionTriggerUpload(ctx context.Context, params ap
return ErrUserInfo return ErrUserInfo
} }
has_role, err := userInfo.HasRoleSubmissionRelease() has_role, err := userInfo.HasRoleSubmissionPublish()
if err != nil { if err != nil {
return err return err
} }
@ -451,7 +451,7 @@ func (svc *Service) ActionSubmissionValidated(ctx context.Context, params api.Ac
return ErrUserInfo return ErrUserInfo
} }
has_role, err := userInfo.HasRoleSubmissionRelease() has_role, err := userInfo.HasRoleSubmissionPublish()
if err != nil { if err != nil {
return err return err
} }
@ -584,7 +584,7 @@ func (svc *Service) ReleaseSubmissions(ctx context.Context, request []api.Releas
return ErrUserInfo return ErrUserInfo
} }
has_role, err := userInfo.HasRoleSubmissionRelease() has_role, err := userInfo.HasRoleSubmissionPublish()
if err != nil { if err != nil {
return err return err
} }