57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
using System;
|
|
using System.Threading;
|
|
namespace ln.application
|
|
{
|
|
public class ApplicationContext
|
|
{
|
|
static ThreadLocal<ApplicationContext> currentApplicationContext = new ThreadLocal<ApplicationContext>();
|
|
public static void SetCurrentContext(ApplicationContext applicationContext) => currentApplicationContext.Value = applicationContext;
|
|
public static void ClearCurrentContext() => currentApplicationContext.Value = null;
|
|
|
|
public Guid ContextID { get; }
|
|
public DateTime Created { get; }
|
|
public DateTime LastAccess { get; protected set; }
|
|
|
|
public TimeSpan Age => LastAccess - Created;
|
|
public TimeSpan Untouched => DateTime.Now - LastAccess;
|
|
|
|
public Application Application { get; }
|
|
public AuthenticatedUser CurrentUser { get; protected set; }
|
|
|
|
|
|
public ApplicationContext(Application application)
|
|
{
|
|
ContextID = Guid.NewGuid();
|
|
Created = DateTime.Now;
|
|
LastAccess = Created;
|
|
|
|
Application = application;
|
|
CurrentUser = AuthenticatedUser.Anonymous;
|
|
}
|
|
|
|
protected void UpdateLastAccess()
|
|
{
|
|
LastAccess = DateTime.Now;
|
|
}
|
|
|
|
public virtual bool AuthenticateUser(string username,object prove)
|
|
{
|
|
AuthenticatedUser authenticatedUser = Application.AuthenticateUser(username, prove);
|
|
if (authenticatedUser != null)
|
|
{
|
|
CurrentUser = authenticatedUser;
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
CurrentUser = AuthenticatedUser.Anonymous;
|
|
return false;
|
|
}
|
|
}
|
|
public virtual void DeauthenticateUser()
|
|
{
|
|
CurrentUser = AuthenticatedUser.Anonymous;
|
|
}
|
|
}
|
|
}
|