DismissGroup

This commit is contained in:
withchao 2023-06-04 17:01:00 +08:00
parent fb37bea439
commit 75df8db438

View File

@ -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)