Răsfoiți Sursa

continua l'implementazione delle sicurezze

mauro 10 luni în urmă
părinte
comite
e99bd3f864

+ 11 - 13
azienda/templates/azienda.editAzienda.html

@@ -1,20 +1,18 @@
 {% extends 'base.html' %}
 
-{% block top %}
     <div class='form-outline mb-3 text-center btn-primary h3'>
            {{ HeaderTitle }}
     </div>
     <div class='form-outline mb-3 text-center btn-primary h3'>
            Amministratore: {{ admin.username }} 
     </div>
-{% endblock %}
 
 {% block body %}
 
   <!-- errori form azienda -->
-  {% if azienda.errors %}
-    {{ azienda.errors }}
-    {% for field in azienda %}
+  {% if aziendaForm.errors %}
+    {{ aziendaForm.errors }}
+    {% for field in aziendaForm %}
       {% for error in field.errors %}
         <div class="alert alert-danger">
           <strong>{{ error|escape }}</strong>
@@ -22,7 +20,7 @@
       {% endfor %}
     {% endfor %}
 
-    {% for error in azienda.non_field_errors %}
+    {% for error in aziendaForm.non_field_errors %}
       <div class="alert alert-danger">
           <strong>{{ error|escape }}</strong>
       </div>
@@ -37,15 +35,15 @@
     {% csrf_token %}
     <div class='form-group'>
       <label for="nome">Nome Azienda</label>
-      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ azienda.nome.value }}' {% if admin.sola_lettura %} disabled {% endif %}>
+      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ aziendaForm.nome.value }}' {% if adminForm.sola_lettura %} disabled {% endif %}>
     </div>
     <div class='form-group'>
       <label for="partitaiva">Partita IVA</label>
-      <input type='text' class='form-control' name='partitaiva' id='partitaiva' value='{{ azienda.partitaiva.value }}' {% if admin.sola_lettura %} disabled {% endif %}>
+      <input type='text' class='form-control' name='partitaiva' id='partitaiva' value='{{ aziendaForm.partitaiva.value }}' {% if adminForm.sola_lettura %} disabled {% endif %}>
     </div>
     <div class='form-group'>
       <label for="mail" class="form-control-label">Email</label>
-      <input type='mail' class='form-control' name='mail' id='mail' value='{{ azienda.mail.value }}' {% if admin.sola_lettura %} disabled {% endif %}>
+      <input type='mail' class='form-control' name='mail' id='mail' value='{{ aziendaForm.mail.value }}' {% if adminForm.sola_lettura %} disabled {% endif %}>
     </div>
     <br>
     <div class="card">
@@ -55,7 +53,7 @@
       <ul class="list-group list-group-flush">
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if azienda.cambiopassword.value %} checked {% endif %} id="cambiopassword" name="cambiopassword" {% if admin.sola_lettura %} disabled {% endif %}>
+          <input class="form-check-input" type="checkbox" {% if aziendaForm.cambiopassword.value %} checked {% endif %} id="cambiopassword" name="cambiopassword" {% if admin.sola_lettura %} disabled {% endif %}>
           <label for='cambiopassword' class='form-control-label'>Il dipendente può aggiornare la password</label>
         </div>
         <div class="form-check">
@@ -67,7 +65,7 @@
       <!-- blocco automazione cambio password al primo accesso -->
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if azienda.forzanuovapassword.value %} checked {% endif %} id="forzanuovapassword" name="forzanuovapassword" {% if admin.sola_lettura %} disabled {% endif %}/>
+          <input class="form-check-input" type="checkbox" {% if aziendaForm.forzanuovapassword.value %} checked {% endif %} id="forzanuovapassword" name="forzanuovapassword" {% if admin.sola_lettura %} disabled {% endif %}/>
           <label for='forzanuovapassword' class='form-control-label'>Il dipendente deve cambiare la password al primo login. (Opzione valida per i nuovi inserimenti) </label>
           </div>
         <div class="form-check">
@@ -79,7 +77,7 @@
       <!-- blocco automazione OTP accesso -->
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if azienda.otppassword.value %} checked {% endif %} id="otppassword" name="otppassword" {% if admin.sola_lettura %} disabled {% endif %}/>
+          <input class="form-check-input" type="checkbox" {% if aziendaForm.otppassword.value %} checked {% endif %} id="otppassword" name="otppassword" {% if admin.sola_lettura %} disabled {% endif %}/>
           <label for='otppassword' class='form-control-label'>Il dipendente riceve un OTP a conferma del login. (Opzione valida per i nuovi inserimenti) </label>
           </div>
         <div class="form-check">
@@ -91,7 +89,7 @@
       <!-- cancellazione azienda -->
       <li class="list-group-item">
         <div class="form-check">
-          <input class="form-check-input" type="checkbox" value="{{ azienda.cancellaazienda.value }}" id="cancellaazienda" name="cancellaazienda" {% if admin.sola_lettura %} disabled {% endif %}>
+          <input class="form-check-input" type="checkbox" value="{{ aziendaForm.cancellaazienda.value }}" id="cancellaazienda" name="cancellaazienda" {% if admin.sola_lettura %} disabled {% endif %}>
           <label class="form-check-label" for="cancellaazienda">Cancella Azienda! Operazione NON revocabile e NON Recuperabile!</label>
         </div>
       </li>

+ 8 - 17
azienda/templates/azienda.editSede.html

@@ -1,19 +1,10 @@
 {% extends 'base.html' %}
 
-{% block top %}
-  <div class='form-outline mb-3 text-center btn-primary h3'>
-     {{ HeaderTitle }}
-  </div>
-  <div class='form-outline mb-3 text-center btn-primary h3'>
-     Amministratore: {{ admin.username }} 
-  </div>
-{% endblock %}
-
 {% block body %}
   <!-- errori form sede -->
-  {% if sede.errors %}
+  {% if sedeForm.errors %}
     <div class="alert alert-danger">
-    {{ sede.errors }}
+    {{ sedeForm.errors }}
     </div>
   {% endif %}
   <!-- fine zona errori -->
@@ -23,15 +14,15 @@
     {% csrf_token %}
     <div class='form-group'>
       <label for="nome">Nome Sede</label>
-      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ sede.nome.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
+      <input type='text' class='form-control form-control-lg' name='nome' id='nome' value='{{ sedeForm.nome.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
     </div>
     <div class='form-group'>
      <label for="info">Info</label>
-      <input type='text' class='form-control form-control-lg' name='info' id='info' value='{{ sede.info.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
+      <input type='text' class='form-control form-control-lg' name='info' id='info' value='{{ sedeForm.info.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
     </div>
     <div class='form-group'>
      <label for="info">Identificativo</label>
-      <input type='text' class='form-control form-control-lg' name='identificativo' id='identificativo' value='{{ sede.identificativo.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
+      <input type='text' class='form-control form-control-lg' name='identificativo' id='identificativo' value='{{ sedeForm.identificativo.value }}' {% if admin.sola_lettura %}readonly{% endif %}>
     </div>
 
     <br>
@@ -42,7 +33,7 @@
       <ul class="list-group list-group-flush">
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if sede.cambiopassword.value %} checked {% endif %} id="cambiopassword" name="cambiopassword" {% if admin.sola_lettura %} readonly {% endif %}>
+          <input class="form-check-input" type="checkbox" {% if sedeForm.cambiopassword.value %} checked {% endif %} id="cambiopassword" name="cambiopassword" {% if admin.sola_lettura %} readonly {% endif %}>
           <label for='cambiopassword' class='form-control-label'>Il dipendente può aggiornare la password</label>
         </div>
         <div class="form-check">
@@ -54,7 +45,7 @@
       <!-- blocco automazione cambio password al primo accesso -->
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if sede.forzanuovapassword.value %} checked {% endif %} id="forzanuovapassword" name="forzanuovapassword" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <input class="form-check-input" type="checkbox" {% if sedeForm.forzanuovapassword.value %} checked {% endif %} id="forzanuovapassword" name="forzanuovapassword" {% if admin.sola_lettura %}readonly{% endif %}/>
           <label for='forzanuovapassword' class='form-control-label'>Il dipendente deve cambiare la password al primo login. (Opzione valida per i nuovi inserimenti) </label>
           </div>
         <div class="form-check">
@@ -66,7 +57,7 @@
       <!-- blocco automazione OTP accesso -->
       <li class="list-group-item">
         <div class='form-check'>
-          <input class="form-check-input" type="checkbox" {% if sede.otppassword.value %} checked {% endif %} id="otppassword" name="otppassword" {% if admin.sola_lettura %}readonly{% endif %}/>
+          <input class="form-check-input" type="checkbox" {% if sedeForm.otppassword.value %} checked {% endif %} id="otppassword" name="otppassword" {% if admin.sola_lettura %}readonly{% endif %}/>
           <label for='otppassword' class='form-control-label'>Il dipendente riceve un OTP a conferma del login. (Opzione valida per i nuovi inserimenti) </label>
           </div>
         <div class="form-check">

+ 21 - 1
azienda/views.py

@@ -5,7 +5,7 @@ from .models import *
 from config.views import *
 from att.views import *
 from .forms import *
-from sicurezza.views import getAMP,getAZP,getSEP
+from sicurezza.views import getAMP,getAZP,getSEP,setAZP,setSEP
 
 def welcome(request):
 
@@ -240,6 +240,16 @@ def editAzienda(request):
       request.session['AziendaIdEdit'] = azienda.id
       print('azienda:',azienda.id)
 
+      setAZP(azienda,data['admin'],"AZIENDA")
+      if 'AZIENDA.CREA' in getAMP(data['admin']):
+        setAZP(azienda,data['admin'],"AZIENDA.CREA")
+      if 'AZIENDA.EDIT' in getAMP(data['admin']):
+        setAZP(azienda,data['admin'],"AZIENDA.EDIT")
+      if 'UTENTE' in getAMP(data['admin']):
+        setAZP(azienda,data['admin'],"UTENTE")
+      if 'UTENTE.CREA' in getAMP(data['admin']):
+        setAZP(azienda,data['admin'],"UTENTE.CREA")
+
       assegnazione = AssegnazioneAzienda()
       assegnazione.azienda=azienda
       assegnazione.amministratore=Amministratore.objects.get(pk=AdminId)
@@ -355,6 +365,16 @@ def editSede(request):
       print('sede:',sede.id)
       print('azienda',sede.azienda.nome)
 
+      setSEP(sede,data['admin'],"SEDE")
+      if 'SEDE.CREA' in getAMP(data['admin']):
+        setSEP(sede,data['admin'],"SEDE.CREA")
+      if 'SEDE.EDIT' in getAMP(data['admin']):
+        setSEP(sede,data['admin'],"SEDE.EDIT")
+      if 'UTENTE' in getAMP(data['admin']):
+        setSEP(sede,data['admin'],"UTENTE")
+      if 'UTENTE.CREA' in getAMP(data['admin']):
+        setSEP(sede,data['admin'],"UTENTE.CREA")
+
       # verifica assegnazione
       az = AssegnazioneSede.objects.filter(sede=sede,amministratore=admin)
       print('assegnazione',az)

+ 109 - 8
sicurezza/views.py

@@ -36,7 +36,6 @@ def getAZP(azienda=None,amministratore=None):
   if isinstance(azienda,Azienda):
     print('si tratta di una istanza azienda')
     azi=azienda
-
   if isinstance(azienda,int):
     print('azienda: istanza int')
     azi = Azienda.objects.get(pk=azienda)
@@ -95,22 +94,21 @@ def listaAZP(amministratore=None):
 
 #riporta l'elenco dei permessi per sede filtrato per amministratore
 def getSEP(sede=None,amministratore=None):
-  sed=None
-  amm=None
+
   print('getSEP',sede,amministratore)
 
+  sed=None
   if isinstance(sede,Sede):
     print('si tratta di una istanza dede')
     sed=sede
-
   if isinstance(sede,int):
     print('sede: istanza int')
     sed = Sede.objects.get(pk=sede)
 
+  amm=None
   if isinstance(amministratore,Amministratore):
     print('si tratta di una istanza amministratore, quindi possiamo direttamente accedere')
     amm = amministratore
-
   if isinstance(amministratore,int):
     print('si tratta di un int, quindi dobbiamo cercare il valore')
     amm = Amministratore.objects.get(pk=amministratore)
@@ -139,12 +137,115 @@ def getPermesso(permesso=None):
   return p
 
 # da questa parte si impostano i permessi
-def setAMP(amministratore=None,permesso=None):
+def setDefault(amministratore=None):
   pass
 
+def setAMP(amministratore=None,permesso=None):
+
+  amm=None
+  print('getAMP',amministratore)
+  if isinstance(amministratore,Amministratore):
+    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    amm = amministratore
+  if isinstance(amministratore,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    amm = Amministratore.objects.get(pk=amministratore)
+
+  per=None
+  print('getAMP',permesso)
+  if isinstance(permesso,Permesso):
+    print('si tratta di una istanza, possiamo passarla direttamente')
+    per = permesso
+  if isinstance(permesso,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(pk=permesso)
+  if isinstance(permesso,str):
+    print('si tratta di una str, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(nome=permesso)
+
+  # aggiungiamo il permesso necessario
+  p = AMP()
+  p.permesso=per
+  p.amministratore=amm
+  p.save()
+  return [p,]
+
 def setAZP(azienda=None,amministratore=None,permesso=None):
-  pass
 
+  azi = None
+  if isinstance(azienda,Azienda):
+    print('si tratta di una istanza azienda')
+    azi=azienda
+  if isinstance(azienda,int):
+    print('azienda: istanza int')
+    azi = Azienda.objects.get(pk=azienda)
+
+  amm=None
+  print('getAMP',amministratore)
+  if isinstance(amministratore,Amministratore):
+    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    amm = amministratore
+  if isinstance(amministratore,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    amm = Amministratore.objects.get(pk=amministratore)
+
+  per=None
+  print('getAMP',permesso)
+  if isinstance(permesso,Permesso):
+    print('si tratta di una istanza, possiamo passarla direttamente')
+    per = permesso
+  if isinstance(permesso,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(pk=permesso)
+  if isinstance(permesso,str):
+    print('si tratta di una str, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(nome=permesso)
+
+  # aggiungiamo il permesso necessario
+  p = AZP()
+  p.permesso=per
+  p.amministratore=amm
+  p.azienda=azi
+  p.save()
+  return [p,]
+
+# set Permessi Sede
 def setSEP(sede=None,amministratore=None,permesso=None):
-  pass
+
+  sed=None
+  if isinstance(sede,Sede):
+    print('si tratta di una istanza dede')
+    sed=sede
+  if isinstance(sede,int):
+    print('sede: istanza int')
+    sed = Sede.objects.get(pk=sede)
+
+  amm=None
+  print('getAMP',amministratore)
+  if isinstance(amministratore,Amministratore):
+    print('si tratta di una istanza, quindi possiamo direttamente accedere')
+    amm = amministratore
+  if isinstance(amministratore,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    amm = Amministratore.objects.get(pk=amministratore)
+
+  per=None
+  print('getAMP',permesso)
+  if isinstance(permesso,Permesso):
+    print('si tratta di una istanza, possiamo passarla direttamente')
+    per = permesso
+  if isinstance(permesso,int):
+    print('si tratta di un int, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(pk=permesso)
+  if isinstance(permesso,str):
+    print('si tratta di una str, quindi dobbiamo cercare il valore')
+    per = Permesso.objects.get(nome=permesso)
+
+  # aggiungiamo il permesso necessario
+  p = SEP()
+  p.permesso=per
+  p.amministratore=amm
+  p.sede=sed
+  p.save()
+  return [p,]
 

+ 1 - 2
utente/views.py

@@ -10,8 +10,7 @@ from documento.managefile import *
 
 from att.views import *
 from comunicazione.views import ServizioMail
-from sicurezza.views import getAMP,getAZP,getSEP
-
+from sicurezza.views import getAMP,getAZP,getSEP,setAZP,setSEP
 from random import randint
 from config.views import *
 import re