Allow users with AdminManageUsers to see banned users
Also: - General code refactoring - Allow banned/restricted users to see their scores etc - common.MethodData now contains UserPrivileges - UserPrivileges have now their own type - Implement md.HasQuery, to know if there's a GET querystring parameter or not
This commit is contained in:
@@ -22,66 +22,6 @@ const (
|
||||
// Privileges is a bitwise enum of the privileges of an user's API key.
|
||||
type Privileges uint64
|
||||
|
||||
// HasPrivilegeReadConfidential returns whether the ReadConfidential privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeReadConfidential() bool {
|
||||
return p&PrivilegeReadConfidential != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeWrite returns whether the Write privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeWrite() bool {
|
||||
return p&PrivilegeWrite != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeManageBadges returns whether the ManageBadges privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeManageBadges() bool {
|
||||
return p&PrivilegeManageBadges != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeBetaKeys returns whether the BetaKeys privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeBetaKeys() bool {
|
||||
return p&PrivilegeBetaKeys != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeManageSettings returns whether the ManageSettings privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeManageSettings() bool {
|
||||
return p&PrivilegeManageSettings != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeViewUserAdvanced returns whether the ViewUserAdvanced privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeViewUserAdvanced() bool {
|
||||
return p&PrivilegeViewUserAdvanced != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeManageUser returns whether the ManageUser privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeManageUser() bool {
|
||||
return p&PrivilegeManageUser != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeManageRoles returns whether the ManageRoles privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeManageRoles() bool {
|
||||
return p&PrivilegeManageRoles != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeManageAPIKeys returns whether the ManageAPIKeys privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeManageAPIKeys() bool {
|
||||
return p&PrivilegeManageAPIKeys != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeBlog returns whether the Blog privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeBlog() bool {
|
||||
return p&PrivilegeBlog != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeAPIMeta returns whether the APIMeta privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeAPIMeta() bool {
|
||||
return p&PrivilegeAPIMeta != 0
|
||||
}
|
||||
|
||||
// HasPrivilegeBeatmap returns whether the Beatmap privilege is included in the privileges.
|
||||
func (p Privileges) HasPrivilegeBeatmap() bool {
|
||||
return p&PrivilegeBeatmap != 0
|
||||
}
|
||||
|
||||
var privilegeString = [...]string{
|
||||
"Read",
|
||||
"ReadConfidential",
|
||||
@@ -101,14 +41,14 @@ var privilegeString = [...]string{
|
||||
func (p Privileges) String() string {
|
||||
var pvs []string
|
||||
for i, v := range privilegeString {
|
||||
if int(p)&(1<<uint(i)) != 0 {
|
||||
if uint64(p)&uint64(1<<uint(i)) != 0 {
|
||||
pvs = append(pvs, v)
|
||||
}
|
||||
}
|
||||
return strings.Join(pvs, ", ")
|
||||
}
|
||||
|
||||
var privilegeMustBe = [...]int{
|
||||
var privilegeMustBe = [...]UserPrivileges{
|
||||
1 << 30, // read is deprecated, and should be given out to no-one.
|
||||
UserPrivilegeNormal,
|
||||
UserPrivilegeNormal,
|
||||
@@ -125,7 +65,7 @@ var privilegeMustBe = [...]int{
|
||||
}
|
||||
|
||||
// CanOnly removes any privilege that the user has requested to have, but cannot have due to their rank.
|
||||
func (p Privileges) CanOnly(userPrivs int) Privileges {
|
||||
func (p Privileges) CanOnly(userPrivs UserPrivileges) Privileges {
|
||||
newPrivilege := 0
|
||||
for i, v := range privilegeMustBe {
|
||||
wants := p&1 == 1
|
||||
|
Reference in New Issue
Block a user