/// <summary> /// Добавить право /// </summary> /// <param name="rightView"></param> /// <returns></returns> public async Task AddRight(UserRightView rightView) { var right = new Right { Object = rightView.Object, Module = rightView.Module, Operator = rightView.Operator }; await _context.AddAsync <Right>(right); }
public async Task AddRight(int module, int rightObject, int rightOperator) { var right = new UserRightView { Module = (RightModule)module, Object = (RightObject)rightObject, Operator = (RightOperator)rightOperator }; await _users.AddRight(right); }
/// <summary> /// Получение всех прав пользователя <b>для внешних сервисов</b> /// <param name="id">Id пользователя</param> /// <returns></returns> public async Task <List <UserRightView> > GetAllUserRightsOut(Guid id) { //var helper = new UserTokenHelpers(); var userRightsIds = new List <Guid>(); List <UserRightView> userRights = new List <UserRightView>(); if (_context.UsersExtended.Where(ue => ue.UserExtendedId == id) .FirstOrDefault() == null) { return(userRights); } var role = await _context .UsersExtended .Where(x => x.UserExtendedId == id) .Include(x => x.Role.RoleRights) .Select(x => x.Role.RoleRights) .FirstOrDefaultAsync(); if (role != null) { userRightsIds.AddRange(_helper.GetRightsFromRole(role)); } var groups = await _context.UserExtendedGroup .Where(ug => ug.UserExtendedId == id) .Include(g => g.Group.GroupRights) .Select(gr => gr.Group) .ToListAsync(); if (groups.Count != 0) { userRightsIds.AddRange(_helper.GetRightsFromAllGroups(groups)); } foreach (var rightsId in userRightsIds) { var right = _context.Rights.FirstOrDefault(x => x.RightId == rightsId); UserRightView userRight = new UserRightView { Module = right.Module, Object = right.Object, Operator = right.Operator }; userRights.Add(userRight); } return(userRights); }
/// <summary> /// Переопределяемый метод для проверки уровня доступа к контроллеру. /// </summary> /// <param name="context">Контекст авторизации пользователя.</param> /// <param name="requirement">Требования к проверке доступа пользователя к контроллеру.</param> /// <returns> /// Если пользователь имеет необходимые права для доступа, вызывает AuthorizationHandlerContext.succeed. /// В случае когда у пользователя нет доступа, возваращет Task.FromResulr(0) - без вызоваAuthorizationHandlerContext.succeed. /// </returns> protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ModuleRequirement requirement) { if (!context.User.HasClaim(c => c.Type == HandlerConstantString.ClaimsForAttributeScheme)) { return(Task.FromResult(0)); } var userId = Guid.Parse(context.User.FindFirst(c => c.Type == HandlerConstantString.ClaimsForAttributeScheme).Value); var userRights = _user.GetAllUserRightsOut(userId); UserRightView right = userRights.Result.FirstOrDefault(ml => ml.Module == requirement.Module); if (right != null) { context.Succeed(requirement); } return(Task.FromResult(0)); }