Files
b2bcondomini.it/PUB/WebUserContols/tpl_header.ascx.cs
T
Samuele E. Locatelli 07f562f71e Aggiunta pagina HELP x PAZ
2018-10-02 11:37:26 +02:00

428 lines
11 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;
// se c'è reimposto ricerca...
if (searchVal != "")
{
txtSearch.Text = searchVal;
}
}
// faccio comunque controlli utente...
bool userOk = checkUser();
bool pageOk = checkPageIsAuth() || checkUserHasRight();
// SOLO se la pagina NON E' "safe"...
if (memLayer.ML.confReadString("PageNoIndex").IndexOf(titolo) < 0)
{
// 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();
// se sono AUTH e sono ancora su login --> vado a MainMenu...
if (devicesAuthProxy.stObj.isAuth && titolo == "Login")
{
//devicesAuthProxy.pagPrecedente = devicesAuthProxy.pagCorrente;
Response.Redirect(titolo);
}
}
public void doUpdate()
{
// verifico in che "zona" sono ed i permessi...
lnkDashPAM.Visible = isPAM && hasPAM;
lnkHomePAM.Visible = isPAM && hasPAM;
lnkHelpPAM.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");
}
}
lnkDashPAZ.Visible = isPAZ && hasPAZ;
lnkHomePAZ.Visible = isPAZ && hasPAZ;
lnkHelpPAZ.Visible = isPAZ && hasPAZ;
if (isPAZ)
{
//"btn-light text-dark"
if (titolo == "MyHome")
{
lnkHomePAZ.Attributes.Remove("class");
lnkHomePAZ.Attributes.Add("class", "nav-item mx-1 btn-secondary");
}
if (titolo == "MyDashboard")
{
lnkDashPAZ.Attributes.Remove("class");
lnkDashPAZ.Attributes.Add("class", "nav-item mx-1 btn-secondary");
}
}
lnkDashPBO.Visible = isPBO && hasPBO;
lnkHomePBO.Visible = isPBO && hasPBO;
lnkHelpPBO.Visible = isPBO && hasPBO;
if (isPBO)
{
//"btn-light text-dark"
if (titolo == "MyHome")
{
lnkHomePBO.Attributes.Remove("class");
lnkHomePBO.Attributes.Add("class", "nav-item mx-1 btn-secondary");
}
if (titolo == "MyDashboard")
{
lnkDashPBO.Attributes.Remove("class");
lnkDashPBO.Attributes.Add("class", "nav-item mx-1 btn-secondary");
}
}
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
searchVal = txtSearch.Text.Trim();
}
public string searchVal
{
get
{
return memLayer.ML.StringSessionObj("siteSearchVal");
}
set
{
memLayer.ML.setSessionVal("siteSearchVal", value);
}
}
/// <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);
}
}
}