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)
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]
}
isAppManagerUid := tokenverify.IsAppManagerUid(ctx)
opMember := memberMap[opUserID]
for _, userID := range req.KickedUserIDs {
if _, ok := memberMap[userID]; !ok {
member, ok := memberMap[userID]
if !ok {
return nil, errs.ErrUserIDNotFound.Wrap(userID)
}
}
if !tokenverify.IsAppManagerUid(ctx) {
member := memberMap[opUserID]
if member == nil {
return nil, errs.ErrNoPermission.Wrap(fmt.Sprintf("opUserID %s no in group", opUserID))
}
switch member.RoleLevel {
case constant.GroupOwner:
case constant.GroupAdmin:
for _, member := range members {
if member.UserID == opUserID {
continue
}
if member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin {
return nil, errs.ErrNoPermission.Wrap("userID:" + member.UserID)
}
if !isAppManagerUid {
if opMember == nil {
return nil, errs.ErrNoPermission.Wrap("opUserID no in group")
}
switch opMember.RoleLevel {
case constant.GroupOwner:
case constant.GroupAdmin:
if member.RoleLevel == constant.GroupOwner || member.RoleLevel == constant.GroupAdmin {
return nil, errs.ErrNoPermission.Wrap("group admins cannot remove the group owner and other admins")
}
case constant.GroupOrdinaryUsers:
return nil, errs.ErrNoPermission.Wrap("opUserID no permission")
default:
return nil, errs.ErrNoPermission.Wrap("opUserID roleLevel unknown")
}
default:
return nil, errs.ErrNoPermission.Wrap("opUserID is OrdinaryUser")
}
}
userIDs, err := s.GroupDatabase.FindGroupMemberUserID(ctx, req.GroupID)