| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- from django.shortcuts import render
- from django.http import HttpResponseRedirect
- from django.shortcuts import redirect
- from django.urls import reverse
- from configurazione.views import *
- from .models import *
- # Create your views here.
- def getSecurityLevelAll(enabled=1):
- '''
- ritorna l'elenco dei livelli di sicurezza ordinati per nome
- parms:
- enabled (default 1)
- di default restituisce l'intero elenco solo se le voci sono abituate
- '''
- return SecurityLevel.objects.all().filter(enabled=enabled).order_by('nome')
- def getSecurityLevel(id,enabled=1,debug=0):
- '''
- ritorna il livello di sicurezza indicato, in forma d'oggetto.
- '''
- #primo step: verifica l'intestazione, se e' attiva
- try:
- securitylevel = SecurityLevel.objects.get(pk=id)
- except SecurityLevel.DoesNotExist as dne:
- if debug:
- print('il record {} non esiste o non e\' attivo'.format(id))
- #nel caso non fosse possibile, viene preso il valore di default
- securitylevel = SecurityLevel.objects.get(pk=getConfigurazione('default-level'))
- if securitylevel.enabled != enabled:
- securitylevel = SecurityLevel.objects.get(pk=getConfigurazione('default-level'))
- return securitylevel
- def getSecurityRow(id,enabled=1,debug=0):
- '''
- securityrow contiene l'associazione tra i livelli di sicurezza e le opzioni.
- per ottenerlo gli passiamo l'id del securitylevel.
- '''
- #verifica che l'id sia valido, semplicemente richiamando getSecurityLevel
- id = getSecurityLevel(id,enabled)
- orderbylist=['securityoptions__comando','ordine']
- try:
- securityrow = SecurityRow.objects.filter(securitylevel=id).filter(enabled=enabled).order_by(*orderbylist)
- except SecurityRow.DoesNotExist as dne:
- print('non ci sono righe associate all\'id {}'.format(id))
- return SecurityRow()
- #securityrow contiene l'elenco delle Options estratte.
- if debug:
- print(securityrow)
- return securityrow
- def getSecurityList(securityrow,debug=0):
- securitylist=[]
- for sr in securityrow:
- srtemp = getSecurityOptions(sr.securityoptions_id)
- if debug:
- print(srtemp.acronimo)
- securitylist.append(srtemp.acronimo)
- print("SecurityList: ",securitylist)
- return securitylist
- def getSecurityOptions(id):
- '''
- ritorna il contenuto della security options a cui si fa riferimento
- '''
- #! nota: sarebbe da capire se puo' tornare il record in caso di false enabled in row o level
- try:
- resultoptions = SecurityOptions.objects.get(pk=id)
- except SecurityOptions.DoesNotExist as dne:
- print("non ci sono elementi di SecurityOptions da tornare con l'id {}".format(id))
- return None
- return resultoptions
- def getSecurityLevelByUser(userId,enabled=1):
- '''
- ottiene il livello di sicurezza passando direttamente l'id utente
- la sequenza e' veloce:
- cerca l'utente indicato
- verifica che abbia un level valido altrimenti ritorna il default
- estrare l'elenco delle options abilitate
- '''
- try:
- u = User.objects.get(pk=userId)
- #l'utente esiste ed e' valido
- except User.DoesNotExist as dnf:
- #l'utente non esiste
- return HttpResponseRedirect(reverse('login:welcome',args={}))
- try:
- securitylevel = getSecurityLevel(u.securitylevel)
- except SecurityLevel.DoesNotExist as dne:
- print(f'attenzione, security level non impostata per utente {u.id}')
- v = getConfigurazione('default-level')
- securitylevel = getSecurityLevel(v)
- return securitylevel
- def getSecurityOptionsByUser(UserId):
- '''
- ottiene l'elenco delle righe di securityrow
- '''
- securitylevel = getSecurityLevelByUser(UserId,enabled=1)
- securityoptions = getSecurityOptions(securitylevel.id)
- return securityoptions
- def _checkSessionValue(request,key,debug=0):
- if debug:
- print("session:",key,request.session.get(key))
- try:
- tmp = request.session.get(key)
- except:
- request.flush()
- return HttpResponseRedirect(reverse('Login:login'))
- return tmp
- def getSessionParms(request,debug=0):
- '''
- estrae i valori dalla sessione necessari per operare
- '''
- lista=[
- '_userauth_',
- '_user2edit_',
- '_alias2edit_',
- '_domain2edit_',
- '_domainservice2edit_',
- '_contatto2edit_',
- '_registrar2edit_',
- '_liste2edit_',
- '_listeaccount2edit_',
- '_ftp2edit_',
- '_sqlserver2edit_',
- '_from_',
- '_domain_order',
- '_sqldatabase2edit_',
- '_note2edit_',
- '_filtro2edit_',
- '_causale2edit_',
- '_mqtt2edit_',
- '_webserver2edit_',
- '_web2edit',
- '_proxyserver2edit_',
- 'proxy2edit_',
- '_spam2edit_',
- ]
- v2r = dict()
- for i in lista:
- v2r[i] = _checkSessionValue(request,i)
- if debug:
- print('v2r from session:',v2r)
- '''
- nota effettua subito la verifica dell'utente, cosi' salta al volo al login nel caso il check fosse non valido
- '''
- if not '_userauth_' in v2r:
- redirect(reverse('Login:login'))
- try:
- User.objects.get(pk=v2r['_userauth_'])
- except User.DoesNotExist as DNE:
- print("errore, utente autorizzato non esistente")
- print(DNE)
- redirect(reverse('Login:login'))
- print('_userauth_',v2r['_userauth_'])
- return v2r
- def ManageSecurityLevelList(request):
- session = getSessionParms(request)
- userauth = session['_userauth_']
- utenteautorizzato = User.objects.get(pk=userauth)
- securitylevel = SecurityLevel.objects.all().order_by('nome')
- value = {}
- value['utenteautorizzato']=utenteautorizzato
- value['sicurezza']=securitylevel
- value['navbar'] = True
- return render(request,'securitylevellist.html',value)
- def ManageSecurityRowList(request,levelId):
- session = getSessionParms(request)
- userauth = session['_userauth_']
- utenteautorizzato = User.objects.get(pk=userauth)
- securityrow = SecurityRow.objects.all().filter(securitylevel=levelId).order_by('id')
- value = {}
- value['utenteautorizzato'] = utenteautorizzato
- value['righe'] = securityrow
- value['navbar'] = True
- return render(request,'securityrowlist.html',value)
- #decorator: anziche' gestire tutta la sessione di sicurezza dentro la funzione,
- # magari possiamo fare la stessa cosa con un decoratore.
- def securitywrap(function):
- def wrapper(*args,**kwargs):
- print('...wrapping')
- print(args)
- print(kwargs)
- return function(*args,**kwargs)
- return wrapper
- '''
- from supporto import managepassword
- from sicurezza.views import *
- from logger.views import *
- from comunicazioni.views import *
- from datetime import date,datetime
- from configurazione.views import *
- def UserList(request):
- session = getSessionParms(request)
- userauth = session['_userauth_']
- user2edit = session['_user2edit_']
- domain2edit = session['_domain2edit_']
- request.session['_from_']="Utenti:UserList"
- print(next)
- if not user2edit:
- user2edit = userauth
- try:
- utenteautorizzato = User.objects.get(pk=userauth)
- except User.DoesNotExist as dne:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- if not domain2edit:
- domain2edit = utenteautorizzato.domain.id
- dominio = Domini.objects.get(pk=domain2edit)
- userlist = User.objects.filter(domain=domain2edit).order_by('mail')
- value={}
- value['utenteautorizzato'] = utenteautorizzato
- value['user'] = None
- value['userlist'] = userlist
- value['dominio'] = dominio
- value['navbar'] = True
- print("livello autorizzazione",utenteautorizzato.securitylevel_id)
- securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
- securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
- value['securityrow'] = securityrow
- value['securityrowLen'] = len(securityrow)
- value['CANWRITE']=True #per il momento, questo flag serve a capire se e' un record nuovo
- '''
|