2023-10-31 11:47:27 -04:00

87 lines
2.6 KiB
C#
Executable File

using System;
using System.Web;
using System.Web.UI;
using Mocha.Core;
using Mocha.OMS;
namespace Mocha.Web
{
public partial class Page : System.Web.UI.Page
{
protected override void OnInitComplete(EventArgs e)
{
base.OnInitComplete(e);
Oms oms = this.GetOMS();
if (oms == null) return;
object oCid = RouteData.Values["ClassID"];
object oIid = RouteData.Values["InstanceID"];
object rCid = RouteData.Values["RelatedClassID"];
object rIid = RouteData.Values["RelatedInstanceID"];
if (oCid == null && oIid == null)
{
// Master.PageTitle = "Welcome, New User!";
return;
}
int cid = -1, iid = -1;
if (!(Int32.TryParse(oCid.ToString(), out cid) && Int32.TryParse(oIid.ToString(), out iid)))
{
// label.Text = "parse failed";
return;
}
Instance inst = oms.GetInstance(new InstanceKey(cid, iid));
if (inst == null)
{
return;
}
OmsContext context = new OmsContext();
context.CallStack.Push(new OmsCallStack(oms.GetInstanceKey(inst), new OmsVariable[]
{
new OmsVariable(oms.GetInstance(KnownInstanceGuids.PromptValueClasses.This_Instance), inst)
}));
// determine page security
// Securable Object.secured to Method (returning an Instance Set):
// Anyone | Authenticated Users | (specific user, group, or domain Instance Set)
Instance instSecurityMethod = oms.GetRelatedInstance(inst, KnownRelationshipGuids.Securable_Item__secured_by__Method);
object rv = oms.ExecuteMethod(instSecurityMethod, context);
if (rv is Instance[])
{
Instance[] secInsts = (Instance[])rv;
for (int i = 0; i < secInsts.Length; i++)
{
if (secInsts[i].GlobalIdentifier == KnownInstanceGuids.SecurityDomains.Anyone)
{
break;
}
if (secInsts[i].GlobalIdentifier == KnownInstanceGuids.SecurityDomains.AuthenticatedUsers)
{
this.SetTenantedVariable("LoginRedirectURL", Request.Path);
string loginURL = System.Configuration.ConfigurationManager.AppSettings["Authentication.LoginURL"];
Response.Redirect(loginURL.Replace("~/", String.Format("~/{0}/", this.GetCurrentTenantName())));
return;
}
}
}
// Security Domain@get Anyone instance GSI - Get Specific Instance
// Security Domain@get Authenticated Users instance GSI - Get Specific Instance
Instance instClass = oms.GetParentClass(inst);
OmsVariable[] promptValues = null;
IOmsResponse resp = oms.ExecuteInstance(context, inst, null);
PageBuilder pb = new PageBuilder((SessionContext)Session["SessionContext"]);
pb.RenderResponse(resp, PageBuilderPageContent);
}
}
}