private static void Get(UserSecurityContext user, HttpContext context, CancellationToken cancel) { try { OrganizationProviderBase provider = OrganizationManager.Instance.GetOrganizationProvider(user); if (provider != null) { IEnumerable <Organization> orgs = provider.Get(); JArray jorgs = Jsonifier.ToJson(orgs); if (jorgs != null) { RestUtils.Push(context.Response, JsonOpStatus.Ok, jorgs.ToString()); } else { RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]"); } return; } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } }
static void CreateOrgs(UserSecurityContext context) { Console.WriteLine("Creating orgs"); OrganizationProviderBase prov = OrganizationManager.Instance.GetOrganizationProvider(context); OrganizationAliasSchemeProviderBase schProv = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(context); OrganizationAliasProviderBase alProv = OrganizationManager.Instance.GetOrganizationAliasProvider(context); string orgName; Organization org; OrganizationAliasScheme scheme; orgName = "Pacific Northwest National Lab"; org = MakeOrg(prov, orgName); if (org != null) { scheme = MakeOrg(schProv, org, "PNNL Aliases"); if (scheme != null) { MakeOrg(alProv, scheme, org, "PNNL"); } } orgName = "US Department of Energy"; org = MakeOrg(prov, orgName); if (org != null) { scheme = MakeOrg(schProv, org, "US DOE Aliases"); if (scheme != null) { MakeOrg(alProv, scheme, org, "US DOE"); MakeOrg(alProv, scheme, org, "DOE"); MakeOrg(alProv, scheme, org, "Department of Energy"); } } orgName = "US Army Corps of Engineers"; org = MakeOrg(prov, orgName); if (org != null) { scheme = MakeOrg(schProv, org, "USACE Aliases"); if (scheme != null) { MakeOrg(alProv, scheme, org, "USACE"); MakeOrg(alProv, scheme, org, "ACOE"); MakeOrg(alProv, scheme, org, "Army Corps of Engineers"); } } orgName = "Bonneville Power Authority"; org = MakeOrg(prov, orgName); if (org != null) { scheme = MakeOrg(schProv, org, "BPA Aliases"); if (scheme != null) { MakeOrg(alProv, scheme, org, "BPA"); } } }
static void Main(string[] args) { ConfigurationManager.Instance.Bootstrap(); ConfigurationManager.Instance.Initialize(); ConfigurationManager.Instance.Start(); Console.WriteLine("Config state: " + ConfigurationManager.Instance.State); LogManager.Instance.Bootstrap(); LogManager.Instance.Initialize(); LogManager.Instance.Start(); Console.WriteLine("Log state: " + LogManager.Instance.State); AuthorizationManager.Instance.Bootstrap(); AuthorizationManager.Instance.Initialize(); AuthorizationManager.Instance.Start(); Console.WriteLine("Auth state: " + AuthorizationManager.Instance.State); LocalSystemUser usr = new LocalSystemUser(SecurityUtils.AdminIdentity, "Admin", UserState.Active); UserSecurityContext context = new UserSecurityContext(usr); if (AuthorizationManager.Instance.State == Osrs.Runtime.RunState.Running) { //RegisterPermissions(context); //Grant(context); } OrganizationManager.Instance.Initialize(); Console.WriteLine("Orgs state: " + OrganizationManager.Instance.State); OrganizationManager.Instance.Start(); Console.WriteLine("Orgs state: " + OrganizationManager.Instance.State); if (OrganizationManager.Instance.State == Osrs.Runtime.RunState.Running) { OrganizationProviderBase prov = OrganizationManager.Instance.GetOrganizationProvider(context); if (prov != null) { //CreateOrgs(context); //Console.WriteLine("Getting all orgs"); //foreach (Organization o in prov.Get()) //{ // Console.WriteLine(o.Name); //} //Console.WriteLine("Getting subset orgs"); //CompoundIdentity[] sample = new CompoundIdentity[] { new CompoundIdentity(new Guid("5914629d-dd2d-4f1f-a06f-1b199fe19b37"), new Guid("469cc38d-5de0-470b-920d-1387c1d73b1a")), new CompoundIdentity(new Guid("5914629d-dd2d-4f1f-a06f-1b199fe19b37"), new Guid("6ca626ef-aab6-4746-8f18-7d97097055df")) }; //foreach (Organization o in prov.Get(sample)) //{ // Console.WriteLine(o.Name); //} } BuildTestCTE(context); } Console.WriteLine("ALL DONE"); Console.ReadLine(); }
static Organization MakeOrg(OrganizationProviderBase prov, string orgName) { Organization org = null; if (!prov.Exists(orgName)) { org = prov.Create(orgName); if (org != null) { Console.WriteLine("Created Org: " + org.Name); } else { Console.WriteLine("Failed to create org"); } } else { Console.Write("Getting org"); IEnumerable <Organization> orgs = prov.Get(orgName); if (orgs != null) { foreach (Organization o in orgs) { org = o; Console.WriteLine(" success"); break; } Console.WriteLine(" failed - empty"); } else { Console.WriteLine(" failed - null"); } } return(org); }
static void Create(UserSecurityContext context) { IIdentityProvider idProv = IdentityManager.Instance.GetProvider(context); OrganizationProviderBase orgProv = OrganizationManager.Instance.GetOrganizationProvider(context); UserAffiliationProviderBase prov = UserAffiliationManager.Instance.GetProvider(context); Organization org = orgProv.Get(new Osrs.Data.CompoundIdentity(new Guid("5914629d-dd2d-4f1f-a06f-1b199fe19b37"), new Guid("f9e1d49f-0b91-41cc-a88f-a24afa1a669e"))); IEnumerable <UserIdentityBase> ids = idProv.Get(); foreach (UserIdentityBase cur in ids) { if (!prov.HasAffiliation(cur, org)) { Console.WriteLine("Adding user " + cur.Name + " to org " + org.Name); prov.Add(cur, org); Console.WriteLine("Has affiliation? " + prov.HasAffiliation(cur, org) + ": " + cur.Name + " to " + org.Name); } else { Console.WriteLine("Already has affiliation " + cur.Name + " to org " + org.Name); } } }
public static void Handle(UserSecurityContext user, string method, HttpContext context, CancellationToken cancel) { if (context.Request.Method == "POST") { if (method.Equals("all", StringComparison.OrdinalIgnoreCase)) { Get(user, context, cancel); return; } else if (method.Equals("find", StringComparison.OrdinalIgnoreCase)) { try { JToken token = JsonUtils.GetDataPayload(context.Request); if (token["orgid"] != null && token["name"] != null) { GetOrgAndName(JsonUtils.ToId(token["orgid"]), token["name"].ToString(), user, context, cancel); return; } else if (token["name"] != null) { GetName(token["name"].ToString(), user, context, cancel); return; } else if (token["orgid"] != null) { CompoundIdentity cid = JsonUtils.ToId(token["orgid"]); GetOrg(cid, user, context, cancel); return; } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("in", StringComparison.OrdinalIgnoreCase)) { try { HashSet <CompoundIdentity> ids = JsonUtils.ToIds(JsonUtils.GetDataPayload(context.Request)); if (ids != null) { GetIds(ids, user, context, cancel); return; } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } } else if (method.Equals("create", StringComparison.OrdinalIgnoreCase)) { try { string name = null; string desc = null; JToken token = JsonUtils.GetDataPayload(context.Request); name = token["name"].ToString(); OrganizationProviderBase o = OrganizationManager.Instance.GetOrganizationProvider(user); OrganizationAliasSchemeProviderBase provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); if (provider != null && o != null && token != null && !string.IsNullOrEmpty(name)) { CompoundIdentity orgid = JsonUtils.ToId(token["orgid"]); Organization org = o.Get(orgid); OrganizationAliasScheme scheme = null; desc = (token["desc"]) != null ? token["desc"].ToString() : null; //create scheme = provider.Create(org, name, desc); if (scheme != null) { JObject jscheme = Jsonifier.ToJson(scheme); RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok, jscheme.ToString())); return; } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("delete", StringComparison.OrdinalIgnoreCase)) { try { JToken t = JsonUtils.GetDataPayload(context.Request); HashSet <CompoundIdentity> cids = JsonUtils.ToIds(t); OrganizationAliasSchemeProviderBase provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); if (provider != null && cids != null) { bool result = true; foreach (CompoundIdentity cid in cids) { result &= provider.Delete(cid); } if (result == true) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok)); return; } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("update", StringComparison.OrdinalIgnoreCase)) { JToken token = null; CompoundIdentity cid = null; CompoundIdentity orgid = null; OrganizationAliasSchemeProviderBase provider = null; OrganizationAliasScheme scheme = null; string name = null; string desc = null; try { //check for request.body and provider token = JsonUtils.GetDataPayload(context.Request); provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); if (provider != null && token != null) { //GUID must be provided cid = JsonUtils.ToId(token["id"]); //fetch stored object bool dirty = false; scheme = provider.Get(cid); if (scheme != null) { //## REQUIRED ## //name if (token.SelectToken("name") != null) { name = token["name"].ToString(); if (!string.IsNullOrEmpty(name)) { scheme.Name = name; dirty = true; } else { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); //name is required and not nullable return; } } //owning org if (token.SelectToken("orgid") != null) { orgid = JsonUtils.ToId(token["orgid"]); if (orgid != null) { scheme.OwningOrganizationIdentity = orgid; dirty = true; } else { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); //owning org is required and not nullable return; } } //## OPTIONALS ## //description if (token.SelectToken("desc") != null) { desc = (token["desc"] != null) ? token["desc"].ToString() : null; scheme.Description = desc; dirty = true; } if (dirty) { //update bool result = provider.Update(scheme); if (result == true) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok)); return; } } else { //return ok - no values were modified RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok)); return; } } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } } context.Response.StatusCode = HttpStatusCodes.Status400BadRequest; }
public static void Handle(UserSecurityContext user, string method, HttpContext context, CancellationToken cancel) { if (context.Request.Method == "POST") { if (method.Equals("all", StringComparison.OrdinalIgnoreCase)) { Get(user, context, cancel); return; } else if (method.Equals("find", StringComparison.OrdinalIgnoreCase)) { try { JToken token = JsonUtils.GetDataPayload(context.Request); if (token != null) { if (token["id"] != null && token["schemeid"] != null) { GetByOrgAndScheme(JsonUtils.ToId(token["id"]), JsonUtils.ToId(token["schemeid"]), user, context, cancel); return; } else if (token["id"] != null && token["name"] != null) { GetByOrgAndName(JsonUtils.ToId(token["id"]), token["name"].ToString(), user, context, cancel); return; } else if (token["schemeid"] != null && token["name"] != null) { GetBySchemeAndName(JsonUtils.ToId(token["schemeid"]), token["name"].ToString(), user, context, cancel); return; } else if (token["schemeid"] != null) { GetByScheme(JsonUtils.ToId(token["schemeid"]), user, context, cancel); return; } else if (token["id"] != null) { CompoundIdentity cid = JsonUtils.ToId(token["id"]); GetByOrg(cid, user, context, cancel); return; } else if (token["name"] != null) { GetByName(token["name"].ToString(), user, context, cancel); return; } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("create", StringComparison.OrdinalIgnoreCase)) { try { //token and providers JToken token = JsonUtils.GetDataPayload(context.Request); OrganizationProviderBase org_provider = OrganizationManager.Instance.GetOrganizationProvider(user); OrganizationAliasSchemeProviderBase scheme_provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); OrganizationAliasProviderBase alias_provider = OrganizationManager.Instance.GetOrganizationAliasProvider(user); if (org_provider != null && scheme_provider != null && alias_provider != null && token != null) { //get inputs OrganizationAliasScheme scheme = scheme_provider.Get(JsonUtils.ToId(token["schemeid"])); Organization org = org_provider.Get(JsonUtils.ToId(token["id"])); string name = token["name"].ToString(); if (scheme != null && org != null && !string.IsNullOrEmpty(name)) { //create object OrganizationAlias alias = alias_provider.Create(scheme, org, name); if (alias != null) { JObject jalias = Jsonifier.ToJson(alias); RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok, jalias.ToString())); return; } } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("update", StringComparison.OrdinalIgnoreCase)) { try { //token and providers JToken token = JsonUtils.GetDataPayload(context.Request); OrganizationAliasSchemeProviderBase scheme_provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); OrganizationAliasProviderBase alias_provider = OrganizationManager.Instance.GetOrganizationAliasProvider(user); if (scheme_provider != null && alias_provider != null && token != null) { //required fields CompoundIdentity orgid = JsonUtils.ToId(token["id"]); OrganizationAliasScheme scheme = scheme_provider.Get(JsonUtils.ToId(token["schemeid"])); string old_name = token["name"].ToString(); string new_name = token["newname"].ToString(); if (orgid != null && scheme != null && !string.IsNullOrEmpty(old_name) && !string.IsNullOrEmpty(new_name)) { //get entity and modify its properties IEnumerable <OrganizationAlias> aliases = alias_provider.Get(orgid, scheme); if (aliases != null) { //match alias by name (an org could have multiple aliases in the same scheme, but they must be unique) OrganizationAlias alias = null; foreach (OrganizationAlias a in aliases) { if (a.Name == old_name) { alias = a; } } alias.Name = new_name; bool result = alias_provider.Update(alias); if (result == true) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok)); return; } } } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("delete", StringComparison.OrdinalIgnoreCase)) { CompoundIdentity scheme_id = null; CompoundIdentity org_id = null; OrganizationAliasScheme scheme = null; string name = null; try { JToken token = JsonUtils.GetDataPayload(context.Request); OrganizationProviderBase org_provider = OrganizationManager.Instance.GetOrganizationProvider(user); OrganizationAliasSchemeProviderBase scheme_provider = OrganizationManager.Instance.GetOrganizationAliasSchemeProvider(user); OrganizationAliasProviderBase provider = OrganizationManager.Instance.GetOrganizationAliasProvider(user); if (provider != null && scheme_provider != null && token != null) { //If a token is provided, it cannot be null //Checking values against intent avoids firing a degenerate delete override //schemeid if (token.SelectToken("schemeid") != null) { if (token["schemeid"] == null) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } else { scheme_id = JsonUtils.ToId(token["schemeid"]); scheme = scheme_provider.Get(scheme_id); } } //orgid if (token.SelectToken("id") != null) { if (token["id"] == null) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } else { org_id = JsonUtils.ToId(token["id"]); Organization org = org_provider.Get(org_id); } } //name if (token.SelectToken("name") != null) { if (token["name"] == null) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } else { name = token["name"].ToString(); } } //determine override bool result = false; if (scheme_id != null && org_id != null && name != null) //delete specific alias { //don't have a provider method that returns specific alias, so get by org, scheme and match alias by name (most of the time a single alias will be returned) IEnumerable <OrganizationAlias> aliases = provider.Get(org_id, scheme); if (aliases != null) { foreach (OrganizationAlias alias in aliases) { if (alias.Name == name) { result = provider.Delete(alias); break; //aliases should be unique for a given org in a given scheme } } } } else if (scheme_id != null && org_id != null) //delete * for given org in a given scheme { result = provider.Delete(org_id, scheme_id); } else if (scheme_id != null) //delete * for a given scheme { result = provider.Delete(scheme); } else if (org_id != null) //delete * for a given org { result = provider.Delete(org_id); } if (result == true) { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok)); return; } } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } } context.Response.StatusCode = HttpStatusCodes.Status400BadRequest; }
public static void Handle(UserSecurityContext user, string method, HttpContext context, CancellationToken cancel) { if (context.Request.Method == "POST") { if (method.Equals("all", StringComparison.OrdinalIgnoreCase)) { Get(user, context, cancel); return; } else if (method.Equals("children", StringComparison.OrdinalIgnoreCase)) { try { //parse request JToken token = JsonUtils.GetDataPayload(context.Request); CompoundIdentity cid = JsonUtils.ToId(token["parentid"]); string outputType = (token["outputType"] != null) ? token["outputType"].ToString() : ""; string recurse = token["recurse"] != null ? token["recurse"].ToString() : null; //get default hierarchy OrganizationHierarchyProviderBase provider = OrganizationHierarchyManager.Instance.GetProvider(user); OrganizationHierarchy hierarchy = provider.GetReporting(); //get children ids IEnumerable <CompoundIdentity> children = null; if (recurse != null) { children = hierarchy.GetChildrenIds(cid, Convert.ToBoolean(recurse)); } else { children = hierarchy.GetChildrenIds(cid); } if (children == null) { RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]"); //empty return; } //return children ids or objects JArray jchildren = null; if (outputType.Equals("values")) { OrganizationProviderBase orgProvider = OrganizationManager.Instance.GetOrganizationProvider(user); List <Organization> orgs = new List <Organization>(); foreach (CompoundIdentity child in children) { orgs.Add(orgProvider.Get(child)); } jchildren = Jsonifier.ToJson(orgs); } else { jchildren = Jsonifier.ToJson(children); } if (jchildren != null) { RestUtils.Push(context.Response, JsonOpStatus.Ok, jchildren.ToString()); } else { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); //empty returned above } } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } return; } else if (method.Equals("parent", StringComparison.OrdinalIgnoreCase)) { try { CompoundIdentity cid = JsonUtils.ToId(JsonUtils.GetDataPayload(context.Request)); if (cid != null) { GetParent(cid, user, context, cancel); return; } RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); } catch { RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed)); return; } } else if (method.Equals("add", StringComparison.OrdinalIgnoreCase)) { try { //parse request JToken token = JsonUtils.GetDataPayload(context.Request); CompoundIdentity parent = JsonUtils.ToId(token["parentid"]); HashSet <CompoundIdentity> child_cids = JsonUtils.ToIds(token["childid"]); //1 or more //get default hierarchy OrganizationHierarchyProviderBase provider = OrganizationHierarchyManager.Instance.GetProvider(user); OrganizationHierarchy hierarchy = provider.GetReporting(); //insert bool result = hierarchy.Add(parent, child_cids); if (result == true) { RestUtils.Push(context.Response, JsonOpStatus.Ok); } else { RestUtils.Push(context.Response, JsonOpStatus.Failed); } } catch { RestUtils.Push(context.Response, JsonOpStatus.Failed); } return; } else if (method.Equals("move", StringComparison.OrdinalIgnoreCase)) { try { //parse request JToken token = JsonUtils.GetDataPayload(context.Request); CompoundIdentity old_cid = JsonUtils.ToId(token["parentid"]); CompoundIdentity new_cid = JsonUtils.ToId(token["newparentid"]); HashSet <CompoundIdentity> cids = JsonUtils.ToIds(token["childid"]); //get default hierarchy OrganizationHierarchyProviderBase provider = OrganizationHierarchyManager.Instance.GetProvider(user); OrganizationHierarchy hierarchy = provider.GetReporting(); //move bool result = hierarchy.Move(old_cid, new_cid, cids); if (result == true) { RestUtils.Push(context.Response, JsonOpStatus.Ok); } else { RestUtils.Push(context.Response, JsonOpStatus.Failed); } } catch { RestUtils.Push(context.Response, JsonOpStatus.Failed); } return; } else if (method.Equals("remove", StringComparison.OrdinalIgnoreCase)) { try { //parse request JToken token = JsonUtils.GetDataPayload(context.Request); CompoundIdentity parent_cid = JsonUtils.ToId(token["parentid"]); HashSet <CompoundIdentity> child_cids = JsonUtils.ToIds(token["childid"]); //get default hierarchy OrganizationHierarchyProviderBase provider = OrganizationHierarchyManager.Instance.GetProvider(user); OrganizationHierarchy hierarchy = provider.GetReporting(); //remove membership bool result = hierarchy.Remove(parent_cid, child_cids); if (result == true) { RestUtils.Push(context.Response, JsonOpStatus.Ok); } else { RestUtils.Push(context.Response, JsonOpStatus.Failed); } } catch { RestUtils.Push(context.Response, JsonOpStatus.Failed); } return; } } context.Response.StatusCode = HttpStatusCodes.Status400BadRequest; }