Example #1
0
        public static IEnumerable <object[]> PartiallyValidPermissions()
        {
            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Data.Read,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/*:*")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Data.Read,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/*")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Data.Read,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/1234:herd/*")
                }
            });
        }
        public IActionResult Get()
        {
            // somehow determine what the resource, action and schema are
            var resource = CRN.FromValue("crn:farm/1");
            var action   = ResourceAction.FromValue("iam:owner");
            var schema   = CSN.FromValue("csn:ag-data:farm");

            // validate permissions
            var permissionsValid = this.ValidatePermissions(resource, action, schema);

            if (!permissionsValid)
            {
                return(Forbid());
            }

            var rng = new Random();

            return(Ok(Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
                      .ToArray()));
        }
        private Resource ToModel(Persistance.Models.Resource resource)
        {
            var identifier = CRN.FromValue(resource.CanonicalName);
            var actions    = resource.Actions.Select(a => ResourceAction.FromValue(a.Action.CanonicalName)).ToArray();

            return(Resource.FromIdentifier(identifier).WithActions(actions));
        }
 public IEnumerable <DataProvider> All()
 {
     return(this.context.DataProviders.Include(p => p.Principal).ToList().Select(p => new DataProvider()
     {
         Principal = CPN.FromValue(p.Principal.CanonicalName),
         Identifier = CRN.FromValue(p.CanonicalName),
         Name = p.Name
     }));
 }
Example #5
0
        public static IEnumerable <object[]> InvalidPermissions()
        {
            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Identified.Individual,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/88756")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Iam.Owner,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/8876:*")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Iam.Delegated,
                    Principal = Identities.Admin,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/88756")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Iam.Delegated,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/88756")
                }
            });

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Iam.Owner,
                    Principal = Identities.DanielB,
                    Schema = Schemas.NumbersOnProperty,
                    Resource = CRN.FromValue("crn:farm/*:herd/88756")
                }
            });
        }
 private PermissionGrant ToModel(Persistance.Models.PermissionGrant entity)
 {
     return(new PermissionGrant()
     {
         Id = entity.PermissionGrantId,
         Principal = CPN.FromValue(entity.Principal.CanonicalName),
         Schema = CSN.FromValue(entity.Schema.CanonicalName),
         Actions = entity.Actions.Select(a => ResourceAction.FromValue(a.Action.CanonicalName)).ToList(),
         Resource = entity.Resources.Select(r => CRN.FromValue(r.Resource.CanonicalName)).ToList()
     });
 }
 public IEnumerable <DataSource> GetSources(CRN identifier)
 {
     return(this.context.DataSources
            .Include(x => x.Provider)
            .Where(s => s.Provider.CanonicalName == identifier.ToString())
            .ToList()
            .Select(s => new DataSource()
     {
         Identifier = CRN.FromValue(s.CanonicalName),
         Provider = CRN.FromValue(s.Provider.CanonicalName)
     }));
 }
        public override Resource ReadJson(JsonReader reader, Type objectType, Resource existingValue, bool hasExistingValue,
                                          JsonSerializer serializer)
        {
            var token = JToken.Load(reader);

            if (token.Type == JTokenType.Object)
            {
                CRN identifier           = null;
                ResourceAction[] actions = null;
                foreach (var t in token.Children())
                {
                    if (t.Path == "identifier")
                    {
                        identifier = CRN.FromValue(t.First.Value <string>());
                        continue;
                    }

                    if (t.Path == "action")
                    {
                        var values = t.Values();
                        actions = values.Select(v => ResourceAction.FromValue(v.Value <string>())).ToArray();
                        continue;
                    }
                }

                if (actions != null)
                {
                    return(Resource.FromIdentifier(identifier).WithActions(actions));
                }
                return(Resource.FromIdentifier(identifier));
            }

            if (token.Type == JTokenType.String)
            {
                var value = serializer.Deserialize <CRN>(token.CreateReader());
                return(Resource.FromIdentifier(value));
            }

            try
            {
                if (token.Value <CRN>() == default)
                {
                    return(null);
                }
                var value = serializer.Deserialize <CRN>(reader);
                return(Resource.FromIdentifier(value));
            }
            catch
            {
                return(null);
            }
        }
        public IActionResult Delete(string resource)
        {
            var resourceName = CRN.FromValue(HttpUtility.UrlDecode(resource));

            var found = this.storage.FindByIdentifier(resourceName).FirstOrDefault();

            if (found == null)
            {
                return(NotFound());
            }

            this.storage.Remove(found);

            return(Ok(resource));
        }
Example #10
0
        public static IEnumerable <object[]> ValidPermissions()
        {
            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Data.Read,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/*:herd/88756")
                }
            });

            //yield return new object[]
            //{
            //    new PermissionTicketRequest()
            //    {
            //        Action = ResourceActions.Data.Read,
            //        Principal = Identities.DanielB,
            //        Schema = Schemas.MilkPickup,
            //        Resource = CRN.FromValue("crn:farm/*:herd/88756:*")
            //    }
            //};

            yield return(new object[]
            {
                new PermissionTicketRequest()
                {
                    Action = ResourceActions.Data.Read,
                    Principal = Identities.DanielB,
                    Schema = Schemas.MilkPickup,
                    Resource = CRN.FromValue("crn:farm/1234:herd/88756")
                }
            });

            //yield return new object[]
            //{
            //    new PermissionTicketRequest()
            //    {
            //        Action = ResourceActions.Data.Read,
            //        Principal = Identities.DanielB,
            //        Schema = Schemas.MilkPickup,
            //        Resource = CRN.FromValue("crn:farm/1234:herd/88756:*")
            //    }
            //};
        }
 public IEnumerable <DataProviderPolicy> GetPoliciesForSchema(CSN schema)
 {
     return(this.context.DataProviderPolicies
            .Include(p => p.Provider)
            .Include(p => p.Schema)
            .Include(p => p.PolicyItems)
            .ThenInclude(i => i.Principal)
            .Where(p => p.Schema.CanonicalName == schema.ToString())
            .ToList()
            .Select(p => new DataProviderPolicy()
     {
         Provider = CRN.FromValue(p.Provider.CanonicalName),
         Schema = CSN.FromValue(p.Schema.CanonicalName),
         Rule = p.PolicyItems.Select(i => new DataProviderPolicyRule()
         {
             Principal = CPN.FromValue(i.Principal.CanonicalName),
             Allow = i.Allow,
             Deny = i.Deny
         }).ToList()
     }));
 }
Example #12
0
 public static Resource FromIdentifier(string identifier) => FromIdentifier(CRN.FromValue(identifier));
        public static IEnumerable <object[]> UnknownResources()
        {
            yield return(new object[] { CRN.FromValue("crn:farm/1") });

            yield return(new object[] { CRN.FromValue("crn:farm/*:herd/8876:*") });
        }