public virtual string SubTransform(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { Claim?claim; if (Issuer is null) { claim = context.User.FindFirst(PreferSubClaimType); return(claim is null ? string.Empty : claim.Value); } claim = context.User.FindAll(PreferSubClaimType).FirstOrDefault( c => string.Equals(c.Issuer, Issuer)); return(claim is null ? string.Empty : claim.Value); }
public override ValueTask <IEnumerable <object> > TransformAsync(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { object[] requestValues = new object[3]; requestValues[0] = SubTransform(context, data); requestValues[1] = ObjTransform(context, data, (c, _) => c.HttpContext.Request.Path); requestValues[2] = ActTransform(context, data, (c, _) => c.HttpContext.Request.Method); return(new ValueTask <IEnumerable <object> >(requestValues)); }
public ICasbinAuthorizationContext CreateContext( ClaimsPrincipal user, ICasbinAuthorizationData data) => new CasbinAuthorizationContext(user, data);
protected virtual string ActTransform(ICasbinAuthorizationContext context, ICasbinAuthorizationData data, Func <ICasbinAuthorizationContext, ICasbinAuthorizationData, string> valueSelector) => valueSelector(context, data);
public override ValueTask <IEnumerable <object> > TransformAsync(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { object[] requestValues = new object[data.ValueCount + 1]; requestValues[0] = SubTransform(context, data); requestValues[1] = ObjTransform(context, data, (_, d) => d.Value1); requestValues[2] = ActTransform(context, data, (_, d) => d.Value2); return(new ValueTask <IEnumerable <object> >(requestValues)); }
protected virtual string DomTransform(ICasbinAuthorizationContext context, ICasbinAuthorizationData data, Func <ICasbinAuthorizationContext, ICasbinAuthorizationData, string> valueSelector) { return(valueSelector(context, data)); }
public override ValueTask <IEnumerable <object> > TransformAsync(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { object[] requestValues = new object[data.ValueCount + 1]; requestValues[0] = SubTransform(context, data); switch (requestValues.Length) { case 3: requestValues[1] = ObjTransform(context, data, (_, d) => d.Value1); requestValues[2] = ActTransform(context, data, (_, d) => d.Value2); break; case 4: requestValues[1] = DomTransform(context, data, (_, d) => d.Value1); requestValues[2] = ObjTransform(context, data, (_, d) => d.Value2); requestValues[3] = ActTransform(context, data, (_, d) => d.Value3); break; } return(new ValueTask <IEnumerable <object> >(requestValues)); }
public virtual string ActTransform(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) => data.Value2 ?? string.Empty;
public virtual ValueTask <IEnumerable <object> > TransformAsync(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { var requestValues = new object[3]; requestValues[0] = SubTransform(context, data); requestValues[1] = ObjTransform(context, data); requestValues[2] = ActTransform(context, data); return(new ValueTask <IEnumerable <object> >(requestValues)); }
public ICasbinAuthorizationContext CreateContext( ICasbinAuthorizationData data, HttpContext httpContext) => new CasbinAuthorizationContext(data, httpContext);
public CasbinAuthorizationContext(ClaimsPrincipal user, ICasbinAuthorizationData data) : this(user, new[] { data }) { }
public CasbinAuthorizationContext(ICasbinAuthorizationData data, HttpContext httpContext) : this(new[] { data }, httpContext) { }
public virtual ValueTask <IEnumerable <object> > TransformAsync(ICasbinAuthorizationContext context, ICasbinAuthorizationData data) { if (data.ValueCount is 0) { throw new ArgumentException("Value count is invalid."); } object[]? requestValues = new object[data.ValueCount]; int requestValuesLength = requestValues.Length; if (requestValuesLength > 0) { requestValues[0] = data.Value1; } if (requestValuesLength > 1) { requestValues[1] = data.Value2; } if (requestValuesLength > 2) { requestValues[2] = data.Value3; } if (requestValuesLength > 3) { requestValues[3] = data.Value4; } if (requestValuesLength > 4) { requestValues[4] = data.Value5; } if (requestValuesLength <= 5) { return(new ValueTask <IEnumerable <object> >(requestValues)); } // Add the custom values if (data.CustomValues is null) { throw new ArgumentException("Value count is invalid."); } string[]? customValues = data.CustomValues; for (int index = 0; index < customValues.Length; index++) { requestValues[4 + index] = customValues[index]; } return(new ValueTask <IEnumerable <object> >(requestValues)); }
public CasbinAuthorizationContext(ClaimsPrincipal user, ICasbinAuthorizationData data) { User = user; Data = data; }