371 lines
9.3 KiB
C#
371 lines
9.3 KiB
C#
using SteamWare;
|
|
using System;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
|
|
namespace PUB.WebUserContols
|
|
{
|
|
public partial class tpl_header : SteamWare.UserControl
|
|
{
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
// altri controlli
|
|
if (!Page.IsPostBack)
|
|
{
|
|
Timer1.Interval = memLayer.ML.confReadInt("intUpdatePagina_ms");
|
|
Page.Title = titolo;// Request.Url.ToString();
|
|
// se ho cambiato pagina registro...)
|
|
if (devicesAuthProxy.pagPrecedente != titolo)
|
|
{
|
|
devicesAuthProxy.pagPrecedente = devicesAuthProxy.pagCorrente;
|
|
}
|
|
// salvo pagina corrente
|
|
devicesAuthProxy.pagCorrente = titolo;
|
|
}
|
|
// SOLO se la pagina NON E' "safe"...
|
|
if (memLayer.ML.confReadString("PageNoIndex").IndexOf(titolo) < 0)
|
|
{
|
|
bool userOk = checkUser();
|
|
bool pageOk = checkPageIsAuth() || checkUserHasRight();
|
|
// 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("~/MainMenu");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// rimando pagina x registrazione devices
|
|
Response.Redirect(memLayer.ML.CRS("urlGestUtenti"));
|
|
}
|
|
}
|
|
// aggiorno
|
|
doUpdate();
|
|
}
|
|
|
|
public void doUpdate()
|
|
{
|
|
// verifico in che "zona" sono ed i permessi...
|
|
lnkDashPAM.Visible = isPAM && hasPAM;
|
|
lnkHomePAM.Visible = isPAM && hasPAM;
|
|
if (isPAM)
|
|
{
|
|
//"btn-light text-dark"
|
|
if (titolo == "MyHome")
|
|
{
|
|
lnkHomePAM.Attributes.Remove("class");
|
|
lnkHomePAM.Attributes.Add("class", "nav-item mx-1 btn-secondary");
|
|
}
|
|
if (titolo == "MyDashboard")
|
|
{
|
|
lnkDashPAM.Attributes.Remove("class");
|
|
lnkDashPAM.Attributes.Add("class", "nav-item mx-1 btn-secondary");
|
|
}
|
|
}
|
|
|
|
lnkPAZ.Visible = isPAZ && hasPAZ;
|
|
|
|
lnkPBO.Visible = isPBO && hasPBO;
|
|
|
|
lnkPCO.Visible = isPCO && hasPCO;
|
|
|
|
// info e contatti nascosti SE sono in aree PAM/PAZ/PBO/PCO...
|
|
lnkAbout.Visible = !(isPAM || isPAZ || isPBO || isPCO);
|
|
lnkContact.Visible = !(isPAM || isPAZ || isPBO || isPCO);
|
|
}
|
|
/// <summary>
|
|
/// Ruolo utente
|
|
/// </summary>
|
|
public string UserRole
|
|
{
|
|
get
|
|
{
|
|
return memLayer.ML.StringSessionObj("UserRole");
|
|
}
|
|
set
|
|
{
|
|
memLayer.ML.setSessionVal("UserRole", value);
|
|
}
|
|
}
|
|
|
|
public string userClass
|
|
{
|
|
get
|
|
{
|
|
string answ = "";
|
|
switch (UserRole)
|
|
{
|
|
case "amministratore":
|
|
answ = "text-danger";
|
|
break;
|
|
case "azienda":
|
|
answ = "text-warning";
|
|
break;
|
|
case "condomini.it":
|
|
answ = "text-info";
|
|
break;
|
|
case "condominio":
|
|
answ = "text-primary";
|
|
break;
|
|
default:
|
|
answ = "text-primary";
|
|
break;
|
|
}
|
|
return answ;
|
|
}
|
|
}
|
|
|
|
public bool isPAM
|
|
{
|
|
get
|
|
{
|
|
return Page.Request.Url.AbsolutePath.Contains("/PAM/");
|
|
}
|
|
}
|
|
public bool isPAZ
|
|
{
|
|
get
|
|
{
|
|
return Page.Request.Url.AbsolutePath.Contains("/PAZ/");
|
|
}
|
|
}
|
|
public bool isPBO
|
|
{
|
|
get
|
|
{
|
|
return Page.Request.Url.AbsolutePath.Contains("/PBO/");
|
|
}
|
|
}
|
|
public bool isPCO
|
|
{
|
|
get
|
|
{
|
|
return Page.Request.Url.AbsolutePath.Contains("/PCO/");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Verifica se utente ABBIA diritti PAM
|
|
/// </summary>
|
|
public bool hasPAM
|
|
{
|
|
get
|
|
{
|
|
return devicesAuthProxy.stObj.userHasRight("PAM");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Verifica se utente ABBIA diritti PAZ
|
|
/// </summary>
|
|
public bool hasPAZ
|
|
{
|
|
get
|
|
{
|
|
return devicesAuthProxy.stObj.userHasRight("PAZ");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Verifica se utente ABBIA diritti PBO
|
|
/// </summary>
|
|
public bool hasPBO
|
|
{
|
|
get
|
|
{
|
|
return devicesAuthProxy.stObj.userHasRight("PBO");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Verifica se utente ABBIA diritti PCO
|
|
/// </summary>
|
|
public bool hasPCO
|
|
{
|
|
get
|
|
{
|
|
return devicesAuthProxy.stObj.userHasRight("PCO");
|
|
}
|
|
}
|
|
protected void txtSearch_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// salvo ricerca
|
|
memLayer.ML.setSessionVal("siteSearchVal", txtSearch.Text.Trim());
|
|
}
|
|
|
|
/// <summary>
|
|
/// verifica che l'utente ABBIA il diritto della sezione corrente (es PBO, PAM, ...)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private bool checkUserHasRight()
|
|
{
|
|
bool allOk = false;
|
|
if (isPAM)
|
|
{
|
|
allOk = devicesAuthProxy.stObj.userHasRight("PAM");
|
|
}
|
|
else if (isPAZ)
|
|
{
|
|
allOk = devicesAuthProxy.stObj.userHasRight("PAZ");
|
|
}
|
|
else if (isPBO)
|
|
{
|
|
allOk = devicesAuthProxy.stObj.userHasRight("PBO");
|
|
}
|
|
else if (isPCO)
|
|
{
|
|
allOk = devicesAuthProxy.stObj.userHasRight("PCO");
|
|
}
|
|
return allOk;
|
|
}
|
|
/// <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("PageNoIndex").IndexOf(titolo) >= 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;
|
|
if (!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>
|
|
/// Restituisce IP corrente
|
|
/// </summary>
|
|
public string currentIP
|
|
{
|
|
get
|
|
{
|
|
string answ = "0.0.0.0";
|
|
try
|
|
{
|
|
answ = Request.UserHostAddress;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
}
|
|
public bool userIsAdmin
|
|
{
|
|
get
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
answ = devicesAuthProxy.stObj.userHasRight("SuperAdmin");
|
|
}
|
|
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 (Exception exc)
|
|
{ }
|
|
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);
|
|
}
|
|
}
|
|
} |