Files
admodelling.org/INTERFACE/WebLCP/login.aspx.cs
T
2019-10-15 09:53:41 +02:00

200 lines
5.8 KiB
C#

using SteamWare;
using System;
using System.Web;
using System.Web.UI;
namespace WebLCP
{
public partial class login : UserPage
{
protected string _nextPage
{
get
{
string pagina = SteamWare.memLayer.ML.StringSessionObj("nextPage");
if (pagina == "")
{
pagina = "default.aspx";
}
return pagina;
}
}
/// <summary>
/// Elenco pagine "safe" da web.config
/// </summary>
protected string safePages
{
get
{
return memLayer.ML.confReadString("_safePages").ToLower();
}
}
protected void Page_Load(object sender, EventArgs e)
{
logger.lg.scriviLog("Starting login...");
if (!Page.IsPostBack)
{
Page.Title = titolo;// Request.Url.ToString();
// se ho cambiato pagina registro...)
if (devicesAuthProxy.pagPrecedente.ToLower() != titolo.ToLower())
{
devicesAuthProxy.pagPrecedente = devicesAuthProxy.pagCorrente;
}
// salvo pagina corrente
devicesAuthProxy.pagCorrente = titolo;
}
// SOLO se la pagina NON E' "safe"... e NON E' login
if (safePages.IndexOf(titolo.ToLower()) < 0 || titolo.ToLower() == "login")
{
bool userOk = checkUser();
bool pageOk = checkPageIsAuth();
// controllo se c'è utente in sessione..
if ((userOk))
{
// ora controllo pagina...
if (!pageOk)
{
if (devicesAuthProxy.stObj.isPageEnabled(devicesAuthProxy.pagPrecedente))
{
Response.Redirect(devicesAuthProxy.pagPrecedente);
}
else
{
Response.Redirect("JobsList");
}
}
}
else
{
// rimando pagina x registrazione devices
Response.Redirect("Default");
}
}
if (devicesAuthProxy.stObj.isAuth)
{
logger.lg.scriviLog(string.Format("Login completed for user {0}", devicesAuthProxy.stObj.email));
Response.Redirect("JobsList");
}
else
{
string usrHostAddr = Request.UserHostAddress;
string usrAgent = Request.UserAgent;
string usrHostName = Request.UserHostName;
logger.lg.scriviLog(string.Format("Login NOT completed for request by host: {0} | hostname: {1} | agent: {2}", usrHostAddr, usrHostName, usrAgent));
Response.Redirect("Default");
}
}
/// <summary>
/// verifica che la pagina sia tra quelle autorizzate x l'utente
/// </summary>
/// <returns></returns>
private bool checkPageIsAuth()
{
bool allOk = false;
bool pageSafe = (memLayer.ML.confReadString("_safePages").ToUpper().IndexOf(titolo.ToUpper()) >= 0);
bool pageAuth = devicesAuthProxy.stObj.isPageEnabled(titolo);
allOk = (pageSafe || pageAuth);
return allOk;
}
/// <summary>
/// verifica presenza utente autorizzato in sessione
/// </summary>
private bool checkUser()
{
bool allOk = devicesAuthProxy.stObj.isAuth;
// controllo cookie device...
allOk = checkAuthCookie();
if (!allOk)
{
ResetUser();
}
return allOk;
}
/// <summary>
/// Restituisce cognome/nome da sessione...
/// </summary>
public string CognomeNome
{
get
{
string answ = "-";
try
{
answ = SteamWare.devicesAuthProxy.stObj.CognomeNome;
}
catch
{ }
return answ;
}
}
/// <summary>
/// verifica la presenza di un cookie VALIDO per autorizzare il device ed avvia utente...
/// </summary>
private bool checkAuthCookie()
{
bool answ = false;
try
{
HttpCookie cookie = Request.Cookies[devicesAuthProxy.AuthCookieName];
if (!(cookie == null || cookie.Value == ""))
{
// ricavo utente da cookie...
string userAgent = "";
string postazione_IP = "";
string devSecret = cookie.Value;
DS_Auth.AnagDevicesRow device = null;
// cerco il device...ogni dipendente può averne + di 1 registrato a suo nome...
string email = "";
try
{
device = devicesAuthProxy.stObj.taAnagDev.getByDeviceSecret(devSecret)[0];
email = device.USER_NAME;
}
catch
{ }
if (email != "")
{
// aggiorno descrizione (user agent) ed IP...
userAgent = Request.UserAgent;
postazione_IP = Request.UserHostAddress;
// controllo IP e DeviceDescription x eventuale update
if ((device.lastIPv4 != postazione_IP) || (device.Description != userAgent))
{
// salvo ultimo "contatto" del device aggiornando descrizione ed IP
devicesAuthProxy.stObj.taAnagDev.updateIP(device.IdxDevice, DateTime.Now, postazione_IP, userAgent);
}
// salvo in sessione utente
memLayer.ML.setSessionVal("email", email);
// avvio utente...
devicesAuthProxy.stObj.startUpUtente(email);
// salvo gruppo...
if (devicesAuthProxy.stObj.isAuth)
{
// se tutto ok
memLayer.ML.setSessionVal("Gruppo", devicesAuthProxy.stObj.rigaUtente.CodGruppo);
answ = true;
}
}
}
}
catch (Exception exc)
{
logger.lg.scriviLog(string.Format("Errore in checkAuthCookie:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION);
}
return answ;
}
private void ResetUser()
{
devicesAuthProxy.stObj.clearAllUserData();
// svuoto cookie...
memLayer.ML.setCookieVal(devicesAuthProxy.AuthCookieName, "");
memLayer.ML.emptyCookieVal(devicesAuthProxy.AuthCookieName);
}
}
}