public IActionResult RemoveUserFromRole([FromBody] RemoveUserFromRoleRequest request) { var client = GetRoleClient(); client.RemoveUserFromRole(request.UserId, request.RoleId); return(AjaxOkResponse()); }
public async Task RemoveUserFromRole_WithInvalidRole_ShouldThrowNotFoundRpcException() { // Arrange var users = TestData.FileStorage.GetUsers(); var user = users.First(); var host = TestHost.WithClaimsFromBearerAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString())); host.Server.CleanupDbContext(); await host.Server.UsingScopeAsync( async scope => { var userService = scope.GetRequiredService <IUserService>(); var result = await userService.CreateAsync(user, "Pass@word1"); result.Succeeded.Should().BeTrue(); }); var request = new RemoveUserFromRoleRequest { UserId = user.Id.ToString(), RoleName = "test" }; var client = new IdentityService.IdentityServiceClient(host.CreateChannel()); // Act Assert var func = new Func <Task>(async() => await client.RemoveUserFromRoleAsync(request)); func.Should().Throw <RpcException>(); }
public async Task RemoveUserFromRole_ShouldBeOfTypeRemoveUserFromRoleResponse() { // Arrange var users = TestData.FileStorage.GetUsers(); var user = users.First(); var host = TestHost.WithClaimsFromBearerAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString())); host.Server.CleanupDbContext(); await host.Server.UsingScopeAsync( async scope => { var userService = scope.GetRequiredService <IUserService>(); var result = await userService.CreateAsync(user, "Pass@word1"); result.Succeeded.Should().BeTrue(); }); await host.Server.UsingScopeAsync( async scope => { var roleService = scope.GetRequiredService <IRoleService>(); var result = await roleService.CreateAsync( new Role { Name = AppRoles.Admin }); result.Succeeded.Should().BeTrue(); }); await host.Server.UsingScopeAsync( async scope => { var userService = scope.GetRequiredService <IUserService>(); var result = await userService.AddToRoleAsync(await userService.FindByIdAsync(user.Id.ToString()), AppRoles.Admin); result.Succeeded.Should().BeTrue(); }); var request = new RemoveUserFromRoleRequest { UserId = user.Id.ToString(), RoleName = AppRoles.Admin }; var client = new IdentityService.IdentityServiceClient(host.CreateChannel()); // Act var response = await client.RemoveUserFromRoleAsync(request); // Assert response.Should().BeOfType <RemoveUserFromRoleResponse>(); }
public ActionResult RemoveUserFromRole(RemoveUserFromRoleRequest req) { try { string roleName = req.roleName; int userId = req.userId; var cookie = HttpContext.Current.Request.Cookies["sid"]; if (cookie == null) { throw new WrongOrExpiredToken(); } string token = HttpContext.Current.Request.Cookies["sid"].Value; if (String.IsNullOrWhiteSpace(token)) { throw new WrongOrExpiredToken(); } UserInfoExtended info = _authProvider.AuthenticateByToken(token); if (!info.Roles.Contains("ADMIN")) { throw new UnauthorizedAccessException("User has to be admin to perform this action."); } _mngr.RemoveUserFromRole(roleName, userId); _ctx.OutgoingResponse.StatusCode = HttpStatusCode.OK; return(new ActionResult { Message = "User is removed from specified role." }); } catch (UnauthorizedAccessException e) { var myf = new MyFault { Details = e.Message }; throw new WebFaultException <MyFault>(myf, HttpStatusCode.Unauthorized); } catch (SSOBaseException e) { var myf = new MyFault { Details = e.Message }; throw new WebFaultException <MyFault>(myf, e.StatusCode); } catch (Exception e) { var myf = new MyFault { Details = "There has been an error while RemoveUserFromRole action." }; throw new WebFaultException <MyFault>(myf, HttpStatusCode.InternalServerError); } }
public async Task <IActionResult> RemoveUserFromRole(RemoveUserFromRoleRequest request) { var user = await _userManager.FindByIdAsync(request.UserId.ToString()); if (user == null) { return(NotFound($"User with id: {request.UserId}, doesn't exist.")); } var role = await _roleManager.FindByIdAsync(request.RoleId.ToString()); var identityResult = await _userManager.RemoveFromRoleAsync(user, role.Name); if (!identityResult.Succeeded) { return(BadRequest(identityResult.Errors)); } return(Ok()); }
public override async Task <RemoveUserFromRoleResponse> RemoveUserFromRole(RemoveUserFromRoleRequest request, ServerCallContext context) { var user = await _userService.FindByIdAsync(request.UserId); if (user == null) { throw context.NotFoundRpcException($"The user '{request.UserId}' wasn't found."); } if (!await _userService.IsInRoleAsync(user, request.RoleName)) { var existingRole = await _roleService.FindByNameAsync(request.RoleName); throw context.NotFoundRpcException($"The role '{existingRole.Name}' already exists. (roleId=${existingRole.Id})"); } var result = await _userService.RemoveFromRoleAsync(user, request.RoleName); if (result.Succeeded) { var role = await _roleService.FindByNameAsync(request.RoleName); var detail = $"The role '{role.Name}' as been created. (roleId=${role.Id})"; var response = new RemoveUserFromRoleResponse { Role = new RoleDto { Id = role.Id.ToString(), Name = role.Name } }; return(context.Ok(response, detail)); } throw context.FailedPreconditionRpcException(result, string.Empty); }
public void RemoveUserFromRole_WithUserNull_ShouldThrowNotFoundRpcException() { // Arrange var users = TestData.FileStorage.GetUsers(); var user = users.First(); var host = TestHost.WithClaimsFromBearerAuthentication(new Claim(JwtClaimTypes.Subject, user.Id.ToString())); host.Server.CleanupDbContext(); var request = new RemoveUserFromRoleRequest { UserId = user.Id.ToString(), RoleName = "test" }; var client = new IdentityService.IdentityServiceClient(host.CreateChannel()); // Act Assert var func = new Func <Task>(async() => await client.RemoveUserFromRoleAsync(request)); func.Should().Throw <RpcException>(); }