예제 #1
0
        public async Task <Result> Create(string username, string vhost,
                                          Action <UserPermissionsConfigurator> configurator, CancellationToken cancellationToken = default)
        {
            cancellationToken.RequestCanceled();

            var impl = new UserPermissionsConfiguratorImpl();

            configurator?.Invoke(impl);

            UserPermissionsRequest request = new UserPermissionsRequest(impl.ConfigurePattern, impl.WritePattern, impl.ReadPattern);

            Debug.Assert(request != null);

            var errors = new List <Error>();

            if (string.IsNullOrWhiteSpace(username))
            {
                errors.Add(new ErrorImpl("The username and/or password is missing."));
            }

            if (string.IsNullOrWhiteSpace(vhost))
            {
                errors.Add(new ErrorImpl("The name of the virtual host is missing."));
            }

            string url = $"api/permissions/{vhost.ToSanitizedName()}/{username}";

            if (errors.Any())
            {
                return(new FaultedResult(new DebugInfoImpl(url, request.ToJsonString(Deserializer.Options), errors)));
            }

            return(await PutRequest(url, request, cancellationToken).ConfigureAwait(false));
        }
예제 #2
0
        public async Task Verify_cannot_create_user_permissions5()
        {
            var services = GetContainerBuilder().BuildServiceProvider();
            var result   = await services.GetService <IBrokerObjectFactory>()
                           .Object <UserPermissions>()
                           .Create(string.Empty, string.Empty, x =>
            {
                x.UsingConfigurePattern(".*");
                x.UsingReadPattern(".*");
                x.UsingWritePattern(".*");
            });

            Assert.Multiple(() =>
            {
                Assert.IsTrue(result.HasFaulted);
                Assert.AreEqual(2, result.DebugInfo.Errors.Count);
                Assert.IsNotNull(result.DebugInfo);

                UserPermissionsRequest request = result.DebugInfo.Request.ToObject <UserPermissionsRequest>();

                Assert.AreEqual(".*", request.Configure);
                Assert.AreEqual(".*", request.Write);
                Assert.AreEqual(".*", request.Read);
            });
        }
예제 #3
0
        public override async Task <UserPermissionsResponse> GetUserPermissions(UserPermissionsRequest request, ServerCallContext context)
        {
            var permissions = await messageOrchestrator.Process <UserPermissionsQuery, IEnumerable <string> >(request, context);

            var response = new UserPermissionsResponse();

            response.Permissions.AddRange(permissions);

            return(response);
        }
        public void GetUserPermissions_AdminUser_ShouldReturnDeletePermission()
        {
            // Arrange
            var userPermissionsReq = new UserPermissionsRequest {
                UserId = DomainModule.AdminId.ToString()
            };

            // Act
            var response = this.Client.GetUserPermissions(userPermissionsReq);

            // Assert
            Assert.NotNull(response.Permissions);
            response.Permissions.AsEnumerable().ShouldContain("DELETE");
        }
        public void GetUserPermissions_RandomUser_ShouldReturnReadPermissions()
        {
            // Arrange
            var userPermissionsReq = new UserPermissionsRequest {
                UserId = Guid.NewGuid().ToString()
            };

            // Act
            var response = this.Client.GetUserPermissions(userPermissionsReq);

            // Assert
            Assert.NotNull(response.Permissions);
            response.Permissions.AsEnumerable().ShouldContain("READ");
            response.Permissions.AsEnumerable().ShouldNotContain("DELETE");
        }
예제 #6
0
    public override async Task <GrpcResponse> GetCurrenUserPermissions(UserPermissionsRequest request, ServerCallContext context)
    {
        var grpcResponse = new GrpcResponse()
        {
            IsSuccessStatusCode = true
        };

        if (request.UserId != _userContext.Id)
        {
            grpcResponse.IsSuccessStatusCode = false;
            grpcResponse.Error = @"request.UserId != _userContext.Id";
            return(grpcResponse);
        }
        var result = await _userService.GetPermissionsAsync(_userContext.Id, request.RequestPermissions, request.UserBelongsRoleIds);

        result ??= new List <string>();
        var response = new UserPermissionsReply();

        response.Permissions.AddRange(result);
        grpcResponse.Content = Any.Pack(response);
        return(grpcResponse);
    }