mirror of
https://github.com/bitwarden/server.git
synced 2025-04-14 17:48:12 -05:00
Ps 1904 (#2439)
* Add self host notification launch settings * Exclude current context from push for password updates This is needed to allow the current context to process a key rotation if one is being done. Does not change any other call to `PushLogOut`. * Revert inverted exclude logic This exclude is referring to exempting the requesting client from the notification push.
This commit is contained in:
parent
691c5a9e98
commit
0bcd8d0b41
@ -15,7 +15,7 @@ public interface IPushNotificationService
|
|||||||
Task PushSyncVaultAsync(Guid userId);
|
Task PushSyncVaultAsync(Guid userId);
|
||||||
Task PushSyncOrgKeysAsync(Guid userId);
|
Task PushSyncOrgKeysAsync(Guid userId);
|
||||||
Task PushSyncSettingsAsync(Guid userId);
|
Task PushSyncSettingsAsync(Guid userId);
|
||||||
Task PushLogOutAsync(Guid userId);
|
Task PushLogOutAsync(Guid userId, bool excludeCurrentContextFromPush = false);
|
||||||
Task PushSyncSendCreateAsync(Send send);
|
Task PushSyncSendCreateAsync(Send send);
|
||||||
Task PushSyncSendUpdateAsync(Send send);
|
Task PushSyncSendUpdateAsync(Send send);
|
||||||
Task PushSyncSendDeleteAsync(Send send);
|
Task PushSyncSendDeleteAsync(Send send);
|
||||||
|
@ -114,12 +114,12 @@ public class AzureQueuePushNotificationService : IPushNotificationService
|
|||||||
await PushUserAsync(userId, PushType.SyncSettings);
|
await PushUserAsync(userId, PushType.SyncSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushLogOutAsync(Guid userId)
|
public async Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
await PushUserAsync(userId, PushType.LogOut);
|
await PushUserAsync(userId, PushType.LogOut, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PushUserAsync(Guid userId, PushType type)
|
private async Task PushUserAsync(Guid userId, PushType type, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
var message = new UserPushNotification
|
var message = new UserPushNotification
|
||||||
{
|
{
|
||||||
@ -127,7 +127,7 @@ public class AzureQueuePushNotificationService : IPushNotificationService
|
|||||||
Date = DateTime.UtcNow
|
Date = DateTime.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendMessageAsync(type, message, false);
|
await SendMessageAsync(type, message, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
||||||
|
@ -115,9 +115,9 @@ public class MultiServicePushNotificationService : IPushNotificationService
|
|||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task PushLogOutAsync(Guid userId)
|
public Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
PushToServices((s) => s.PushLogOutAsync(userId));
|
PushToServices((s) => s.PushLogOutAsync(userId, excludeCurrentContext));
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,12 +125,12 @@ public class NotificationHubPushNotificationService : IPushNotificationService
|
|||||||
await PushUserAsync(userId, PushType.SyncSettings);
|
await PushUserAsync(userId, PushType.SyncSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushLogOutAsync(Guid userId)
|
public async Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
await PushUserAsync(userId, PushType.LogOut);
|
await PushUserAsync(userId, PushType.LogOut, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PushUserAsync(Guid userId, PushType type)
|
private async Task PushUserAsync(Guid userId, PushType type, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
var message = new UserPushNotification
|
var message = new UserPushNotification
|
||||||
{
|
{
|
||||||
@ -138,7 +138,7 @@ public class NotificationHubPushNotificationService : IPushNotificationService
|
|||||||
Date = DateTime.UtcNow
|
Date = DateTime.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendPayloadToUserAsync(userId, type, message, false);
|
await SendPayloadToUserAsync(userId, type, message, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushSyncSendCreateAsync(Send send)
|
public async Task PushSyncSendCreateAsync(Send send)
|
||||||
|
@ -121,12 +121,12 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService
|
|||||||
await PushUserAsync(userId, PushType.SyncSettings);
|
await PushUserAsync(userId, PushType.SyncSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushLogOutAsync(Guid userId)
|
public async Task PushLogOutAsync(Guid userId, bool excludeCurrentContext)
|
||||||
{
|
{
|
||||||
await PushUserAsync(userId, PushType.LogOut);
|
await PushUserAsync(userId, PushType.LogOut, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PushUserAsync(Guid userId, PushType type)
|
private async Task PushUserAsync(Guid userId, PushType type, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
var message = new UserPushNotification
|
var message = new UserPushNotification
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService
|
|||||||
Date = DateTime.UtcNow
|
Date = DateTime.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendMessageAsync(type, message, false);
|
await SendMessageAsync(type, message, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
||||||
|
@ -121,12 +121,12 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti
|
|||||||
await PushUserAsync(userId, PushType.SyncSettings);
|
await PushUserAsync(userId, PushType.SyncSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushLogOutAsync(Guid userId)
|
public async Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
await PushUserAsync(userId, PushType.LogOut);
|
await PushUserAsync(userId, PushType.LogOut, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PushUserAsync(Guid userId, PushType type)
|
private async Task PushUserAsync(Guid userId, PushType type, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
var message = new UserPushNotification
|
var message = new UserPushNotification
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti
|
|||||||
Date = DateTime.UtcNow
|
Date = DateTime.UtcNow
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendPayloadToUserAsync(userId, type, message, false);
|
await SendPayloadToUserAsync(userId, type, message, excludeCurrentContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task PushSyncSendCreateAsync(Send send)
|
public async Task PushSyncSendCreateAsync(Send send)
|
||||||
|
@ -618,7 +618,7 @@ public class UserService : UserManager<User>, IUserService, IDisposable
|
|||||||
|
|
||||||
await _userRepository.ReplaceAsync(user);
|
await _userRepository.ReplaceAsync(user);
|
||||||
await _eventService.LogUserEventAsync(user.Id, EventType.User_ChangedPassword);
|
await _eventService.LogUserEventAsync(user.Id, EventType.User_ChangedPassword);
|
||||||
await _pushService.PushLogOutAsync(user.Id);
|
await _pushService.PushLogOutAsync(user.Id, true);
|
||||||
|
|
||||||
return IdentityResult.Success;
|
return IdentityResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ public class NoopPushNotificationService : IPushNotificationService
|
|||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task PushLogOutAsync(Guid userId)
|
public Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||||
{
|
{
|
||||||
return Task.FromResult(0);
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,15 @@
|
|||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"Notifications-SelfHost": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"launchBrowser": false,
|
||||||
|
"applicationUrl": "http://localhost:61841",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
|
"developSelfHosted": "true"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user