from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect,FileResponse from django.urls import reverse import django from .forms import * from config.views import getConfig from comunicazione.views import ServizioMail from att.views import * #from utente.views import * import uuid from utente.models import * from amministratore.models import * def start(request): ''' da qui si comincia l'utente e' invitato a inserire il suo codice fiscale e la password/pin assegnata in fase di visita medica se i dati corrispondono, si forniscono i file e alcune info di servizio ''' request.session.flush() request.session.set_expiry(3600) data = dict() data['HeaderTitle'] = getConfig('HeaderTitle') if request.method=="POST": result = LoginUser(request.POST) if result.is_valid(): print('result is valid') accesso = result.cleaned_data['cfisc'] pin = result.cleaned_data['passs'] #verifica corrispondenza utente u = None 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.pin.strip()== pin: # password valida data = dict() data['u'] = u #data['settings'] = settings #data['static'] = static request.session['UserId'] = u.id print('utente validato:',u.nome) setLog(1,utente=u) #setNewLog(1,{'u':u.nome}) ### comunicazioni ### if len(u.mail) > 0: comunicazione = None try: comunicazione = Comunicazione.objects.get(pk=2) except Comunicazione.DoesNotExist as dne: print('comunicazione non valida',dne) if comunicazione: sm = ServizioMail(debug=True) sm.set_mailfrom=comunicazione.mittente sm.add_to(u.mail) sm.set_soggetto(comunicazione.soggetto) sm.set_corpo(comunicazione.corpo) sm_data = dict() sm_data['utente'] = u sm.set_data(sm_data) sm.send() ### comunicazioni ### ### obbligo cambio password ### se รจ previsto che l'utente a livello di sede cambi la password ### al primo ingresso, qui vengono effettuati entrambi i check if u.sede: if u.sede.cambiopassword and u.primologin: print("l'utente deve cambiare obbligatoriamente la password") return HttpResponseRedirect(reverse("utente:download")) else: # l'utente ordinario non esiste print('verifica amministratore') a = None try: a = Amministratore.objects.get(login=accesso.strip()) if a: print('login trovato',a.nome) except Amministratore.DoesNotExist as dne: print('amministratore non trovato',dne) if a: print(a.id,a.login,a.pin,pin) if a.pin.strip()== pin: request.session['AdminId'] = a.id setLog(1,amministratore=a) ### comunicazioni ### sm = ServizioMail(debug=True) comunicazione = None try: comunicazione = Comunicazione.objects.get(pk=1) except Comunicazione.DoesNotExist as dne: print("Record comunicazione inesistente",dne) if comunicazione: sm.set_mailfrom=comunicazione.mittente sm.add_to(a.mail) sm.set_soggetto(comunicazione.soggetto) sm.set_corpo(comunicazione.corpo) sm_data = dict() utente=dict() #adattamento campo utente utente['nome'] = a.nome utente['mail'] = a.mail sm_data['utente'] = a sm.set_data(sm_data) sm.send() ### comunicazioni ### return HttpResponseRedirect(reverse("azienda:welcome")) else: print('Errore: amministratore non valido') if a.azienda.cambiopassword and a.sede.cambiopassword and a.cambiopassword: print("all'utente e' richiesto di cambiare la password al primo accesso") return HttpResponseRedirect(reverse("login:start")) else: temp={} temp['cfisc'] = '' temp['passs'] = '' result = LoginUser(temp) data['login'] = result return render(request,'login.html',data) def RichiestaAggiornamentoPassword(request): ''' la form che segue, serve per aggiornare la propria password/pin ''' request.session.flush() request.session.set_expiry(3600) data = dict() data['HeaderTitle'] = getConfig('HeaderTitle') uuidres = str(uuid.uuid4()) print('uuid',uuidres) if request.method == 'POST': informazione = PasswordUpdate(request.POST) if informazione.is_valid(): # invio mail di comunicazione # con pin annesso. informazione = informazione.cleaned_data.get('informazione') print('informazione',informazione) a = None d = None # 1 tentativo su codice fiscale try: a = Utente.objects.get(codicefiscale=informazione.upper()) d = 'u' except Utente.DoesNotExist as dne: print('informazione non trovata tra i codici fiscali utente') try: a = Utente.objects.get(mail=informazione.lower()) d = 'u' except Utente.DoesNotExist as dne: print('informazione non trovata tra le email') try: a = Amministratore.objects.get(login=informazione.lower()) d = 'a' except Amministratore.DoesNotExist as dne: print('informazione non trovata tra i login amministratotore') if a: print('informazione',a,d) ### comunicazioni ### sm = ServizioMail(debug=True) comunicazione = None try: comunicazione = Comunicazione.objects.get(pk=4) except Comunicazione.DoesNotExist as dne: print("Record comunicazione inesistente",dne) if comunicazione: sm.set_mailfrom=comunicazione.mittente sm.add_to(a.mail) sm.set_soggetto(comunicazione.soggetto) sm.set_corpo(comunicazione.corpo) sm_data = dict() utente=dict() #adattamento campo utente print(reverse('login:ResetPassword',args=[uuidres])) utente['link'] = reverse('utente:updatePasswordFromLogin',args=[uuidres]) utente['nome'] = a.nome utente['mail'] = a.mail utente['sito'] = getConfig('DefaultSite') utente['titolo'] = getConfig('HeaderTitle') sm_data['utente'] = utente sm.set_data(sm_data) sm.send() ### comunicazioni ### ### salva uuid a.uuid = uuidres a.save() return render(request,'updatePasswordEnd.html',{}) else: data['informazione'] = PasswordUpdate(request.POST) else: data['informazione'] = PasswordUpdate({'informazione':''}) return render(request,'updatePassword.html',data) def ResetPassword(request,uuid=None): print('uuid',uuid) return HttpResponseRedirect(reverse("login:start"))