mirror of
https://github.com/bitwarden/server.git
synced 2025-02-19 02:21:21 +01:00
Added push notification for when Collection management settings have been changed. (#5230)
This commit is contained in:
parent
e754ae4729
commit
ced4870309
@ -802,6 +802,11 @@ public class OrganizationService : IOrganizationService
|
|||||||
Description = organization.DisplayBusinessName()
|
Description = organization.DisplayBusinessName()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (eventType == EventType.Organization_CollectionManagement_Updated)
|
||||||
|
{
|
||||||
|
await _pushNotificationService.PushSyncOrganizationCollectionManagementSettingsAsync(organization);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateTwoFactorProviderAsync(Organization organization, TwoFactorProviderType type)
|
public async Task UpdateTwoFactorProviderAsync(Organization organization, TwoFactorProviderType type)
|
||||||
|
@ -26,4 +26,5 @@ public enum PushType : byte
|
|||||||
|
|
||||||
SyncOrganizations = 17,
|
SyncOrganizations = 17,
|
||||||
SyncOrganizationStatusChanged = 18,
|
SyncOrganizationStatusChanged = 18,
|
||||||
|
SyncOrganizationCollectionSettingChanged = 19,
|
||||||
}
|
}
|
||||||
|
@ -56,3 +56,10 @@ public class OrganizationStatusPushNotification
|
|||||||
public Guid OrganizationId { get; set; }
|
public Guid OrganizationId { get; set; }
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class OrganizationCollectionManagementPushNotification
|
||||||
|
{
|
||||||
|
public Guid OrganizationId { get; init; }
|
||||||
|
public bool LimitCollectionCreation { get; init; }
|
||||||
|
public bool LimitCollectionDeletion { get; init; }
|
||||||
|
}
|
||||||
|
@ -238,6 +238,19 @@ public class NotificationHubPushNotificationService : IPushNotificationService
|
|||||||
await SendPayloadToOrganizationAsync(organization.Id, PushType.SyncOrganizationStatusChanged, message, false);
|
await SendPayloadToOrganizationAsync(organization.Id, PushType.SyncOrganizationStatusChanged, message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization) =>
|
||||||
|
await SendPayloadToOrganizationAsync(
|
||||||
|
organization.Id,
|
||||||
|
PushType.SyncOrganizationCollectionSettingChanged,
|
||||||
|
new OrganizationCollectionManagementPushNotification
|
||||||
|
{
|
||||||
|
OrganizationId = organization.Id,
|
||||||
|
LimitCollectionCreation = organization.LimitCollectionCreation,
|
||||||
|
LimitCollectionDeletion = organization.LimitCollectionDeletion
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
private string GetContextIdentifier(bool excludeCurrentContext)
|
private string GetContextIdentifier(bool excludeCurrentContext)
|
||||||
{
|
{
|
||||||
if (!excludeCurrentContext)
|
if (!excludeCurrentContext)
|
||||||
|
@ -233,4 +233,12 @@ public class AzureQueuePushNotificationService : IPushNotificationService
|
|||||||
await SendMessageAsync(PushType.SyncOrganizationStatusChanged, message, false);
|
await SendMessageAsync(PushType.SyncOrganizationStatusChanged, message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization) =>
|
||||||
|
await SendMessageAsync(PushType.SyncOrganizationCollectionSettingChanged,
|
||||||
|
new OrganizationCollectionManagementPushNotification
|
||||||
|
{
|
||||||
|
OrganizationId = organization.Id,
|
||||||
|
LimitCollectionCreation = organization.LimitCollectionCreation,
|
||||||
|
LimitCollectionDeletion = organization.LimitCollectionDeletion
|
||||||
|
}, false);
|
||||||
}
|
}
|
||||||
|
@ -29,4 +29,5 @@ public interface IPushNotificationService
|
|||||||
Task SendPayloadToOrganizationAsync(string orgId, PushType type, object payload, string identifier,
|
Task SendPayloadToOrganizationAsync(string orgId, PushType type, object payload, string identifier,
|
||||||
string deviceId = null);
|
string deviceId = null);
|
||||||
Task PushSyncOrganizationStatusAsync(Organization organization);
|
Task PushSyncOrganizationStatusAsync(Organization organization);
|
||||||
|
Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization);
|
||||||
}
|
}
|
||||||
|
@ -151,6 +151,12 @@ public class MultiServicePushNotificationService : IPushNotificationService
|
|||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization)
|
||||||
|
{
|
||||||
|
PushToServices(s => s.PushSyncOrganizationCollectionManagementSettingsAsync(organization));
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
private void PushToServices(Func<IPushNotificationService, Task> pushFunc)
|
private void PushToServices(Func<IPushNotificationService, Task> pushFunc)
|
||||||
{
|
{
|
||||||
if (_services != null)
|
if (_services != null)
|
||||||
|
@ -94,6 +94,8 @@ public class NoopPushNotificationService : IPushNotificationService
|
|||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization) => Task.CompletedTask;
|
||||||
|
|
||||||
public Task PushAuthRequestAsync(AuthRequest authRequest)
|
public Task PushAuthRequestAsync(AuthRequest authRequest)
|
||||||
{
|
{
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
|
@ -241,4 +241,13 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService
|
|||||||
|
|
||||||
await SendMessageAsync(PushType.SyncOrganizationStatusChanged, message, false);
|
await SendMessageAsync(PushType.SyncOrganizationStatusChanged, message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization) =>
|
||||||
|
await SendMessageAsync(PushType.SyncOrganizationCollectionSettingChanged,
|
||||||
|
new OrganizationCollectionManagementPushNotification
|
||||||
|
{
|
||||||
|
OrganizationId = organization.Id,
|
||||||
|
LimitCollectionCreation = organization.LimitCollectionCreation,
|
||||||
|
LimitCollectionDeletion = organization.LimitCollectionDeletion
|
||||||
|
}, false);
|
||||||
}
|
}
|
||||||
|
@ -264,4 +264,17 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti
|
|||||||
|
|
||||||
await SendPayloadToOrganizationAsync(organization.Id, PushType.SyncOrganizationStatusChanged, message, false);
|
await SendPayloadToOrganizationAsync(organization.Id, PushType.SyncOrganizationStatusChanged, message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task PushSyncOrganizationCollectionManagementSettingsAsync(Organization organization) =>
|
||||||
|
await SendPayloadToOrganizationAsync(
|
||||||
|
organization.Id,
|
||||||
|
PushType.SyncOrganizationCollectionSettingChanged,
|
||||||
|
new OrganizationCollectionManagementPushNotification
|
||||||
|
{
|
||||||
|
OrganizationId = organization.Id,
|
||||||
|
LimitCollectionCreation = organization.LimitCollectionCreation,
|
||||||
|
LimitCollectionDeletion = organization.LimitCollectionDeletion
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,13 @@ public static class HubHelpers
|
|||||||
await hubContext.Clients.Group($"Organization_{orgStatusNotification.Payload.OrganizationId}")
|
await hubContext.Clients.Group($"Organization_{orgStatusNotification.Payload.OrganizationId}")
|
||||||
.SendAsync("ReceiveMessage", orgStatusNotification, cancellationToken);
|
.SendAsync("ReceiveMessage", orgStatusNotification, cancellationToken);
|
||||||
break;
|
break;
|
||||||
|
case PushType.SyncOrganizationCollectionSettingChanged:
|
||||||
|
var organizationCollectionSettingsChangedNotification =
|
||||||
|
JsonSerializer.Deserialize<PushNotificationData<OrganizationStatusPushNotification>>(
|
||||||
|
notificationJson, _deserializerOptions);
|
||||||
|
await hubContext.Clients.Group($"Organization_{organizationCollectionSettingsChangedNotification.Payload.OrganizationId}")
|
||||||
|
.SendAsync("ReceiveMessage", organizationCollectionSettingsChangedNotification, cancellationToken);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user