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