public AuthenticablePrincipal AddRoleMember(AddSecurityRoleMemberModel model, ClaimsPrincipal user)
        {
            authorizationLogic.IsAuthorizedThrowsException(AuthorizationScopes.ManageRoles, user, model, EventCategory.RoleManagementAddMember);

            AuthenticablePrincipal principal = configurationRepository.Get <AuthenticablePrincipal>(model.MemberId);

            if (principal == null)
            {
                throw new ReferencedObjectDoesNotExistException("Specified member id was not found. No changes have been made.");
            }

            SecurityRole role = configurationRepository.Get <SecurityRole>(model.RoleId);

            if (role == null)
            {
                throw new ReferencedObjectDoesNotExistException("Specified role id was not found. No changes have been made.");
            }

            if (role.Member == null)
            {
                role.Member = new List <Guid>();
            }

            role.Member.Add(principal.Id);
            configurationRepository.Update <SecurityRole>(role);

            return(principal);
        }
        public void RoleManagementLogic_AddRoleMember_UserNotFound_ThrowsReferencedObjectDoesNotExistException()
        {
            AddSecurityRoleMemberModel model = new AddSecurityRoleMemberModel()
            {
                MemberId = Guid.NewGuid(),
                RoleId   = Guid.NewGuid()
            };

            ClaimsPrincipal user = new ClaimsPrincipal();
            Mock <IConfigurationRepository> configurationRepository = new Mock <IConfigurationRepository>();

            configurationRepository.Setup(x => x.Get <AuthenticablePrincipal>(model.MemberId)).Returns((AuthenticablePrincipal)null);

            RoleManagementLogic roleManagementLogic = new RoleManagementLogic(configurationRepository.Object, new AuthorizeInitialSetup(configurationRepository.Object));

            roleManagementLogic.AddRoleMember(model, user);
        }
        public void RoleManagementLogic_AddRoleMember_Unauthorized_ThrowsUnauthorizedAccessException()
        {
            ClaimsPrincipal            user  = new ClaimsPrincipal();
            AddSecurityRoleMemberModel model = new AddSecurityRoleMemberModel()
            {
                MemberId = Guid.NewGuid(),
                RoleId   = Guid.NewGuid()
            };

            Mock <IAuthorizationLogic> authorizationLogic = new Mock <IAuthorizationLogic>();

            authorizationLogic.Setup(x => x.IsAuthorizedThrowsException(AuthorizationScopes.ManageRoles, user, It.IsAny <ILoggableEntity>(), It.IsAny <EventCategory>())).Throws(new UnauthorizedAccessException());

            Mock <IConfigurationRepository> configurationRepository = new Mock <IConfigurationRepository>();

            configurationRepository.Setup(x => x.Get <AuthenticablePrincipal>(model.MemberId)).Returns(new AuthenticablePrincipal());
            configurationRepository.Setup(x => x.Get <SecurityRole>(model.RoleId)).Returns((SecurityRole)null);

            RoleManagementLogic roleManagementLogic = new RoleManagementLogic(configurationRepository.Object, authorizationLogic.Object);

            roleManagementLogic.AddRoleMember(model, user);
        }
 public JsonResult AddRoleMember([FromRoute] AddSecurityRoleMemberModel model)
 {
     return(http.RespondSuccess(roleManagement.AddRoleMember(model, User)));
 }