diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs index 9a2f70d..2e530ae 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.CharaData.cs @@ -284,20 +284,20 @@ public partial class MareHub { var individualGroups = charaData.AllowedIndividiuals.Where(k => k.AllowedUser == null).ToList(); var allowedGroups = updateDto.AllowedGroups.ToList(); - foreach (var user in updateDto.AllowedGroups) + foreach (var group in updateDto.AllowedGroups) { - if (charaData.AllowedIndividiuals.Any(k => k.AllowedGroup != null && (string.Equals(k.AllowedGroup.GID, user, StringComparison.Ordinal) || string.Equals(k.AllowedGroup.Alias, user, StringComparison.Ordinal)))) + if (charaData.AllowedIndividiuals.Any(k => k.AllowedGroup != null && (string.Equals(k.AllowedGroup.GID, group, StringComparison.Ordinal) || string.Equals(k.AllowedGroup.Alias, group, StringComparison.Ordinal)))) { continue; } else { - var dbUser = await DbContext.Groups.SingleOrDefaultAsync(u => u.GID == user || u.Alias == user).ConfigureAwait(false); - if (dbUser != null) + var groupUser = await DbContext.GroupPairs.Include(u => u.Group).SingleOrDefaultAsync(u => (u.Group.GID == group || u.Group.Alias == group) && u.GroupUserUID == UserUID).ConfigureAwait(false); + if (groupUser != null) { charaData.AllowedIndividiuals.Add(new CharaDataAllowance() { - AllowedGroup = dbUser, + AllowedGroup = groupUser.Group, Parent = charaData }); } diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs index 0a60d31..45614bc 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs @@ -234,6 +234,9 @@ public partial class MareHub } } + var sharedData = await DbContext.CharaDataAllowances.Where(u => u.AllowedGroup != null && u.AllowedGroupGID == dto.GID && u.ParentUploaderUID == userUid).ToListAsync().ConfigureAwait(false); + DbContext.CharaDataAllowances.RemoveRange(sharedData); + await DbContext.SaveChangesAsync().ConfigureAwait(false); _logger.LogCallInfo(MareHubLogger.Args(dto, "Success")); diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Groups.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Groups.cs index bd8f4e9..fdb635b 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Groups.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Groups.cs @@ -135,6 +135,9 @@ public partial class MareHub var allUserPairs = await GetAllPairInfo(pair.GroupUserUID).ConfigureAwait(false); + var sharedData = await DbContext.CharaDataAllowances.Where(u => u.AllowedGroup != null && u.AllowedGroupGID == dto.GID && u.ParentUploaderUID == pair.GroupUserUID).ToListAsync().ConfigureAwait(false); + DbContext.CharaDataAllowances.RemoveRange(sharedData); + foreach (var groupUserPair in groupPairs.Where(p => !string.Equals(p.GroupUserUID, pair.GroupUserUID, StringComparison.Ordinal))) { await UserGroupLeave(pair, pairIdent, allUserPairs, pair.GroupUserUID).ConfigureAwait(false); @@ -576,6 +579,9 @@ public partial class MareHub var groupPairs = DbContext.GroupPairs.Where(p => p.GroupGID == group.GID).AsNoTracking().ToList(); await Clients.Users(groupPairs.Select(p => p.GroupUserUID)).Client_GroupPairLeft(dto).ConfigureAwait(false); + var sharedData = await DbContext.CharaDataAllowances.Where(u => u.AllowedGroup != null && u.AllowedGroupGID == dto.GID && u.ParentUploaderUID == dto.UID).ToListAsync().ConfigureAwait(false); + DbContext.CharaDataAllowances.RemoveRange(sharedData); + await DbContext.SaveChangesAsync().ConfigureAwait(false); var userIdent = await GetUserIdent(dto.User.UID).ConfigureAwait(false);