Пример #1
0
        public IActionResult RemoveUserFromRole([FromBody] RemoveUserFromRoleRequest request)
        {
            var client = GetRoleClient();

            client.RemoveUserFromRole(request.UserId, request.RoleId);
            return(AjaxOkResponse());
        }
Пример #2
0
        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>();
        }
Пример #3
0
        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);
            }
        }
Пример #5
0
        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());
        }
Пример #6
0
        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);
        }
Пример #7
0
        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>();
        }