1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-29 00:32:18 -05:00
bitwarden/src/Notifications/NotificationsHub.cs
2019-01-25 00:01:24 -05:00

51 lines
1.7 KiB
C#

using System;
using System.Threading.Tasks;
using Bit.Core;
using Microsoft.AspNetCore.Authorization;
namespace Bit.Notifications
{
[Authorize("Application")]
public class NotificationsHub : Microsoft.AspNetCore.SignalR.Hub
{
private readonly ConnectionCounter _connectionCounter;
private readonly GlobalSettings _globalSettings;
public NotificationsHub(ConnectionCounter connectionCounter, GlobalSettings globalSettings)
{
_connectionCounter = connectionCounter;
_globalSettings = globalSettings;
}
public override async Task OnConnectedAsync()
{
var currentContext = new CurrentContext();
currentContext.Build(Context.User, _globalSettings);
if(currentContext.Organizations != null)
{
foreach(var org in currentContext.Organizations)
{
await Groups.AddToGroupAsync(Context.ConnectionId, $"Organization_{org.Id}");
}
}
_connectionCounter.Increment();
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
var currentContext = new CurrentContext();
currentContext.Build(Context.User, _globalSettings);
if(currentContext.Organizations != null)
{
foreach(var org in currentContext.Organizations)
{
await Groups.RemoveFromGroupAsync(Context.ConnectionId, $"Organization_{org.Id}");
}
}
_connectionCounter.Decrement();
await base.OnDisconnectedAsync(exception);
}
}
}