Actualizaciones API/IMMEX
This commit is contained in:
@@ -6,7 +6,7 @@ from django.utils import timezone
|
||||
class TokenCheckSession(BasePermission):
|
||||
message = 'NO'
|
||||
def has_permission(self,request, view):
|
||||
print('FROM TokenCheckSession : ')
|
||||
|
||||
sistema = request.META.get('HTTP_SISTEMA','')
|
||||
mac = request.META.get('HTTP_MAC','')
|
||||
RFC = request.META.get('HTTP_RFC','')
|
||||
@@ -15,6 +15,7 @@ class TokenCheckSession(BasePermission):
|
||||
permiso= request.META.get('HTTP_PERMISO','')
|
||||
|
||||
active_session, created = ActiveTokenSession.objects.get_or_create(token=request.user.auth_token)
|
||||
|
||||
sistema_cliente = Sistemas_por_cliente_A24.objects.filter(id_sistema__nombre_sistema=sistema,cliente__RFC=RFC).first()
|
||||
if sistema_cliente is None:
|
||||
self.message +=f';El sistema:{sistema}, no se encuentra dado de alta para el RFC:{RFC}'
|
||||
@@ -29,30 +30,36 @@ class TokenCheckSession(BasePermission):
|
||||
if modulo.suspendido:
|
||||
self.message +=f';El modulo:{modulo} se encuentra suspendido para el RFC:{RFC}'
|
||||
return False
|
||||
if modulo.suspensionpermiso_set.filter(permiso__nombre=permiso).first() is None:
|
||||
self.message += f';El permiso:{permiso} en el modulo:{modulo} no esta dado de alta para el RFC:{RFC}'
|
||||
return False
|
||||
|
||||
if modulo.modulo.suspensionpermiso_set.filter(permiso__nombre=permiso).first() is None :
|
||||
self.message+=f";El Permiso:{permiso} no se encuentra en el modulo"
|
||||
return False
|
||||
|
||||
#Validacion para revisar los datos del device que envian con otro Token
|
||||
#en este caso revisa el nombre del sistemma. se pueden agregar mas filtros
|
||||
if active_session.token.devicea24_set.filter(sistema__nombre_sistema=sistema).first() is None:
|
||||
self.message+=";El Dispositivo no coicide con los datos enviados"
|
||||
return False
|
||||
inner_sistema = active_session.token.devicea24_set.first().sistema.nombre_sistema == sistema
|
||||
inner_mac = active_session.token.devicea24_set.first().MAC == mac
|
||||
|
||||
expiro = active_session.is_expired(1)
|
||||
#se cambia el tiempo en minutos para verificar si ya expiro
|
||||
#aumentar si se desea dar mas tiempo
|
||||
expiro = active_session.is_expired(50)
|
||||
|
||||
if not (inner_sistema and inner_mac):
|
||||
self.message+=";no se agregó código de máquina y/o sistema correctamente"
|
||||
if expiro:
|
||||
self.message+=";la session expiro"
|
||||
self.message+=";la session expiro;logeese nuevamente"
|
||||
|
||||
if active_session.token.devicea24_set.first() is None:
|
||||
self.message +=';Device not Found'
|
||||
return False
|
||||
#print(expiro , inner_sistema , inner_mac)
|
||||
|
||||
|
||||
if not (inner_sistema and inner_mac):
|
||||
self.message+=";no se agregó código de máquina y/o sistema correctamente"
|
||||
return False
|
||||
|
||||
#actualizas y salvas si la session expiro
|
||||
active_session.last_time=timezone.now()
|
||||
active_session.has_expired =True if expiro else False
|
||||
active_session.save()
|
||||
@@ -60,52 +67,75 @@ class TokenCheckSession(BasePermission):
|
||||
return False if expiro else True
|
||||
|
||||
|
||||
class ActiveTokenSessionPerm(BasePermission):
|
||||
class ActiveTokenSessionPerm(BasePermission):
|
||||
message = 'NO'
|
||||
def has_permission(self,request, view):
|
||||
authorization = request.META.get('HTTP_AUTHORIZATION','')
|
||||
sistema = request.META.get('HTTP_SISTEMA','')
|
||||
mac = request.META.get('HTTP_MAC','')
|
||||
if 'Token' in authorization:
|
||||
|
||||
active_session, created = ActiveTokenSession.objects.get_or_create(token=request.user.auth_token)
|
||||
#print(active_session.is_expired(1))
|
||||
#verifica que este el DeviceA24 dado de alta
|
||||
if active_session.token.devicea24_set.first() is None:
|
||||
self.message +=';Device not Found'
|
||||
|
||||
#Solo se checa para el methodo GET para aplicaciones clarion para que no envie el body
|
||||
#
|
||||
if request.method=='GET':
|
||||
if not mac:
|
||||
self.message +=';No se proporciono MAC o codigo maquina en headers'
|
||||
return False
|
||||
if not sistema:
|
||||
self.message +=';No se proporciono sistema en headers'
|
||||
return False
|
||||
if 'Token' in authorization :
|
||||
|
||||
active_session, created = ActiveTokenSession.objects.get_or_create(token=request.user.auth_token)
|
||||
|
||||
user=active_session.token.user #valida el usuario antes que todo para no crear sessiones innecesarias con superadmins
|
||||
if user.is_superuser or user.is_staff or user.groups.filter(name='admin').exists():
|
||||
return True
|
||||
#verifica que este el DeviceA24 dado de alta
|
||||
if active_session.token.devicea24_set.first() is None:
|
||||
self.message +=';Device not Found'
|
||||
return False
|
||||
|
||||
#print(active_session.token.devicea24_set.first().sistema.nombre_sistema)
|
||||
inner_mac = active_session.token.devicea24_set.first().MAC
|
||||
if mac != inner_mac:
|
||||
self.message +=f';El Codigo de maquina `{mac}` proporcionado para esta licencia no es igual al registrado para este equipo `{inner_mac}`'
|
||||
return False
|
||||
|
||||
|
||||
#print(active_session.token.devicea24_set.first().sistema.nombre_sistema)
|
||||
inner_mac = active_session.token.devicea24_set.first().MAC
|
||||
if mac != inner_mac:
|
||||
self.message +=f';El Codigo de maquina `{mac}` proporcionado para esta licencia no es igual al registrado para este equipo `{inner_mac}`'
|
||||
return False
|
||||
|
||||
|
||||
|
||||
inner_sistema= active_session.token.devicea24_set.first().sistema.nombre_sistema
|
||||
if sistema != inner_sistema:
|
||||
self.message +=f';El Sistema `{sistema}` proporcionado para esta licencia no es igual al registrado para este equipo `{inner_sistema}`'
|
||||
return False
|
||||
inner_sistema= active_session.token.devicea24_set.first().sistema.nombre_sistema
|
||||
if sistema != inner_sistema:
|
||||
self.message +=f';El Sistema `{sistema}` proporcionado para esta licencia no es igual al registrado para este equipo `{inner_sistema}`'
|
||||
return False
|
||||
|
||||
if created: #si el registro es recien creado la session es valida
|
||||
if created: #si el registro es recien creado la session es valida
|
||||
return True
|
||||
|
||||
#si la session esta expidara la renueva
|
||||
|
||||
if active_session.has_expired:#is_expired(50):
|
||||
active_session.start_time = timezone.now()
|
||||
active_session.last_time=timezone.now()
|
||||
active_session.has_expired =False
|
||||
active_session.save()
|
||||
|
||||
return True
|
||||
|
||||
#si la session esta expidara la renueva
|
||||
print('expirooo',active_session.is_expired(1))
|
||||
if active_session.is_expired(1):
|
||||
# if active_session.has_expired:
|
||||
# self.message += ';La Session ha expidado'
|
||||
# return False
|
||||
# else:
|
||||
# active_session.last_time=timezone.now()
|
||||
# active_session.save()
|
||||
# return True
|
||||
# si no encuentra el Header[Authorization] con Token no deja entrar
|
||||
#se espera que se envie el body con user y password
|
||||
else:
|
||||
active_session, created = ActiveTokenSession.objects.get_or_create(token=request.user.auth_token)
|
||||
if active_session.has_expired:#is_expired(50):
|
||||
active_session.start_time = timezone.now()
|
||||
active_session.last_time=timezone.now()
|
||||
active_session.has_expired =False
|
||||
active_session.save()
|
||||
|
||||
return True
|
||||
# if active_session.has_expired:
|
||||
# self.message += ';La Session ha expidado'
|
||||
# return False
|
||||
# else:
|
||||
# active_session.last_time=timezone.now()
|
||||
# active_session.save()
|
||||
# return True
|
||||
# si no encuentra el Header[Authorization] con Token no deja entrar
|
||||
|
||||
return False
|
||||
Reference in New Issue
Block a user