Files
2021-11-02 09:45:20 +01:00

1092 lines
35 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using ETS_Data;
using System.IO;
using System.Web;
using NLog;
namespace ETS_Data
{
/// <summary>
/// classe gestione utente: auth e permission/ruoli - versione GENERICA
/// </summary>
public class user_std
{
/* Classe che si occupa di:
* ----------------------------------------
* 1) gestione username
* 2) gestione ruoli da anagrafica
* 3) gestione declinazione ruoli in permessi
* 4) gestione vocabolario
*
* in Standard GENERICO
*/
#region Protected Fields
protected Logger lg = LogManager.GetCurrentClassLogger();
#endregion Protected Fields
#region Public Fields
/// <summary>
/// versione statica della classe utente come singleton UtenTeSignletoN
/// </summary>
public static user_std UtSn = new user_std();
#endregion Public Fields
#region Public Constructors
/// <summary>
/// inizializza la gestione utente...
/// </summary>
public user_std()
{
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// pagina correntemente visualizzata (URL in sessione)
/// </summary>
public static string pagCorrente
{
get
{
return utils.obj.StringSessionObj("pagCorrente");
}
set
{
utils.obj.setSessionVal("pagCorrente", value);
}
}
/// <summary>
/// pagina precedentemente visualizzata (URL in sessione)
/// </summary>
public static string pagPrecedente
{
get
{
return utils.obj.StringSessionObj("pagPrecedente");
}
set
{
utils.obj.setSessionVal("pagPrecedente", value);
}
}
/// <summary>
/// restituisce una stringa formattata con cognome
/// </summary>
public string cognome
{
get
{
string answ = "";
if (isAuth)
{
answ = string.Format("{0}", rigaUtente.COGNOME);
}
return answ;
}
}
/// <summary>
/// restituisce una stringa formattata con cognome e nome
/// </summary>
public string CognomeNome
{
get
{
string answ = "";
if (isAuth)
{
answ = string.Format("{0} {1}", rigaUtente.COGNOME, rigaUtente.NOME);
}
return answ;
}
}
/// <summary>
/// restituisce una stringa formattata con cognome, nome e matricola
/// </summary>
public string CognomeNomeMatr
{
get
{
return string.Format("{0} {1} ({2})", rigaUtente.COGNOME, rigaUtente.NOME, rigaUtente.MATRICOLA);
}
}
/// <summary>
/// utente correntemente connesso per utilizzo FileSystem (Formato dominio.username)
/// </summary>
public string currUser_FS
{
get
{
return currUserAD.Replace(@"\", ".");
}
}
/// <summary>
/// utente correntemente connesso (Formato dominio\username)
/// </summary>
public string currUserAD
{
get
{
string answ = "";
try
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
answ = HttpContext.Current.User.Identity.Name;
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// utente correntemente connesso (Formato Cognome nome)
/// </summary>
public string currUserCognomeNome
{
get
{
string answ = "-";
try
{
// controllo in sessione...
if (utils.obj.isInSessionObject("currUserCognomeNome"))
{
answ = utils.obj.StringSessionObj("currUserCognomeNome");
}
else
{
// cerco user da elenco...
DS_Anagrafica.UtentiRow riga = (DS_Anagrafica.UtentiRow)utils.obj.taUtenti.getByKey(currUserAD)[0];
answ = string.Format("{0} {1}", riga.Cognome, riga.Nome);
utils.obj.setSessionVal("currUserCognomeNome", answ);
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// EMAIL utente correntemente connesso
/// </summary>
public string currUserEmail
{
get
{
string answ = "info@ets.it";
try
{
// controllo in sessione...
if (utils.obj.isInSessionObject("currUserEmail"))
{
answ = utils.obj.StringSessionObj("currUserEmail");
}
else
{
// cerco user da elenco...
DS_Anagrafica.UtentiRow riga = (DS_Anagrafica.UtentiRow)utils.obj.taUtenti.getByKey(currUserAD)[0];
answ = riga.email;
utils.obj.setSessionVal("currUserEmail", answ);
}
}
catch
{
answ = "info@ets.it";
}
return answ;
}
}
/// <summary>
/// UserId (AD) utente correntemente connesso
/// </summary>
public string currUserId
{
get
{
// controllo e salvo in sessione se necessario...
if (!utils.obj.isInSessionObject("currUserId"))
{
utils.obj.setSessionVal("currUserId", currUserAD);
}
return currUserAD;
}
}
/// <summary>
/// utente correntemente connesso (Formato Nome Cognome)
/// </summary>
public string currUserNomeCognome
{
get
{
string answ = "-";
try
{
// controllo in sessione...
if (utils.obj.isInSessionObject("currUserNomeCognome"))
{
answ = utils.obj.StringSessionObj("currUserNomeCognome");
}
else
{
// cerco user da elenco...
DS_Anagrafica.UtentiRow riga = (DS_Anagrafica.UtentiRow)utils.obj.taUtenti.getByKey(currUserAD)[0];
answ = string.Format("{0} {1}", riga.Nome, riga.Cognome);
utils.obj.setSessionVal("currUserNomeCognome", answ);
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// restituisce la tabella diritti da session
/// </summary>
public DataLayer_AnagGen.DIRITTIDataTable diritti
{
get
{
return (DataLayer_AnagGen.DIRITTIDataTable)utils.obj.objSessionObj("dirittiUtente");
}
set
{
utils.obj.setSessionVal("dirittiUtente", value);
}
}
/// <summary>
/// oggetto dominio con metodi get/set
/// </summary>
public string dominio
{
get
{
return utils.obj.StringSessionObj("DOMINIO");
}
set
{
utils.obj.setSessionVal("DOMINIO", value);
}
}
/// <summary>
/// è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in precedenza...
/// </summary>
public bool isAuth
{
get
{
return (utente != "" && dominio != "");
}
}
/// <summary>
/// restituisce true se utente forzato da forceUser.aspx
/// </summary>
public bool isForcedUser
{
get
{
return utils.obj.BoolSessionObj("isForcedUser");
}
set
{
utils.obj.setSessionVal("isForcedUser", value);
}
}
/// <summary>
/// oggetto lingua utente con metodi get/set
/// </summary>
public string lingua
{
get
{
return utils.obj.StringSessionObj("Lingua").ToUpper();
}
set
{
utils.obj.setSessionVal("Lingua", value);
}
}
/// <summary>
/// fornisce un file XML della mappa del sito abilitato per l'utente...
/// </summary>
public string mappaSito
{
get
{
return utils.obj.StringSessionObj("mappaSito");
}
set
{
utils.obj.setSessionVal("mappaSito", value);
}
}
/// <summary>
/// oggetto modulo (applicazione) con metodi get/set
/// </summary>
public string modulo
{
get
{
return utils.obj.confReadString("CodModulo");
}
}
/// <summary>
/// restituisce una stringa formattata con nome
/// </summary>
public string nome
{
get
{
string answ = "";
if (isAuth)
{
answ = string.Format("{0}", rigaUtente.NOME);
}
return answ;
}
}
/// <summary>
/// restituisce una stringa formattata con nome e cognome
/// </summary>
public string NomeCognome
{
get
{
string answ = "";
if (isAuth)
{
answ = string.Format("{0} {1}", rigaUtente.NOME, rigaUtente.COGNOME);
}
return answ;
}
}
/// <summary>
/// oggetto password con metodi get/set
/// </summary>
public string passwd
{
get
{
return utils.obj.StringSessionObj("passwd");
}
set
{
utils.obj.setSessionVal("passwd", value);
}
}
/// <summary>
/// tabella dei permessi utente
/// </summary>
public DataLayer_AnagGen.PermessiDataTable permessi
{
get
{
DataLayer_AnagGen.PermessiDataTable tabPermessi = null;
try
{
tabPermessi = (DataLayer_AnagGen.PermessiDataTable)utils.obj.objSessionObj("permessiUtente");
}
catch (Exception exc)
{
lg.Error($"Errore recupero permessi!{Environment.NewLine}{exc}");
}
return tabPermessi;
}
set
{
utils.obj.setSessionVal("permessiUtente", value);
}
}
/// <summary>
/// tabella dei permessi utente di tipo "WRITE" enabled
/// </summary>
public DataLayer_AnagGen.PermessiDataTable permessiWrite
{
get
{
return (DataLayer_AnagGen.PermessiDataTable)utils.obj.objSessionObj("permessiUtenteWrite");
}
set
{
utils.obj.setSessionVal("permessiUtenteWrite", value);
}
}
/// <summary>
/// restituisce i valori della riga utente da db
/// </summary>
public DataLayer_AnagGen.UTENTERow rigaUtente
{
get
{
return (DataLayer_AnagGen.UTENTERow)utils.obj.objSessionObj("rigaUtente");
}
set
{
utils.obj.setSessionVal("rigaUtente", value);
}
}
/// <summary>
/// restituisce una stringa della sigla dell'utente
/// </summary>
public string sigla
{
get
{
string answ = "";
if (isAuth)
{
answ = rigaUtente.SIGLA;
}
return answ;
}
}
/// <summary>
/// retituisce username AD
/// </summary>
public string userNameAD
{
get
{
return string.Format(@"{0}\{1}", dominio, utente);
}
}
/// <summary>
/// oggetto utente con metodi get/set
/// </summary>
public string utente
{
get
{
return utils.obj.StringSessionObj("USER_NAME");
}
set
{
utils.obj.setSessionVal("USER_NAME", value);
}
}
#endregion Public Properties
#region Protected Methods
/// <summary>
/// cancella da session l'utente
/// </summary>
protected void clearAllUserData()
{
utils.obj.emptySessionVal("USER_NAME");
utils.obj.emptySessionVal("DOMINIO");
utils.obj.emptySessionVal("permessiUtente");
}
/// <summary>
/// Effettua setup dei permessi una volta salvati i diritti
/// </summary>
protected virtual void setPermessiDaDiritti()
{
// proseguo coi permessi
DataLayer_AnagGen.PermessiDataTable allPermessi = DataWrap.DW.taPermessi.GetData();
DataLayer_AnagGen.Permessi2FunzioneDataTable allPerm2Funz = DataWrap.DW.taPermessi2Funzione.GetData();
DataLayer_AnagGen.PermessiDataTable _permessiUtente = new DataLayer_AnagGen.PermessiDataTable();
DataLayer_AnagGen.PermessiDataTable _permessiUtenteWrite = new DataLayer_AnagGen.PermessiDataTable();
string filtroFunz, filtroPerm, filtroPermWrite;
filtroPerm = " COD_PERMESSO IN (";
filtroPermWrite = " COD_PERMESSO IN (";
// filtro i diritti utente x non avere duplicati...
Dictionary<string, string> funzioniUtente = new Dictionary<string, string>();
foreach (DataLayer_AnagGen.DIRITTIRow riga in diritti)
{
try
{
funzioniUtente.Add(riga.COD_FUNZIONE, riga.COD_FUNZIONE);
}
catch
{ }
}
foreach (KeyValuePair<string, string> kvp in funzioniUtente)
{
filtroFunz = string.Format("COD_FUNZIONE='{0}'", kvp.Value);
// recupero le righe dei righe2perm
DataLayer_AnagGen.Permessi2FunzioneRow[] righe_p2f = (DataLayer_AnagGen.Permessi2FunzioneRow[])allPerm2Funz.Select(filtroFunz);
foreach (DataLayer_AnagGen.Permessi2FunzioneRow riga_p2f in righe_p2f)
{
filtroPerm += string.Format("'{0}', ", riga_p2f.COD_PERMESSO);
// se è write metto in tab relativa...
try
{
if (riga_p2f.READWRITE == "S")
{
filtroPermWrite += string.Format("'{0}', ", riga_p2f.COD_PERMESSO);
}
}
catch
{
}
}
}
if (filtroPerm == " COD_PERMESSO IN (")
{
filtroPerm += "'PermessiNonTrovati' ";
}
filtroPerm = filtroPerm.Remove(filtroPerm.Length - 2);
filtroPerm += ") ";
DataLayer_AnagGen.PermessiRow[] righePerm = (DataLayer_AnagGen.PermessiRow[])allPermessi.Select(filtroPerm, "GRUPPO, NUMERO");
foreach (DataLayer_AnagGen.PermessiRow rigaPerm in righePerm)
{
_permessiUtente.ImportRow(rigaPerm);
}
permessi = _permessiUtente;
// salvo, se ci sono, permessi write...
if (filtroPermWrite != " COD_PERMESSO IN (")
{
filtroPermWrite = filtroPermWrite.Remove(filtroPermWrite.Length - 2);
filtroPermWrite += ") ";
DataLayer_AnagGen.PermessiRow[] righePermW = (DataLayer_AnagGen.PermessiRow[])allPermessi.Select(filtroPermWrite, "GRUPPO, NUMERO");
foreach (DataLayer_AnagGen.PermessiRow rigaPerm in righePermW)
{
_permessiUtenteWrite.ImportRow(rigaPerm);
}
}
permessiWrite = _permessiUtenteWrite;
}
/// <summary>
/// Carica la tabella diritti dell'utente da db e salva in session
/// </summary>
protected virtual void setupDirittiPermessi()
{
DataLayer_AnagGen.DIRITTIDataTable _dirittiUtente = DataWrap.DW.taDiritti.GetByUserDominioModulo(utente, dominio, modulo);
diritti = _dirittiUtente; // salvo in session i diritti..
setPermessiDaDiritti();
}
/// <summary>
/// Carica la tabella diritti dell'utente da db e salva in session SOLO per il CDC indicato
/// </summary>
/// <param name="cdc"></param>
protected virtual void setupDirittiPermessi(string cdc)
{
DataLayer_AnagGen.DIRITTIDataTable _dirittiUtente = DataWrap.DW.taDiritti.GetByUserDominioModuloCdc(utente, dominio, modulo, cdc);
diritti = _dirittiUtente; // salvo in session i diritti..
setPermessiDaDiritti();
}
/// <summary>
/// Carica la tabella diritti dell'utente da db e salva in session
/// </summary>
protected virtual void setupDirittiPermessiByUsername()
{
DataLayer_AnagGen.DIRITTIDataTable _dirittiUtente = DataWrap.DW.taDiritti.GetByUserModulo(utente, modulo);
diritti = _dirittiUtente; // salvo in session i diritti..
setPermessiDaDiritti();
}
/// <summary>
/// carica la riga dati utente
/// </summary>
protected virtual void setupRiga()
{
//logger.lg.scriviLog(string.Format(@"setupRiga x utente {0}\{1}", dominio, utente), tipoLog.STARTUP);
DataLayer_AnagGen.UTENTERow _rigaUtenteAnagGen = ((DataLayer_AnagGen.UTENTERow)DataWrap.DW.taUtente.GetDataByUtenteDominio(utente, dominio).Rows[0]);
rigaUtente = _rigaUtenteAnagGen;
}
#endregion Protected Methods
#region Public Methods
/// <summary>
/// verifica le credenziali AD dell'utente...
/// </summary>
/// <param name="dominio"></param>
/// <param name="username"></param>
/// <returns></returns>
public virtual bool ADuserOk(string dominio, string username)
{
bool isOk = false;
// ...verifico sia in tabella utenti...
bool isOkUser = false;
// ...e che abbia diritti per l'applicativo...
bool isOkPerm = false;
// controllo se richiesta autenticazione completa dominio + username o solo username...
bool authSenzaDominio = false;
try
{
authSenzaDominio = utils.obj.confReadBool("authSenzaDominio");
}
catch
{ }
if (authSenzaDominio)
{
isOkUser = (DataWrap.DW.taUtente.getByUserName(username).Rows.Count >= 1);
isOkPerm = (DataWrap.DW.taDiritti.GetByUserModulo(username, modulo).Rows.Count >= 1);
}
else
{
isOkUser = (DataWrap.DW.taUtente.GetDataByUtenteDominio(username, dominio).Rows.Count >= 1);
isOkPerm = (DataWrap.DW.taDiritti.GetByUserDominioModulo(username, dominio, modulo).Rows.Count >= 1);
}
// risultato...
isOk = (isOkUser && isOkPerm);
return isOk;
}
/// <summary>
/// assegna il diritto all'utente indicato
/// </summary>
/// <param name="username"></param>
/// <param name="cod_cdc"></param>
/// <param name="cod_modulo"></param>
/// <param name="cod_funzione"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool assegnaDirittoUtente(string username, string cod_cdc, string cod_modulo, string cod_funzione)
{
bool answ = false;
try
{
DataWrap.DW.taDiritti.Insert(username, cod_cdc, cod_modulo, cod_funzione, "-1");
answ = true;
}
catch (Exception exc)
{
lg.Error($"Eccezione:{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio...
/// </summary>
/// <param name="userNameFull">{dominio\}userName</param>
/// <returns></returns>
public string CognomeNomeDaUser(string userNameFull)
{
string answ = "-";
// se contiene "\" allora è con dominio...
if (userNameFull.IndexOf('\\') > -1)
{
string[] userData = userNameFull.ToString().Split('\\');
answ = CognomeNomeDaUsername(userData[1], userData[0]);
}
else
{
answ = CognomeNomeDaUsername(userNameFull);
}
return answ;
}
/// <summary>
/// restituisce cognome e nome di un utente dato username...
/// </summary>
/// <param name="userName">username</param>
/// <returns></returns>
public string CognomeNomeDaUsername(string userName)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.getByUserName(userName)[0];
answ = string.Format("{0} {1}", riga.COGNOME, riga.NOME);
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce cognome e nome di un utente dato username e dominio...
/// </summary>
/// <param name="userName">username</param>
/// <param name="dominio">dominio</param>
/// <returns></returns>
public string CognomeNomeDaUsername(string userName, String dominio)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.GetDataByUtenteDominio(userName, dominio)[0];
answ = string.Format("{0} {1}", riga.COGNOME, riga.NOME);
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce cognome e nome di un utente data la matricola...
/// </summary>
/// <param name="matricola">matricola</param>
/// <returns></returns>
public string CognomeNomeMatrDaMatricola(string matricola)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.getByMatricola(matricola)[0];
answ = string.Format("{0} {1} ({2})", riga.COGNOME, riga.NOME, riga.MATRICOLA);
}
catch
{
}
return answ;
}
/// <summary>
/// crea un nuovo utente con le credenziali indicate
/// </summary>
/// <param name="dominio"></param>
/// <param name="username"></param>
/// <param name="cognome"></param>
/// <param name="nome"></param>
/// <param name="email"></param>
/// <param name="matricola"></param>
/// <returns></returns>
public bool creaUtente(string dominio, string username, string cognome, string nome, string cod_cdc, string email, string matricola, string sigla)
{
bool answ = false;
try
{
DataWrap.DW.taUtente.Insert(dominio, username, cognome, nome, "1", matricola, cod_cdc, email, sigla, "IT", "s");
answ = true;
}
catch { }
return answ;
}
/// <summary>
/// restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione
/// </summary>
/// <param name="codModulo">nome del modulo</param>
/// <param name="codFunzione">nome della funzione</param>
/// <returns>tabella utenti</returns>
public DataLayer_AnagGen.UTENTEDataTable elencoDaDiritti(string codModulo, string codFunzione)
{
return DataWrap.DW.taUtente.getElencoByDiritti(codModulo, codFunzione);
}
/// <summary>
/// restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione
/// </summary>
/// <param name="codModulo">nome del modulo</param>
/// <param name="codFunzione">nome della funzione</param>
/// <returns>stringa di email separate da ","</returns>
public string elencoEmailDaDiritti(string codModulo, string codFunzione)
{
char sep = ',';
string answ = "";
try
{
foreach (DataLayer_AnagGen.UTENTERow riga in elencoDaDiritti(codModulo, codFunzione))
{
answ += string.Format("{0}{1} ", riga.EMAIL, sep);
}
if (answ.Length > 2)
{
answ = answ.Substring(0, answ.Length - 2);
}
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce email di un utente dato username e dominio...
/// </summary>
/// <param name="CognomeNome">Cognome Nome</param>
/// <returns></returns>
public string emailDaCognomeNome(string CognomeNome)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.getByCognomeNome(CognomeNome)[0];
answ = riga.EMAIL;
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce email di un utente dato username...
/// </summary>
/// <param name="userName">username</param>
/// <returns></returns>
public string emailDaUsername(string userName)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.getByUserName(userName)[0];
answ = riga.EMAIL;
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce email di un utente dato username e dominio...
/// </summary>
/// <param name="userName">username</param>
/// <param name="dominio">dominio</param>
/// <returns></returns>
public string emailDaUsername(string userName, String dominio)
{
string answ = "-";
try
{
DataLayer_AnagGen.UTENTERow riga = DataWrap.DW.taUtente.GetDataByUtenteDominio(userName, dominio)[0];
answ = riga.EMAIL;
}
catch
{
}
return answ;
}
/// <summary>
/// restituisce l'elenco delle funzioni abilitate dato modulo ed username partendo dalla radice dell'albero dei diritti
/// </summary>
/// <param name="user_name"></param>
/// <param name="codModulo"></param>
/// <returns></returns>
public DataLayer_AnagGen.FUNZIONEDataTable funzioniUtente(string codModulo, string user_name)
{
return DataWrap.DW.taFunzione.getFunByDiritti_999(codModulo, user_name);
}
/// <summary>
/// restituisce la tabella (per utente corrente) dei CDC abilitati per l'applicazione attuale da sessione (se non c'è salva...)
/// </summary>
/// <param name="cod_modulo">modulo di cui si testano i diritti</param>
/// <returns></returns>
public virtual DataLayer_AnagGen.CDCDataTable getEnabledCdc(string cod_modulo)
{
//init tabella
DataLayer_AnagGen.CDCDataTable tabCdc = new DataLayer_AnagGen.CDCDataTable();
// cerco in sessione elenco CDC
if (utils.obj.isInSessionObject("CdcEnabled4user4module"))
{
tabCdc = (DataLayer_AnagGen.CDCDataTable)utils.obj.objSessionObj("CdcEnabled4user4module");
}
else
{
tabCdc = DataWrap.DW.taCdc.getEnabledCDC(utente, cod_modulo);
utils.obj.setSessionVal("CdcEnabled4user4module", tabCdc);
}
return tabCdc;
}
/// <summary>
/// conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1
/// </summary>
/// <param name="pagina"></param>
/// <returns></returns>
public bool isPageEnabled(string pagina)
{
bool answ = false;
try
{
System.Data.DataRow[] righe = permessi.Select(string.Format("URL = '{0}'", pagina));
answ = (righe.Length >= 1);
}
catch
{ }
return answ;
}
/// <summary>
/// verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S')
/// </summary>
/// <param name="pagina"></param>
/// <returns></returns>
public bool isPageWriteEnabled(string pagina)
{
bool answ = false;
try
{
System.Data.DataRow[] righe = permessiWrite.Select(string.Format("URL = '{0}'", pagina));
answ = (righe.Length >= 1);
}
catch
{ }
return answ;
}
/// <summary>
/// LogOff utente con reset dati
/// </summary>
/// <param name="_dominio"></param>
/// <param name="_username"></param>
/// <returns></returns>
public bool logOffUtente()
{
bool risultato = false;
clearAllUserData();
utente = "";
dominio = "";
risultato = true;
return risultato;
}
/// <summary>
/// retituisce il nome apgina dai permessi utente
/// </summary>
/// <param name="url"></param>
public string nomePaginaDaPermessi(string url)
{
string answ = "";
try
{
answ = permessi.Select(string.Format("URL = '{0}'", url))[0]["NOME"].ToString();
}
catch
{ }
return answ;
}
/// <summary>
/// restituisce riga utente data la matricola...
/// </summary>
/// <param name="matricola">matricola</param>
/// <returns></returns>
public DataLayer_AnagGen.UTENTERow rigaUtenteDaMatricola(string matricola)
{
DataLayer_AnagGen.UTENTERow answ = null;
try
{
answ = DataWrap.DW.taUtente.getByMatricola(matricola)[0];
}
catch
{ }
return answ;
}
/// <summary>
/// toglier il diritto all'utente indicato
/// </summary>
/// <param name="username"></param>
/// <param name="cod_cdc"></param>
/// <param name="cod_modulo"></param>
/// <param name="cod_funzione"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool rimuoviDirittoUtente(string username, string cod_cdc, string cod_modulo, string cod_funzione)
{
bool answ = false;
try
{
DataWrap.DW.taDiritti.DeleteQuery(username, cod_cdc, cod_modulo, cod_funzione);
answ = true;
}
catch (Exception exc)
{
lg.Error($"Eccezione:{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati
/// </summary>
/// <param name="_dominio"></param>
/// <param name="_username"></param>
/// <returns></returns>
public bool startUpUtente(string utenteAD)
{
bool risultato = false;
clearAllUserData();
if (utenteAD != "")
{
char[] delimiters = new char[] { '\\' };
string[] datiUt = currUserAD.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
utente = datiUt[1];
dominio = datiUt[0];
setupRiga();
setupDirittiPermessi();
risultato = true;
}
return risultato;
}
/// <summary>
/// calcola se l'utente abbia il diritto x la funzione indicata
/// </summary>
/// <param name="utenteAD">username formato AD</param>
/// <param name="codModulo">codice modulo</param>
/// <param name="codFunzione">codice funzione</param>
/// <returns></returns>
public bool userHasRight(string utenteAD, string codModulo, string codFunzione)
{
bool answ = false;
try
{
answ = utils.obj.taDiritti.getByUserModFun(utenteAD, codModulo, codFunzione).Rows.Count > 0;
}
catch
{ }
return answ;
}
/// <summary>
/// verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta
/// </summary>
/// <param name="diritto"></param>
/// <returns></returns>
public bool userHasRight(string diritto)
{
bool _answ = false;
if (diritti.Select(String.Format("COD_FUNZIONE ='{0}'", diritto)).Length > 0)
{
_answ = true;
}
return _answ;
}
#endregion Public Methods
}
}