fleet-contractor/IronIntelContractor/Site/IronIntelHttpHandlerBase.cs

152 lines
4.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Web;
using Foresight.Security;
using IronIntel.Services;
using IronIntel.Services.Users;
using IronIntel.Services.Customers;
namespace IronIntel.Contractor.Site
{
public class IronIntelHttpHandlerBase : IDisposable
{
public static string LocalHostName
{
get { return IronIntelBasePage.LocalHostName; }
}
public HttpContext Context { get; private set; }
protected LoginSession LoginSession { get; private set; }
protected int ClientTimeOffset { get; private set; }
public IronIntelHttpHandlerBase(HttpContext context)
{
Context = context;
try
{
LoginSession = GetCurrentLoginSession();
}
catch
{
LoginSession = null;
}
ClientTimeOffset = GetClientTimeOffset();
}
public virtual string GetIronSystemServiceAddress()
{
return ConfigurationManager.AppSettings["syssvcaddress"];
}
public virtual IronSysServiceClient GetSystemServiceClient()
{
IronSysServiceClient ic = new IronSysServiceClient(GetIronSystemServiceAddress());
if (LoginSession != null)
{
ic.AppName = LoginSession.AppName;
ic.LoginSessionID = LoginSession.SessionID;
ic.CurrentUserIID = LoginSession.User.UID;
}
return ic;
}
public virtual CustomerProvider GetCustomerProvider()
{
CustomerProvider ic = new CustomerProvider(GetIronSystemServiceAddress());
if (LoginSession != null)
{
ic.AppName = LoginSession.AppName;
ic.LoginSessionID = LoginSession.SessionID;
ic.CurrentUserIID = LoginSession.User.UID;
}
return ic;
}
public LoginSession GetCurrentLoginSession()
{
HttpCookie cookie = Context.Request.Cookies[IronIntelBasePage.LOGINSESSION_COOKIENAME];
if (cookie == null)
{
return null;
}
if (string.IsNullOrWhiteSpace(cookie.Value))
{
return null;
}
string sessionid = IronIntelBasePage.DecryptString(cookie.Value);
try
{
LoginProvider ic = new LoginProvider(GetIronSystemServiceAddress());
return ic.GetLoginSession(sessionid);
}
catch
{
return null;
}
}
private int GetClientTimeOffset()
{
HttpCookie cookie = Context.Request.Cookies[IronIntelBasePage.CLIENT_TIMEOFFSET_COOKIENAME];
if (cookie == null)
{
return IronIntelBasePage.LocalTimeOffset;
}
if (string.IsNullOrWhiteSpace(cookie.Value))
{
return IronIntelBasePage.LocalTimeOffset;
}
int n = 0;
if (int.TryParse(cookie.Value, out n))
{
return n;
}
else
{
return IronIntelBasePage.LocalTimeOffset;
}
}
public static string ReadTextFromStream(System.IO.Stream stream)
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(stream))
{
return sr.ReadToEnd();
}
}
public virtual void ProcessRequest()
{
}
private bool disposed = false;
protected void Dispose(bool disposed)
{
Context = null;
LoginSession = null;
}
public void Dispose()
{
if (!disposed)
{
Dispose(true);
disposed = true;
}
}
public string UserHostAddress
{
get
{
return IronIntelBasePage.GetUserHostAddress(Context.Request);
}
}
}
}