mirror of
https://github.com/bitwarden/server.git
synced 2025-04-13 09:08:17 -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 PushSyncOrgKeysAsync(Guid userId);
|
||||
Task PushSyncSettingsAsync(Guid userId);
|
||||
Task PushLogOutAsync(Guid userId);
|
||||
Task PushLogOutAsync(Guid userId, bool excludeCurrentContextFromPush = false);
|
||||
Task PushSyncSendCreateAsync(Send send);
|
||||
Task PushSyncSendUpdateAsync(Send send);
|
||||
Task PushSyncSendDeleteAsync(Send send);
|
||||
|
@ -114,12 +114,12 @@ public class AzureQueuePushNotificationService : IPushNotificationService
|
||||
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
|
||||
{
|
||||
@ -127,7 +127,7 @@ public class AzureQueuePushNotificationService : IPushNotificationService
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
await SendMessageAsync(type, message, false);
|
||||
await SendMessageAsync(type, message, excludeCurrentContext);
|
||||
}
|
||||
|
||||
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
||||
|
@ -115,9 +115,9 @@ public class MultiServicePushNotificationService : IPushNotificationService
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -125,12 +125,12 @@ public class NotificationHubPushNotificationService : IPushNotificationService
|
||||
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
|
||||
{
|
||||
@ -138,7 +138,7 @@ public class NotificationHubPushNotificationService : IPushNotificationService
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
await SendPayloadToUserAsync(userId, type, message, false);
|
||||
await SendPayloadToUserAsync(userId, type, message, excludeCurrentContext);
|
||||
}
|
||||
|
||||
public async Task PushSyncSendCreateAsync(Send send)
|
||||
|
@ -121,12 +121,12 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService
|
||||
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
|
||||
{
|
||||
@ -134,7 +134,7 @@ public class NotificationsApiPushNotificationService : BaseIdentityClientService
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
await SendMessageAsync(type, message, false);
|
||||
await SendMessageAsync(type, message, excludeCurrentContext);
|
||||
}
|
||||
|
||||
public async Task PushAuthRequestAsync(AuthRequest authRequest)
|
||||
|
@ -121,12 +121,12 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti
|
||||
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
|
||||
{
|
||||
@ -134,7 +134,7 @@ public class RelayPushNotificationService : BaseIdentityClientService, IPushNoti
|
||||
Date = DateTime.UtcNow
|
||||
};
|
||||
|
||||
await SendPayloadToUserAsync(userId, type, message, false);
|
||||
await SendPayloadToUserAsync(userId, type, message, excludeCurrentContext);
|
||||
}
|
||||
|
||||
public async Task PushSyncSendCreateAsync(Send send)
|
||||
|
@ -618,7 +618,7 @@ public class UserService : UserManager<User>, IUserService, IDisposable
|
||||
|
||||
await _userRepository.ReplaceAsync(user);
|
||||
await _eventService.LogUserEventAsync(user.Id, EventType.User_ChangedPassword);
|
||||
await _pushService.PushLogOutAsync(user.Id);
|
||||
await _pushService.PushLogOutAsync(user.Id, true);
|
||||
|
||||
return IdentityResult.Success;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public class NoopPushNotificationService : IPushNotificationService
|
||||
return Task.FromResult(0);
|
||||
}
|
||||
|
||||
public Task PushLogOutAsync(Guid userId)
|
||||
public Task PushLogOutAsync(Guid userId, bool excludeCurrentContext = false)
|
||||
{
|
||||
return Task.FromResult(0);
|
||||
}
|
||||
|
@ -22,6 +22,15 @@
|
||||
"environmentVariables": {
|
||||
"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