public Role_PermissionOperatorDTO(PermissionOperator PermissionOperator)
 {
     this.Id          = PermissionOperator.Id;
     this.Code        = PermissionOperator.Code;
     this.Name        = PermissionOperator.Name;
     this.FieldTypeId = PermissionOperator.FieldTypeId;
 }
Beispiel #2
0
        public PermissionRequirement(PermissionOperator permissionOperator, string[] permissions)
        {
            if (permissions.Length == 0)
            {
                throw new ArgumentException("At least one permission is required.", nameof(permissions));
            }

            PermissionOperator = permissionOperator;
            Permissions        = permissions;
        }
        public bool CheckPermissions(PermissionOperator permissionOperator, string[] permissions, string email)
        {
            var userPermissions = _userRepository.GetRange(user => user.Email == email, false).Join(_userRoleRepository.GetRange(enableTracking: false), u => u.Id, ur => ur.UserId, (u, ur) => new { ur.RoleId })
                                  .Join(_permissionRoleRepository.GetRange(enableTracking: false), r => r.RoleId, per => per.RoleId, (r, per) => new { per.Permission })
                                  .Distinct()
                                  .ToList();
            var  inter  = userPermissions.Where(p => permissions.Any(x => x == p.Permission.Name)).ToList();
            bool result = permissionOperator == PermissionOperator.Or ? inter.Count > 0 : inter.Count() == permissions.Length;

            return(result);
        }
        public async Task <PermissionOperator> Get(long Id)
        {
            PermissionOperator PermissionOperator = await DataContext.PermissionOperator.AsNoTracking()
                                                    .Where(x => x.Id == Id).Select(x => new PermissionOperator()
            {
                Id          = x.Id,
                Code        = x.Code,
                Name        = x.Name,
                FieldTypeId = x.FieldTypeId,
            }).FirstOrDefaultAsync();

            return(PermissionOperator);
        }
        /// <inheritdoc />
        public override async Task <AuthorizationPolicy?> GetPolicyAsync(string policyName)
        {
            if (!policyName.StartsWith(PolicyPrefix, StringComparison.OrdinalIgnoreCase))
            {
                // it's not one of our dynamic policies, so we fallback to the base behavior
                // this will load policies added in Startup.cs (AddPolicy..)
                return(await base.GetPolicyAsync(policyName));
            }

            PermissionOperator @operator = GetOperatorFromPolicy(policyName);

            string[] permissions = GetPermissionsFromPolicy(policyName);

            // extract the info from the policy name and create our requirement
            var requirement = new PermissionRequirement(@operator, permissions);

            // create and return the policy for our requirement
            return(new AuthorizationPolicyBuilder().AddRequirements(requirement).Build());
        }
Beispiel #6
0
        public async Task <bool> ValidatePermissionContent(Permission Permission)
        {
            if (Permission.PermissionContents != null)
            {
                List <Field> Fields = await UOW.FieldRepository.List(new FieldFilter
                {
                    Selects = FieldSelect.ALL,
                    Skip    = 0,
                    Take    = int.MaxValue
                });

                List <PermissionOperator> PermissionOperators = await UOW.PermissionOperatorRepository.List(new PermissionOperatorFilter
                {
                    Skip = 0,
                    Take = int.MaxValue,
                });

                foreach (PermissionContent PermissionContent in Permission.PermissionContents)
                {
                    Field Field = Fields.Where(f => f.Id == PermissionContent.FieldId).FirstOrDefault();
                    if (Field == null)
                    {
                        PermissionContent.AddError(nameof(PermissionValidator), nameof(PermissionContent.Field), ErrorCode.FieldNotExisted);
                    }
                    else
                    {
                        PermissionOperator PermissionOperator = PermissionOperators
                                                                .Where(po => po.FieldTypeId == Field.FieldTypeId && po.Id == PermissionContent.PermissionOperatorId).FirstOrDefault();
                        if (PermissionOperator == null)
                        {
                            PermissionContent.AddError(nameof(PermissionValidator), nameof(PermissionContent.PermissionOperator), ErrorCode.PermissionOperatorNotExisted);
                        }
                    }
                }
            }
            return(Permission.IsValidated);
        }
Beispiel #7
0
 /// <summary>
 /// Initializes the attribute with multiple permissions
 /// </summary>
 /// <param name="permissionOperator">The operator to use when verifying the permissions provided</param>
 /// <param name="permissions">The list of permissions</param>
 public PermissionAuthorizeAttribute(PermissionOperator permissionOperator, params string[] permissions)
 {
     // E.g: PERMISSION_1_Create_Update..
     Policy = $"{PolicyPrefix}{(int)permissionOperator}{Separator}{string.Join(Separator, permissions)}";
 }
Beispiel #8
0
 public HasPermissionAttribute(PermissionOperator permissionOperator, params string[] permissions)
 {
     this._permissions        = permissions;
     this._permissionOperator = permissionOperator;
 }