mirror of
https://github.com/status-im/status-go.git
synced 2025-02-19 18:28:18 +00:00
refactor: rename 'permissions' to 'roles' in community module
This renames various instances of 'permissions' to 'roles' where appropriate to ensure consistency and clarity of purpose.
This commit is contained in:
parent
47c568fb08
commit
9ae632893c
@ -718,16 +718,16 @@ func (o *Community) isBanned(pk *ecdsa.PublicKey) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) hasMemberPermission(member *protobuf.CommunityMember, permissions map[protobuf.CommunityMember_Roles]bool) bool {
|
func (o *Community) memberHasRoles(member *protobuf.CommunityMember, roles map[protobuf.CommunityMember_Roles]bool) bool {
|
||||||
for _, r := range member.Roles {
|
for _, r := range member.Roles {
|
||||||
if permissions[r] {
|
if roles[r] {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) hasPermission(pk *ecdsa.PublicKey, roles map[protobuf.CommunityMember_Roles]bool) bool {
|
func (o *Community) hasRoles(pk *ecdsa.PublicKey, roles map[protobuf.CommunityMember_Roles]bool) bool {
|
||||||
if pk == nil || o.config == nil || o.config.ID == nil {
|
if pk == nil || o.config == nil || o.config.ID == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -737,7 +737,7 @@ func (o *Community) hasPermission(pk *ecdsa.PublicKey, roles map[protobuf.Commun
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return o.hasMemberPermission(member, roles)
|
return o.memberHasRoles(member, roles)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) HasMember(pk *ecdsa.PublicKey) bool {
|
func (o *Community) HasMember(pk *ecdsa.PublicKey) bool {
|
||||||
@ -915,7 +915,7 @@ func (o *Community) AddRoleToMember(pk *ecdsa.PublicKey, role protobuf.Community
|
|||||||
addRole := func(member *protobuf.CommunityMember) {
|
addRole := func(member *protobuf.CommunityMember) {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[role] = true
|
roles[role] = true
|
||||||
if !o.hasMemberPermission(member, roles) {
|
if !o.memberHasRoles(member, roles) {
|
||||||
member.Roles = append(member.Roles, role)
|
member.Roles = append(member.Roles, role)
|
||||||
updated = true
|
updated = true
|
||||||
}
|
}
|
||||||
@ -951,7 +951,7 @@ func (o *Community) RemoveRoleFromMember(pk *ecdsa.PublicKey, role protobuf.Comm
|
|||||||
removeRole := func(member *protobuf.CommunityMember) {
|
removeRole := func(member *protobuf.CommunityMember) {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[role] = true
|
roles[role] = true
|
||||||
if o.hasMemberPermission(member, roles) {
|
if o.memberHasRoles(member, roles) {
|
||||||
var newRoles []protobuf.CommunityMember_Roles
|
var newRoles []protobuf.CommunityMember_Roles
|
||||||
for _, r := range member.Roles {
|
for _, r := range member.Roles {
|
||||||
if r != role {
|
if r != role {
|
||||||
@ -1163,26 +1163,26 @@ func (o *Community) GetPrivilegedMembers() []*ecdsa.PublicKey {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) HasPermissionToSendCommunityEvents() bool {
|
func (o *Community) HasPermissionToSendCommunityEvents() bool {
|
||||||
return !o.IsControlNode() && o.hasPermission(o.config.MemberIdentity, manageCommunityRolePermissions())
|
return !o.IsControlNode() && o.hasRoles(o.config.MemberIdentity, manageCommunityRoles())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) IsMemberOwner(publicKey *ecdsa.PublicKey) bool {
|
func (o *Community) IsMemberOwner(publicKey *ecdsa.PublicKey) bool {
|
||||||
return o.hasPermission(publicKey, ownerRolePermission())
|
return o.hasRoles(publicKey, ownerRole())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) IsMemberTokenMaster(publicKey *ecdsa.PublicKey) bool {
|
func (o *Community) IsMemberTokenMaster(publicKey *ecdsa.PublicKey) bool {
|
||||||
return o.hasPermission(publicKey, tokenMasterRolePermissions())
|
return o.hasRoles(publicKey, tokenMasterRole())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) IsMemberAdmin(publicKey *ecdsa.PublicKey) bool {
|
func (o *Community) IsMemberAdmin(publicKey *ecdsa.PublicKey) bool {
|
||||||
return o.hasPermission(publicKey, adminRolePermissions())
|
return o.hasRoles(publicKey, adminRole())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) IsPrivilegedMember(publicKey *ecdsa.PublicKey) bool {
|
func (o *Community) IsPrivilegedMember(publicKey *ecdsa.PublicKey) bool {
|
||||||
return o.hasPermission(publicKey, manageCommunityRolePermissions())
|
return o.hasRoles(publicKey, manageCommunityRoles())
|
||||||
}
|
}
|
||||||
|
|
||||||
func manageCommunityRolePermissions() map[protobuf.CommunityMember_Roles]bool {
|
func manageCommunityRoles() map[protobuf.CommunityMember_Roles]bool {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[protobuf.CommunityMember_ROLE_OWNER] = true
|
roles[protobuf.CommunityMember_ROLE_OWNER] = true
|
||||||
roles[protobuf.CommunityMember_ROLE_ADMIN] = true
|
roles[protobuf.CommunityMember_ROLE_ADMIN] = true
|
||||||
@ -1190,30 +1190,36 @@ func manageCommunityRolePermissions() map[protobuf.CommunityMember_Roles]bool {
|
|||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
func canManageUsersRolePermissions() map[protobuf.CommunityMember_Roles]bool {
|
func manageUsersRole() map[protobuf.CommunityMember_Roles]bool {
|
||||||
roles := manageCommunityRolePermissions()
|
roles := manageCommunityRoles()
|
||||||
roles[protobuf.CommunityMember_ROLE_MANAGE_USERS] = true
|
roles[protobuf.CommunityMember_ROLE_MANAGE_USERS] = true
|
||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
func ownerRolePermission() map[protobuf.CommunityMember_Roles]bool {
|
func ownerRole() map[protobuf.CommunityMember_Roles]bool {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[protobuf.CommunityMember_ROLE_OWNER] = true
|
roles[protobuf.CommunityMember_ROLE_OWNER] = true
|
||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
func adminRolePermissions() map[protobuf.CommunityMember_Roles]bool {
|
func adminRole() map[protobuf.CommunityMember_Roles]bool {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[protobuf.CommunityMember_ROLE_ADMIN] = true
|
roles[protobuf.CommunityMember_ROLE_ADMIN] = true
|
||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
func tokenMasterRolePermissions() map[protobuf.CommunityMember_Roles]bool {
|
func tokenMasterRole() map[protobuf.CommunityMember_Roles]bool {
|
||||||
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
roles := make(map[protobuf.CommunityMember_Roles]bool)
|
||||||
roles[protobuf.CommunityMember_ROLE_TOKEN_MASTER] = true
|
roles[protobuf.CommunityMember_ROLE_TOKEN_MASTER] = true
|
||||||
return roles
|
return roles
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func moderateContentRole() map[protobuf.CommunityMember_Roles]bool {
|
||||||
|
roles := manageCommunityRoles()
|
||||||
|
roles[protobuf.CommunityMember_ROLE_MODERATE_CONTENT] = true
|
||||||
|
return roles
|
||||||
|
}
|
||||||
|
|
||||||
func (o *Community) MemberRole(pubKey *ecdsa.PublicKey) protobuf.CommunityMember_Roles {
|
func (o *Community) MemberRole(pubKey *ecdsa.PublicKey) protobuf.CommunityMember_Roles {
|
||||||
if o.IsMemberOwner(pubKey) {
|
if o.IsMemberOwner(pubKey) {
|
||||||
return protobuf.CommunityMember_ROLE_OWNER
|
return protobuf.CommunityMember_ROLE_OWNER
|
||||||
@ -1230,12 +1236,6 @@ func (o *Community) MemberRole(pubKey *ecdsa.PublicKey) protobuf.CommunityMember
|
|||||||
return protobuf.CommunityMember_ROLE_NONE
|
return protobuf.CommunityMember_ROLE_NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
func canDeleteMessageForEveryonePermissions() map[protobuf.CommunityMember_Roles]bool {
|
|
||||||
roles := manageCommunityRolePermissions()
|
|
||||||
roles[protobuf.CommunityMember_ROLE_MODERATE_CONTENT] = true
|
|
||||||
return roles
|
|
||||||
}
|
|
||||||
|
|
||||||
func (o *Community) validateRequestToJoinWithChatID(request *protobuf.CommunityRequestToJoin) error {
|
func (o *Community) validateRequestToJoinWithChatID(request *protobuf.CommunityRequestToJoin) error {
|
||||||
|
|
||||||
chat, ok := o.config.CommunityDescription.Chats[request.ChatId]
|
chat, ok := o.config.CommunityDescription.Chats[request.ChatId]
|
||||||
@ -1786,8 +1786,8 @@ func (o *Community) CanManageUsers(pk *ecdsa.PublicKey) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
roles := canManageUsersRolePermissions()
|
roles := manageUsersRole()
|
||||||
return o.hasPermission(pk, roles)
|
return o.hasRoles(pk, roles)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1803,8 +1803,8 @@ func (o *Community) CanDeleteMessageForEveryone(pk *ecdsa.PublicKey) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
roles := canDeleteMessageForEveryonePermissions()
|
roles := moderateContentRole()
|
||||||
return o.hasPermission(pk, roles)
|
return o.hasRoles(pk, roles)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *Community) isMember() bool {
|
func (o *Community) isMember() bool {
|
||||||
@ -1842,9 +1842,9 @@ func (o *Community) nextClock() uint64 {
|
|||||||
|
|
||||||
func (o *Community) CanManageUsersPublicKeys() ([]*ecdsa.PublicKey, error) {
|
func (o *Community) CanManageUsersPublicKeys() ([]*ecdsa.PublicKey, error) {
|
||||||
var response []*ecdsa.PublicKey
|
var response []*ecdsa.PublicKey
|
||||||
roles := canManageUsersRolePermissions()
|
roles := manageUsersRole()
|
||||||
for pkString, member := range o.config.CommunityDescription.Members {
|
for pkString, member := range o.config.CommunityDescription.Members {
|
||||||
if o.hasMemberPermission(member, roles) {
|
if o.memberHasRoles(member, roles) {
|
||||||
pk, err := common.HexToPubkey(pkString)
|
pk, err := common.HexToPubkey(pkString)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -73,10 +73,10 @@ func (s *CommunitySuite) TestHasPermission() {
|
|||||||
memberKey, err := crypto.GenerateKey()
|
memberKey, err := crypto.GenerateKey()
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
s.Require().False(community.hasPermission(nil, adminRolePermissions()))
|
s.Require().False(community.hasRoles(nil, adminRole()))
|
||||||
|
|
||||||
// returns false if key is passed, but config is nil
|
// returns false if key is passed, but config is nil
|
||||||
s.Require().False(community.hasPermission(&nonMemberKey.PublicKey, adminRolePermissions()))
|
s.Require().False(community.hasRoles(&nonMemberKey.PublicKey, adminRole()))
|
||||||
|
|
||||||
// returns true if the user is the owner
|
// returns true if the user is the owner
|
||||||
|
|
||||||
@ -87,16 +87,16 @@ func (s *CommunitySuite) TestHasPermission() {
|
|||||||
|
|
||||||
community.config = &Config{ID: &ownerKey.PublicKey, CommunityDescription: communityDescription}
|
community.config = &Config{ID: &ownerKey.PublicKey, CommunityDescription: communityDescription}
|
||||||
|
|
||||||
s.Require().True(community.hasPermission(&ownerKey.PublicKey, ownerRolePermission()))
|
s.Require().True(community.hasRoles(&ownerKey.PublicKey, ownerRole()))
|
||||||
|
|
||||||
// return false if user is not a member
|
// return false if user is not a member
|
||||||
s.Require().False(community.hasPermission(&nonMemberKey.PublicKey, adminRolePermissions()))
|
s.Require().False(community.hasRoles(&nonMemberKey.PublicKey, adminRole()))
|
||||||
|
|
||||||
// return true if user is a member and has permissions
|
// return true if user is a member and has permissions
|
||||||
s.Require().True(community.hasPermission(&memberKey.PublicKey, adminRolePermissions()))
|
s.Require().True(community.hasRoles(&memberKey.PublicKey, adminRole()))
|
||||||
|
|
||||||
// return false if user is a member and does not have permissions
|
// return false if user is a member and does not have permissions
|
||||||
s.Require().False(community.hasPermission(&memberKey.PublicKey, ownerRolePermission()))
|
s.Require().False(community.hasRoles(&memberKey.PublicKey, ownerRole()))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user