public IEnumerable <PermissionGrant> GetByPrincipalAndSchema(CPN principal, CSN schema) { var principalStr = principal?.ToString(); var schemaStr = schema?.ToString(); var foundPrincipal = this.context.Principals.FirstOrDefault(p => p.CanonicalName == principalStr); var foundSchema = this.context.Schemas.FirstOrDefault(s => s.CanonicalName == schemaStr); if (foundPrincipal == null) { return(new List <PermissionGrant>()); } var query = GetQuery(); Func <Persistance.Models.PermissionGrant, bool> filter; if (foundSchema != null) { filter = (g) => g.PrincipalId == foundPrincipal.PrincipalId && g.SchemaId == foundSchema.SchemaId; } else { filter = g => g.PrincipalId == foundPrincipal.PrincipalId; } return(query.Where(filter).ToList().Select(ToModel)); }
public IEnumerable <Principal> FindParents(CPN principal) { if (principal.IncludesWildcard) { throw new ArgumentException("Parentage search for principal cannot include wildcards"); } var found = GetQuery().FirstOrDefault(p => p.CanonicalName == principal.Value); if (found == null) { return(new List <Principal>()); } var parents = new List <Principal>(); Persistance.Models.PrincipalRelation link = null; do { link = this.context.PrincipalRelations .Include(r => r.Parent) .FirstOrDefault(r => r.ChildPrincipalId == found.PrincipalId); if (link == null) { continue; } parents.Add(ToModel(link.Parent)); found = link.Parent; } while (link != null); return(parents); }
public void Revoke(CRN resource, CPN principal, CSN schema = null) { var found = this.storage.FindBy(it => it.Principal == principal && it.Resources.Any(r => { if (resource.IncludesWildcard) { return(resource.IsWildcardMatch(r.Identifier)); } return(r.Identifier == resource); })); if (schema != default(CSN)) { found = found.Where(f => f.Resources.Any(r => r.Schema == schema)); } var keys = found.Select(f => f.GetHash()); foreach (var k in keys) { this.storage.Remove(k); } }
private IEnumerable <Principal> FindByWildcard(CPN principal) { var all = GetQuery().ToList(); return(all .Where(p => principal.IsWildcardMatch(CPN.FromValue(p.CanonicalName))) .Select(ToModel)); }
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 })); }
private Principal ToModel(Persistance.Models.Principal entity) { if (entity == null) { return(null); } return(Principal.From(CPN.FromValue(entity.CanonicalName)) .WithChildren(entity.ChildRelations.Select(r => CPN.FromValue(r.Child.CanonicalName)).ToArray())); }
public IEnumerable <Principal> Find(CPN principal) { if (principal.IncludesWildcard) { return(this.storage.Where(p => principal.IsWildcardMatch(p.Identifier))); } return(this.storage.Where(p => p.Identifier == principal)); }
public void Remove(CPN principal) { var found = this.context.Principals.FirstOrDefault(p => p.CanonicalName == principal.Value); if (found == null) { return; } this.context.Principals.Remove(found); this.context.SaveChanges(); }
public bool AddRelation(CPN parent, CPN child) { var found = this.storage.FirstOrDefault(p => p.Identifier == parent); if (found == null) { return(false); } found.Children.Add(child); return(true); }
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 <Principal> Find(CPN principal) { if (principal.IncludesWildcard) { return(FindByWildcard(principal)); } return(GetQuery() .Where(p => p.CanonicalName == principal.Value) .ToList() .Select(ToModel)); }
public bool AddRelation(CPN parent, CPN child) { var found = this.context.Principals.FirstOrDefault(p => p.CanonicalName == parent.Value); if (found == null) { return(false); } AddRelation(found, child); this.context.SaveChanges(); return(true); }
private void AddRelation(Persistance.Models.Principal parent, CPN child) { var found = this.context.Principals.FirstOrDefault(p => p.CanonicalName == child.Value); if (found == null) { return; } this.context.Add(new Persistance.Models.PrincipalRelation() { Parent = parent, Child = found }); }
public IActionResult AddRelation([FromRoute] string id, [FromBody] string relation) { var parent = CPN.FromValue(id); var found = this.storage.Find(parent).FirstOrDefault(); if (found == null) { return(NotFound()); } var child = CPN.FromValue(relation); if (!this.storage.AddRelation(parent, child)) { return(NoContent()); } return(Created(Url.RouteUrl(new { controller = "Principal", action = "Get", id = found.Id }), found)); }
public IActionResult Get([FromRoute] string principal, [FromQuery] string schema = null) { IEnumerable <PermissionGrant> results; var principalRn = CPN.FromValue(HttpUtility.UrlDecode(principal)); if (schema == null) { results = this.grantFinder.Find(principalRn); } else { var schemaRn = CSN.FromValue(HttpUtility.UrlDecode(schema)); results = this.grantFinder.Find(principalRn, schemaRn); } if (!results.Any()) { return(NotFound()); } return(Ok(results)); }
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() })); }
public IEnumerable <Principal> FindParents(CPN principal) { var parents = new List <Principal>(); Principal found = this.storage.FirstOrDefault(p => p.Identifier == principal); if (found == null) { return(parents); } do { found = this.storage.FirstOrDefault(p => p.Children.Contains(found.Identifier)); if (found == null) { continue; } parents.Add(found); } while (found != null); return(parents); }
public PermissionTicket ForPrincipal(CPN identity) { Principal = identity; return(this); }
public IEnumerable <PermissionGrant> GetByPrincipalAndSchema(CPN principal, CSN schema) => this.grants.Where(g => g.Principal == principal && g.Schema == schema);
public IEnumerable <PermissionGrant> GetByPrincipal(CPN principal) => this.grants.Where(g => g.Principal == principal);
public DataProvider ForPrincipal(CPN principal) { Principal = principal; return(this); }
public IEnumerable <PermissionGrant> Find(CPN principal) => this.storage.GetByPrincipal(principal);
public IEnumerable <PermissionGrant> Find(CPN principal, CSN schema) => this.storage.GetByPrincipalAndSchema(principal, schema);
public static DataProviderPolicyRule ForPrincipal(CPN principal) => new DataProviderPolicyRule() { Principal = principal };
private void UpdateFoundPrimeNumberList(Object Obj, EventArgs e) { this.Dispatcher.Invoke(() => { if (ConfirmedPrimeNumbers.Count > 0) { foreach (long CPN in GetConfirmedPrimeNumbers()) { ProgressPercentage += progressIncreaseRatio; PrimeNumberIndexTextbox.AppendText(IndexForPrintingFoundPrimeNumbers.ToString("0,0") + ". " + CPN.ToString("0,0") + "\n"); ProgressBar.Value = ProgressPercentage; IndexForPrintingFoundPrimeNumbers++; } } }); PrimeNumberIndexTextbox.ScrollToEnd(); }
public static Principal From(CPN identifier) => new Principal() { Identifier = identifier };
public void Remove(CPN principal) { this.storage.RemoveAll(p => p.Identifier == principal); }
public IEnumerable <PermissionGrant> GetByPrincipal(CPN principal) => GetByPrincipalAndSchema(principal, null);
public static PermissionGrant From(CPN grantor) => new PermissionGrant() { Grantor = grantor };
public PermissionGrant To(CPN principal) { Principal = principal; return(this); }