/// <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); }
/// <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(); }
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); }
/// <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); }
public async Task <bool> IsExist(Expression <Func <UserRoleModel, bool> > predicate) { var ret = await _userrole.Find(predicate).FirstOrDefaultAsync(); if (ret == null) { return(false); } return(true); }
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); }
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)); }
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); } }
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); }
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)); }