submissions: refactor roles again #21
pkg/service
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user