Exemplo n.º 1
0
        public override async Task OnConnectedAsync()
        {
            Permissions?totalPermissions = null;

            User user = await _userManager.GetUserAsync(Context.User);

            if (user != null)
            {
                IEnumerable <Role> roles = (await _userManager.GetRolesAsync(user))
                                           .Select(e => _roleManager.FindByNameAsync(e).Result);

                IEnumerable <Permissions> permissions = roles.Select(e => e.Permissions);
                totalPermissions = Permissions.NONE;

                foreach (Permissions permission in permissions)
                {
                    if (!totalPermissions.Value.HasFlag(permission))
                    {
                        totalPermissions |= permission;
                    }
                }
            }

            _permissionMemoryCache.AddClient(Context.ConnectionId, totalPermissions);

            await base.OnConnectedAsync();
        }
Exemplo n.º 2
0
        public void GetClientsTest(Permissions?permissions, string[] expectedClients)
        {
            //Arrange
            PermissionMemoryCache permissionMemoryCache = new PermissionMemoryCache();

            permissionMemoryCache.AddClient("client1", null);
            permissionMemoryCache.AddClient("client2", null);
            permissionMemoryCache.AddClient("client3", Permissions.ALL);
            permissionMemoryCache.AddClient("client4", Permissions.CREATE_PROJECTS | Permissions.DELETE_PROJECTS);

            //Act
            var clients = permissionMemoryCache.GetClients(permissions);

            //Assert
            //we expect these clients
            Assert.Equal(expectedClients, clients);
        }
Exemplo n.º 3
0
        public void RemoveClientTest(string client)
        {
            //Arrange
            PermissionMemoryCache permissionMemoryCache = new PermissionMemoryCache();

            permissionMemoryCache.AddClient("client1", null);
            permissionMemoryCache.AddClient("client2", null);
            permissionMemoryCache.AddClient("client3", Permissions.ALL);
            permissionMemoryCache.AddClient("client4", Permissions.CREATE_PROJECTS | Permissions.DELETE_PROJECTS);

            //Act
            permissionMemoryCache.RemoveClient(client);

            //get all clients
            var clients = permissionMemoryCache.GetClients(null).ToList();

            //Assert
            //we expect these clients
            Assert.DoesNotContain(client, clients);
            Assert.Equal(3, clients.Count);
        }