87 lines
2.6 KiB
C#
Executable File
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);
|
|
}
|
|
}
|
|
}
|