/// <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);
 }
Esempio n. 2
0
 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);
        }
Esempio n. 4
0
        /// <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));
        }