Browse Source

modificata gestione degli utenti

mauro 8 months ago
parent
commit
17a9c4efe1

+ 1 - 1
att/fixtures/causale.json

@@ -1 +1 @@
-[{"model": "att.causale", "pk": 1, "fields": {"nome": "Login", "schema": "{u}"}}, {"model": "att.causale", "pk": 2, "fields": {"nome": "Amministrazione", "schema": "{a}"}}, {"model": "att.causale", "pk": 3, "fields": {"nome": "Download Documento", "schema": "Effettuato Download {documento.documento} da parte di {utente.nome}"}}, {"model": "att.causale", "pk": 4, "fields": {"nome": "Cancellazione Utente", "schema": "Rimozione di {u} da parte di {a}"}}, {"model": "att.causale", "pk": 5, "fields": {"nome": "Cancellazione Documento", "schema": "Rimozione documento {d} da parte di {a}"}}, {"model": "att.causale", "pk": 6, "fields": {"nome": "Aggiornamento Utente", "schema": "Aggiornato profilo {utente.id}:{utente.nome}"}}, {"model": "att.causale", "pk": 7, "fields": {"nome": "Aggiornamento Utente da un Amministratore", "schema": ""}}, {"model": "att.causale", "pk": 8, "fields": {"nome": "Upload Documento", "schema": ""}}]
+[{"model": "att.causale", "pk": 1, "fields": {"nome": "Login OK", "schema": "Login Corretto: l'utente {u} è autorizzato dall'ip {r}"}}, {"model": "att.causale", "pk": 2, "fields": {"nome": "Amministrazione", "schema": "{a}"}}, {"model": "att.causale", "pk": 3, "fields": {"nome": "Download Documento", "schema": "Effettuato Download {documento.documento} da parte di {utente.nome}"}}, {"model": "att.causale", "pk": 4, "fields": {"nome": "Cancellazione Utente", "schema": "Rimozione di {u} da parte di {a}"}}, {"model": "att.causale", "pk": 5, "fields": {"nome": "Cancellazione Documento", "schema": "Rimozione documento {d} da parte di {a}"}}, {"model": "att.causale", "pk": 6, "fields": {"nome": "Aggiornamento Utente", "schema": "Aggiornato profilo {utente.id}:{utente.nome}"}}, {"model": "att.causale", "pk": 7, "fields": {"nome": "Aggiornamento Utente da un Amministratore", "schema": ""}}, {"model": "att.causale", "pk": 8, "fields": {"nome": "Upload Documento", "schema": ""}}, {"model": "att.causale", "pk": 9, "fields": {"nome": "login KO", "schema": "Login Errato: l'utente {u} ha provato ad accedere dall'ip {r}"}}, {"model": "att.causale", "pk": 10, "fields": {"nome": "CausaleErr", "schema": "Causale Errata: {c}"}}, {"model": "att.causale", "pk": 11, "fields": {"nome": "Login non AUTH", "schema": "L'utente {u} non è autorizzato ad accedere dall'ip {r}"}}]

+ 6 - 0
att/views.py

@@ -22,14 +22,20 @@ def setNewLog(causale=None,**kwargs):
   except Causale.DoesNotExist as dne:
     print("Errore ricerca causale",dne)
     causale = Causale.objects.get(pk=getConfig("CausaleErr"))
+
   if causale:
     attivita.causale =  causale
     print('causale',causale.id,causale.nome)
 
+    if 'utente' in kwargs: attivita.utente = kwargs.get('utente')
+    if 'azienda' in kwargs: attivita.azienda = kwargs.get('azienda')
+    if 'sede' in kwargs: attivita.sede = kwargs.get('sede')
+    
     attivita.valore = causale.schema.format(**kwargs)
     attivita.save()
     print(attivita)
     return attivita
+
   return None
 
 def setLog(causale,azienda=None,sede=None,amministratore=None,utente=None,documento=None):

+ 11 - 1
azienda/views.py

@@ -8,6 +8,7 @@ from config.datafunc import *
 from att.views import *
 from .forms import *
 from sicurezza.views import *
+from random import randint
 
 def welcome(request):
 
@@ -304,7 +305,16 @@ def editAzienda(request):
           print('azienda:',azienda.id)
           request.session['AziendaId'] = azienda.id
           data['azienda'] = azienda
-      
+     
+          ### generiamo un utente speciale per la gestione dei documenti aziendali
+          print("Generazione utente speciale per {}".format(azienda.nome))
+          utente = Utente()
+          utente.azienda = azienda
+          utente.special = True
+          utente.login = azienda.nome
+          utente.nome = "Document Store: {}".format(azienda.nome)
+          utente.save()
+
           ### nel caso l'azienda non esista, si aggiungono i permessi di base
           print("data['admin']",data['admin'])
           if 'AZIENDA' in getAMP(data['admin'])[0]:

+ 10 - 4
login/views.py

@@ -41,10 +41,16 @@ def start(request):
       try:
         # verifica che esista un utente ordinario
         u = Utente.objects.get(codicefiscale=accesso.upper())
+
       except  Utente.DoesNotExist as dne:
         print("utente inesistente a livello dipendente")
 
-      if u: #utente esiste
+      if u and not u.enabled:
+        print("l'utente {} non e' autorizzato ad accedere".format(u.nome))
+        setNewLog(11,u=u.codicefiscale,r=request.META['REMOTE_ADDR'],azienda=u.azienda)
+
+      if u and u.enabled: #utente esistente e abilitato ad accedeere
+        setNewLog(1,u=u.codicefiscale,r=request.META['REMOTE_ADDR'],azienda=u.azienda)
         real = u.nome
         ### obbligo cambio password
         ### se è previsto che l'utente a livello di sede cambi la password
@@ -140,7 +146,7 @@ def start(request):
           if u.cambiopassword:
             print("all'utente e' richiesto di cambiare la password al primo accesso")
 
-          setNewLog(1,u=accesso,p=pin,r=real)
+          setNewLog(1,u=u.codicefiscale,p=pin,r=real)
           return HttpResponseRedirect(reverse("utente:download"))
       else: # l'utente ordinario non esiste
         print('verifica amministratore')
@@ -183,7 +189,7 @@ def start(request):
               sm.send()
             ### comunicazioni ###
 
-            setNewLog(9,u=accesso,p=pin,r=real)
+            setNewLog(9,u=a.login,p=pin,r=real)
             return HttpResponseRedirect(reverse("azienda:welcome"))
 
         else:
@@ -224,7 +230,7 @@ def RichiestaAggiornamentoPassword(request):
 
       a = None
       d = None
-      # 1 tentativo su codice fiscale
+      # 1 tentativo su codice fiscale e utente abilitato (enabled)
       try: 
         a = Utente.objects.get(codicefiscale=informazione.upper())
         d = 'u'

+ 1 - 0
utente/forms.py

@@ -18,6 +18,7 @@ class formUtente(forms.Form):
     self.fields['forzanuovapassword'] = forms.BooleanField(required=False)
     self.fields['otppassword'] = forms.BooleanField(required=False)
     self.fields['sede'] = forms.IntegerField(required=False)
+    self.fields['enabled'] = forms.BooleanField(required=False)
 
 class formPinMail(forms.Form):
   def __init__(self,*args,**kwargs):

+ 8 - 0
utente/templates/utente.edit.profile.html

@@ -89,6 +89,14 @@
           </div>
       </li>
 
+      <!-- abilita utente al profilo - default True -->
+      <li class="list-group-item">
+        <div class="form-check">
+          <input class="form-check-input" type="checkbox" {% if utente.enabled.value %} checked {% endif %} id="enabled" name="enabled"/>
+	  <label for="enabled" class="form-control-label">Il dipendente puo' accedere al proprio profilo</label>
+	</div>
+      </li>
+
       <!-- blocco automazione OTP accesso -->
       <li class="list-group-item">
         <div class='form-check'>

+ 1 - 1
utente/templates/utente.welcome.html

@@ -59,7 +59,7 @@ function toggle(source) {
           {% if "UTENTE.EDIT" in permesso %}
             <td> <button type='submit' class='btn btn-primary ' name='scelta' value='{{ uu.id }}'>Edit</button></td>
           {% endif %}
-          <td> {{ uu.nome }} </td>
+	  <td {% if not uu.enabled %} class="text-decoration-line-through" {% endif %} > {{ uu.nome }} </td>
 	  <td> {{ uu.codicefiscale }} </td>
           <td> {{ uu.sede.nome }} </td>
 	  <td> {{ uu.datanascita|date:'d/m/Y' }} </td>

+ 4 - 0
utente/views.py

@@ -224,6 +224,7 @@ def edit(request):
   utente = None
   if data['UserEditId'] == "Nuovo Dipendente":
     utente = Utente()
+    utente.enabled = True
     utente.pin = str(randint(100000,999999))
     utente.azienda = data['azienda']
     utente.forzanuovapassword = data['azienda'].forzanuovapassword
@@ -282,6 +283,7 @@ def edit(request):
       utente.cambiopassword = fu.cleaned_data['cambiopassword']
       utente.forzanuovapassword = fu.cleaned_data['forzanuovapassword']
       utente.otppassword = fu.cleaned_data['otppassword']
+      utente.enabled = fu.cleaned_data['enabled']
 
       tmp_sede = fu.cleaned_data['sede']
       print('tmp_sede',tmp_sede)
@@ -307,6 +309,7 @@ def edit(request):
     tmp['cambiopassword'] = utente.cambiopassword
     tmp['forzanuovapassword'] = utente.forzanuovapassword
     tmp['otppassword'] = utente.otppassword
+    tmp['enabled'] = utente.enabled
     print('utente.sede_id',utente.sede_id)
     tmp['sede'] = utente.sede_id
     print('tmp su form non valida',tmp)
@@ -370,6 +373,7 @@ def edit(request):
     tmp['cambiopassword'] = utente.cambiopassword
     tmp['otppassword'] = utente.otppassword
     tmp['sede'] = utente.sede_id
+    tmp['enabled'] = utente.enabled
     print("tmp su request non valida",tmp)
     data['utente'] = formUtente(tmp)