add prune to groups
update submodule allow moderator to check for inactive user count allow moderators to prune do not allow to prune owner
This commit is contained in:
2
MareAPI
2
MareAPI
Submodule MareAPI updated: 126b54e552...1163f38f70
@@ -410,6 +410,37 @@ public partial class MareHub
|
|||||||
await UserLeaveGroup(dto, UserUID).ConfigureAwait(false);
|
await UserLeaveGroup(dto, UserUID).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Policy = "Identified")]
|
||||||
|
public async Task<int> GroupPrune(GroupDto dto, int days, bool execute)
|
||||||
|
{
|
||||||
|
_logger.LogCallInfo(MareHubLogger.Args(dto, days, execute));
|
||||||
|
|
||||||
|
var (hasRights, group) = await TryValidateGroupModeratorOrOwner(dto.Group.GID).ConfigureAwait(false);
|
||||||
|
if (!hasRights) return -1;
|
||||||
|
|
||||||
|
var allGroupUsers = await _dbContext.GroupPairs.Include(p => p.GroupUser).Include(p => p.Group)
|
||||||
|
.Where(g => g.GroupGID == dto.Group.GID)
|
||||||
|
.ToListAsync().ConfigureAwait(false);
|
||||||
|
var usersToPrune = allGroupUsers.Where(p => !p.IsPinned && !p.IsModerator
|
||||||
|
&& p.GroupUserUID != UserUID
|
||||||
|
&& p.Group.OwnerUID != p.GroupUserUID
|
||||||
|
&& p.GroupUser.LastLoggedIn.AddDays(days) < DateTime.UtcNow);
|
||||||
|
|
||||||
|
if (!execute) return usersToPrune.Count();
|
||||||
|
|
||||||
|
_dbContext.GroupPairs.RemoveRange(usersToPrune);
|
||||||
|
|
||||||
|
foreach (var pair in usersToPrune)
|
||||||
|
{
|
||||||
|
await Clients.Users(allGroupUsers.Where(p => !usersToPrune.Contains(p)).Select(g => g.GroupUserUID))
|
||||||
|
.Client_GroupPairLeft(new GroupPairDto(dto.Group, pair.GroupUser.ToUserData())).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
await _dbContext.SaveChangesAsync().ConfigureAwait(false);
|
||||||
|
|
||||||
|
return usersToPrune.Count();
|
||||||
|
}
|
||||||
|
|
||||||
[Authorize(Policy = "Identified")]
|
[Authorize(Policy = "Identified")]
|
||||||
public async Task GroupRemoveUser(GroupPairDto dto)
|
public async Task GroupRemoveUser(GroupPairDto dto)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user