Ejemplo n.º 1
0
        /// <summary>
        /// 将指定的用户赋予特定的角色。
        /// </summary>
        /// <param name="user">用户实体。</param>
        /// <param name="role">角色实体。</param>
        /// <returns>用以表述用户及其角色之间关系的实体。</returns>
        public UserRole AssignRole(User user, Role role)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (role == null)
            {
                throw new ArgumentNullException("role");
            }
            UserRole userRole = userRoleRepository.Find(Specification <UserRole> .Eval(ur => ur.UserID == user.ID));

            if (userRole == null)
            {
                userRole = new UserRole(user.ID, role.ID);
                userRoleRepository.Add(userRole);
            }
            else
            {
                userRole.RoleID = role.ID;
                userRoleRepository.Update(userRole);
            }
            repositoryContext.Commit();
            return(userRole);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 删除用户。
 /// </summary>
 /// <param name="userDataObjects">需要删除的用户对象。</param>
 public void DeleteUsers(UserDataObjectList userDataObjects)
 {
     if (userDataObjects == null)
     {
         throw new ArgumentNullException("userDataObjects");
     }
     foreach (var userDataObject in userDataObjects)
     {
         User user = null;
         if (!IsEmptyGuidString(userDataObject.ID))
         {
             user = userRepository.GetByKey(new Guid(userDataObject.ID));
         }
         else if (!string.IsNullOrEmpty(userDataObject.UserName))
         {
             user = userRepository.GetUserByName(userDataObject.UserName);
         }
         else if (!string.IsNullOrEmpty(userDataObject.Email))
         {
             user = userRepository.GetUserByEmail(userDataObject.Email);
         }
         else
         {
             throw new ArgumentNullException("userDataObject", "Either ID, UserName or Email should be specified.");
         }
         var userRole = userRoleRepository.Find(Specification <UserRole> .Eval(ur => ur.UserID == user.ID));
         if (userRole != null)
         {
             userRoleRepository.Remove(userRole);
         }
         userRepository.Remove(user);
     }
     Context.Commit();
 }
Ejemplo n.º 3
0
        public async Task UpdateUserRole(string role, Guid userId, bool allow)
        {
            User user = await _userRepository.GetById(userId);

            if (user == null)
            {
                Notify("Usuário não encontrado");
                return;
            }
            var findRole = await _roleRepository.Find(r => r.Name.ToLower() == role.ToLower());

            if (!findRole.Any())
            {
                Notify($"A role {role} não foi encontrada.");
                return;
            }

            Guid roleId    = findRole.FirstOrDefault().Id;
            var  userRoles = await _repository.Find(e => e.UserId == userId && e.RoleId == roleId);

            if (!allow)
            {
                if (userRoles.Any())
                {
                    await _repository.Remove(userRoles.FirstOrDefault());
                }
            }
            else
            {
                if (!userRoles.Any())
                {
                    UserRoles newUserRole = new UserRoles()
                    {
                        RoleId = roleId,
                        UserId = userId
                    };

                    await _repository.Add(newUserRole);
                }
            }

            var userRolesList = await _repository.Find(r => r.UserId == userId);

            var claims = new Dictionary <string, object>();

            foreach (var item in userRolesList)
            {
                claims.Add(item.Role.Name, true);
            }

            await this.UpdateUserClaims(user.Id, claims);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 保存用户角色
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SaveUserRoleResponse SaveUserRole(SaveUserRoleRequest request)
        {
            var response = new SaveUserRoleResponse();

            if (request.Entity == null)
            {
                response.IsSuccess   = false;
                response.MessageCode = "-1";
                response.MessageText = "用户角色不能为空";
                return(response);
            }

            try
            {
                var entity = request.Entity.As <UserRolePo>();

                if (entity.Id == 0)
                {
                    if (_userRoleRepository.Any <UserRolePo>(e => e.IsValid == 1 && e.Name == entity.Name))
                    {
                        response.IsSuccess   = false;
                        response.MessageCode = "-1";
                        response.MessageText = "用户角色不能重复";
                        return(response);
                    }

                    EntityLogger.CreateEntity(entity);
                    entity.Id = _userRoleRepository.InsertReturnIdentity(entity);
                }
                else
                {
                    var entitytemp = _userRoleRepository.Find <UserRolePo>(e => e.IsValid == 1 && e.Id == entity.Id);

                    if (entitytemp == null)
                    {
                        throw new Exception("更新用户角色信息不存在");
                    }

                    EntityLogger.UpdateEntity(entity);
                    _userRoleRepository.UpdateIgnoreColumns(entity, e => new { e.IsValid, e.CreateTime, e.CreateUserId, });
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess   = false;
                response.MessageCode = "-1";
                response.MessageText = ex.ToString();
                LogManager.LogicLogger.ErrorFormat("保存用户角色出错:{0}", new { request, err = ex.ToString() }.ToJson());
            }
            return(response);
        }
Ejemplo n.º 5
0
        public async Task <bool> IsExist(Expression <Func <UserRoleModel, bool> > predicate)
        {
            var ret = await _userrole.Find(predicate).FirstOrDefaultAsync();

            if (ret == null)
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 6
0
        public void SetRoles(IUserRoleRepository repository, Guid userId, Guid tenantId, Guid? roleId, string handler)
        {
            var spec = Specification<UserRole>.Eval(u => u.UserId == userId)
                        .And(Specification<UserRole>.Eval(u => u.Role.TenantId == tenantId));

            var userRole = repository.Find(spec);
            if (userRole != null)
                repository.Remove(userRole);

            if (!roleId.HasValue)
                return;

            var addUserRole = new UserRole(userId, roleId.Value, handler);
            repository.Add(addUserRole);
        }
Ejemplo n.º 7
0
        public bool CheckUserPermision(string areaTitle, string controllerTitle, string actionTitle, int userId)
        {
            ApplicationAction actionResult;

            if (string.IsNullOrWhiteSpace(areaTitle))
            {
                actionResult = _actionRepository.GetAllIncluding(controller =>
                                                                 string.Equals(controller.Title, controllerTitle,
                                                                               StringComparison.CurrentCultureIgnoreCase) &&
                                                                 controller.ActionLevel == (int)ActionLevel.Controller)
                               .Data.Include(controller =>
                                             controller.Childs)
                               .SingleOrDefault(action => string.Equals(action.Title, actionTitle,
                                                                        StringComparison.CurrentCultureIgnoreCase) &&
                                                action.ActionLevel == (int)ActionLevel.Action);
            }
            else
            {
                actionResult = _actionRepository.GetAllIncluding(area =>
                                                                 string.Equals(area.Title, areaTitle,
                                                                               StringComparison.CurrentCultureIgnoreCase) &&
                                                                 area.ActionLevel == (int)ActionLevel.Area)
                               .Data.Include(area =>
                                             area.Childs)
                               .Where(controller => string.Equals(controller.Title, controllerTitle,
                                                                  StringComparison.CurrentCultureIgnoreCase) &&
                                      controller.ActionLevel == (int)ActionLevel.Controller)
                               .Include(controller =>
                                        controller.Childs)
                               .SingleOrDefault(action => string.Equals(action.Title, actionTitle,
                                                                        StringComparison.CurrentCultureIgnoreCase) &&
                                                action.ActionLevel == (int)ActionLevel.Action);
            }

            var actionRoles = _roleActionRepository.FindBy(ur => ur.ActionId == actionResult.Id);

            var userRoles = new List <DbResult <UserRole> >();

            foreach (var actionRole in actionRoles.Data)
            {
                var userRole = _userRoleRepository.Find(ur => ur.RoleId == actionRole.RoleId);

                userRoles.Add(userRole);
            }

            return(userRoles.Any(e => e.Data.UserId == userId));
        }
Ejemplo n.º 8
0
        public void AssignPower(TB_USERS oUser, TB_ROLE oRole)
        {
            if (oUser == null || oRole == null)
            {
                return;
            }
            var oUserRole = _userroleRepository.Find(x => x.USER_ID == oUser.USER_ID && x.ROLE_ID == oRole.ROLE_ID).FirstOrDefault();

            if (oUserRole == null)
            {
                oUserRole         = new TB_USERROLE();
                oUserRole.ROLE_ID = oRole.ROLE_ID;
                oUserRole.USER_ID = oUser.USER_ID;
                oUserRole.ID      = Guid.NewGuid().ToString();
                _userroleRepository.Insert(oUserRole);
            }
        }
Ejemplo n.º 9
0
        public List <RoleDto> GetUserRoles(int userId)
        {
            List <Role>     roles     = new List <Role>();
            List <UserRole> userRoles = UserRoleRepository.Find(ur => ur.UserId == userId);

            if (userRoles.Count != 0)
            {
                foreach (UserRole userRole in userRoles)
                {
                    var role = RoleRepository.FindById(userRole.RoleId);
                    if (role != null)
                    {
                        roles.Add(role);
                    }
                }
            }
            var roleDtoList = Mapper.Map <List <RoleDto> >(roles);

            return(roleDtoList);
        }
Ejemplo n.º 10
0
        public void SetRoles(IUserRoleRepository repository, Guid userId, Guid tenantId, Guid?roleId, string handler)
        {
            var spec = Specification <UserRole> .Eval(u => u.UserId == userId)
                       .And(Specification <UserRole> .Eval(u => u.Role.TenantId == tenantId));

            var userRole = repository.Find(spec);

            if (userRole != null)
            {
                repository.Remove(userRole);
            }

            if (!roleId.HasValue)
            {
                return;
            }

            var addUserRole = new UserRole(userId, roleId.Value, handler);

            repository.Add(addUserRole);
        }
 private AspNetRoles GetUserRoleEntity(int id)
 {
     return(_userRoleRepository.Find(id));
 }