mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
DismissGroup
This commit is contained in:
parent
fb37bea439
commit
75df8db438
@ -485,34 +485,30 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
|
|||||||
}
|
}
|
||||||
memberMap := make(map[string]*relationTb.GroupMemberModel)
|
memberMap := make(map[string]*relationTb.GroupMemberModel)
|
||||||
for i, member := range members {
|
for i, member := range members {
|
||||||
if member.RoleLevel == constant.GroupOwner {
|
|
||||||
return nil, errs.ErrArgs.Wrap("can not kick group owner")
|
|
||||||
}
|
|
||||||
memberMap[member.UserID] = members[i]
|
memberMap[member.UserID] = members[i]
|
||||||
}
|
}
|
||||||
|
isAppManagerUid := tokenverify.IsAppManagerUid(ctx)
|
||||||
|
opMember := memberMap[opUserID]
|
||||||
for _, userID := range req.KickedUserIDs {
|
for _, userID := range req.KickedUserIDs {
|
||||||
if _, ok := memberMap[userID]; !ok {
|
member, ok := memberMap[userID]
|
||||||
|
if !ok {
|
||||||
return nil, errs.ErrUserIDNotFound.Wrap(userID)
|
return nil, errs.ErrUserIDNotFound.Wrap(userID)
|
||||||
}
|
}
|
||||||
}
|
if !isAppManagerUid {
|
||||||
if !tokenverify.IsAppManagerUid(ctx) {
|
if opMember == nil {
|
||||||
member := memberMap[opUserID]
|
return nil, errs.ErrNoPermission.Wrap("opUserID no in group")
|
||||||
if member == nil {
|
}
|
||||||
return nil, errs.ErrNoPermission.Wrap(fmt.Sprintf("opUserID %s no in group", opUserID))
|
switch opMember.RoleLevel {
|
||||||
}
|
case constant.GroupOwner:
|
||||||
switch member.RoleLevel {
|
case constant.GroupAdmin:
|
||||||
case constant.GroupOwner:
|
if member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin {
|
||||||
case constant.GroupAdmin:
|
return nil, errs.ErrNoPermission.Wrap("group admins cannot remove the group owner and other admins")
|
||||||
for _, member := range members {
|
}
|
||||||
if member.UserID == opUserID {
|
case constant.GroupOrdinaryUsers:
|
||||||
continue
|
return nil, errs.ErrNoPermission.Wrap("opUserID no permission")
|
||||||
}
|
default:
|
||||||
if member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin {
|
return nil, errs.ErrNoPermission.Wrap("opUserID roleLevel unknown")
|
||||||
return nil, errs.ErrNoPermission.Wrap("userID:" + member.UserID)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
default:
|
|
||||||
return nil, errs.ErrNoPermission.Wrap("opUserID is OrdinaryUser")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
userIDs, err := s.GroupDatabase.FindGroupMemberUserID(ctx, req.GroupID)
|
userIDs, err := s.GroupDatabase.FindGroupMemberUserID(ctx, req.GroupID)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user