1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-13 09:08:17 -05:00
* 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:
Matt Gibson 2022-11-24 11:25:16 -05:00 committed by GitHub
parent 691c5a9e98
commit 0bcd8d0b41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 31 additions and 22 deletions

View File

@ -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);

View File

@ -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)

View File

@ -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);
}

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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;
}

View File

@ -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);
}

View File

@ -22,6 +22,15 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Notifications-SelfHost": {
"commandName": "Project",
"launchBrowser": false,
"applicationUrl": "http://localhost:61841",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"developSelfHosted": "true"
}
}
}
}
}