Example #1
0
        public static SecurityMemberPermission CreateRolePermission(this ISecurityMemberPermission permission)
        {
            SecurityMemberPermission securityOperationPermission = new SecurityMemberPermission();

            securityOperationPermission.SetValue(permission);
            return(securityOperationPermission);
        }
Example #2
0
 public static void SetValue(this SecurityMemberPermission operationPermission, IMemberPermission permission)
 {
     operationPermission.Operations     = permission.Operations;
     operationPermission.OperationState = permission.OperationState;
     operationPermission.Type           = permission.Type;
     operationPermission.Criteria       = permission.Criteria;
     operationPermission.MemberName     = permission.MemberName;
 }
Example #3
0
        public static void SetValue(this SecurityMemberPermission operationPermission, ISecurityMemberPermission permission)
        {
            operationPermission.Operations     = permission.Operations;
            operationPermission.OperationState = permission.OperationState;
            CriteriaSerializer criteriaSerializer = new CriteriaSerializer();

            // TODO: more checks are needed...
            operationPermission.Type       = ((ParameterExpression)criteriaSerializer.Deserialize(permission.StringType)).Type;
            operationPermission.Criteria   = (LambdaExpression)criteriaSerializer.Deserialize(permission.StringCriteria);
            operationPermission.MemberName = permission.MemberName;
        }
        public virtual IMemberPermission AddMemberPermission <TSource, TargetType>(SecurityOperation operation, OperationState state, string memberName, Expression <Func <TSource, TargetType, bool> > criteria) where TSource : BaseSecurityDbContext
        {
            if (operation.HasFlag(SecurityOperation.Create))
            {
                throw new ArgumentException("The create value of the 'operations' parameter is incorrect in this context. Only the Read and Write operations can be granted by a member permission.");
            }
            if (operation.HasFlag(SecurityOperation.Delete))
            {
                throw new ArgumentException("The delete value of the 'operations' parameter is incorrect in this context. Only the Read and Write operations can be granted by a member permission.");
            }
            SecurityMemberPermission memberPermission = new SecurityMemberPermission();

            memberPermission.Type           = typeof(TargetType);
            memberPermission.Criteria       = criteria;
            memberPermission.Operations     = operation;
            memberPermission.OperationState = state;
            memberPermission.MemberName     = memberName;
            this.MemberPermissions.Add(memberPermission);
            return(memberPermission);
        }