In questa sezione vengono illustrate nel dettaglio le logiche interne di funzionamento di Glis\-Web.

\hyperlink{autenticazione}{Utenti, autenticazione, privilegi} \hypertarget{autenticazione}{}\section{Utenti, autenticazione, privilegi}\label{autenticazione}
\subsection*{introduzione}

Glis\-Web è in grado di riconoscere l'utente connesso tramite un cookie il cui nome è impostato in \hyperlink{__180_8auth_8php}{\-\_\-src/\-\_\-config/\-\_\-180.\-auth.\-php} a partire da dati impostati in src/config/010.\-site.\-php in modo da essere univoco per ogni installazione. All'interno del cookie viene salvato unicamente il token di autenticazione, che verrà letto alla successiva apertura di pagina, rigenerato, e nuovamente salvato. In questo modo i token salvati sui client sono monouso in modo da ostacolare gli attacchi di tipo \char`\"{}riutilizzo del token\char`\"{}.

Lato server, le sessioni sono salvate nel database collegato al sito e in particolare nella tabella \-\_\-anagrafica\-\_\-accounts\-\_\-sessioni. In questa tabella sono salvate le informazioni essenziali riguardanti la sessione ovvero\-:

\begin{TabularC}{4}
\hline
\rowcolor{lightgray}{\bf campo }&{\bf tipo }&{\bf charset }&{\bf descrizione}\\\cline{1-4}
id &char(32) &utf8\-\_\-general\-\_\-ci &l'id della sessione; corrisponde al token salvato nel cookie \\\cline{1-4}
id\-\_\-account &int(11) &&l'id dell'account autenticato per la sessione \\\cline{1-4}
timestamp\-\_\-inizio &int(11) &&la timestamp di creazione della sessione \\\cline{1-4}
timestamp\-\_\-refresh &int(11) &&la timestamp dell'ultimo refresh della sessione \\\cline{1-4}
\end{TabularC}


Vincoli di chiave esterna\-:


\begin{DoxyItemize}
\item \-\_\-anagrafica\-\_\-accounts\-\_\-sessioni.\-id\-\_\-account -- C\-A\-S\-C\-A\-D\-E --$>$ \-\_\-anagrafica\-\_\-accounts.\-id
\end{DoxyItemize}

Indici\-:


\begin{DoxyItemize}
\item P\-R\-I\-M\-A\-R\-Y ( id )
\item U\-N\-I\-Q\-U\-E ( id\-\_\-account )
\end{DoxyItemize}

\subsection*{autenticazione tramite \$\-\_\-\-R\-E\-Q\-U\-E\-S\-T}

Il meccanismo di autenticazione si trova in \hyperlink{__200_8user_8php}{\-\_\-src/\-\_\-config/\-\_\-200.\-user.\-php} e ragiona secondo il seguente schema per assegnare un valore I\-N\-T o N\-U\-L\-L alla variabile \$cf\mbox{[}'user'\mbox{]}\mbox{[}'account\-Id'\mbox{]}\-:



Lo schema conta sul fatto che a livello \hyperlink{__180_8auth_8php}{\-\_\-src/\-\_\-config/\-\_\-180.\-auth.\-php} venga valorizzata come S\-T\-R\-I\-N\-G o come N\-U\-L\-L la variabile \$cf\mbox{[}'user'\mbox{]}\mbox{[}'session\-Id'\mbox{]} in caso di presenza di un cookie valido e contentente un token di sessione sul pc dell'utente.

Una volta valorizzata la variabile \$cf\mbox{[}'user'\mbox{]}\mbox{[}'account\-Id'\mbox{]} (ovvero, una volta stabilito con quale account l'istanza corrente ha a che fare) si procede a recuperare sia i dati dell'utente che quelli dell'account e della sessione tramite la funzione \hyperlink{__user_8utils_8php_a0ed3f169fa2b8688e45ec7b117b56db1_a0ed3f169fa2b8688e45ec7b117b56db1}{get\-User\-Data()} che rivalorizza daccapo l'array \$cf\mbox{[}'user'\mbox{]}. 