diff --git a/docs/rest/login.rest b/docs/rest/login.rest index 05c375e..121ba80 100644 --- a/docs/rest/login.rest +++ b/docs/rest/login.rest @@ -26,6 +26,16 @@ GET {{server}}/paraderos-image/?id_paradero=42318 Authorization: Bearer {{token}} ### -# @name permisos +# @name permisos_todos POST {{server}}/usuarios/permisos/ Authorization: Bearer {{token}} + +### +# @name permisos_path +POST {{server}}/usuarios/permisos/ +Authorization: Bearer {{token}} +Content-Type: application/json + +{ + "path": "/usuarios" +} diff --git a/project/api/views/usuario.py b/project/api/views/usuario.py index 893d868..989ca77 100755 --- a/project/api/views/usuario.py +++ b/project/api/views/usuario.py @@ -153,25 +153,36 @@ class UsuarioViewSet(viewsets.ModelViewSet): return HttpResponse(str(e), status = 500) @action(detail=False, methods=['post']) - def permisos(self, request): + def permisos(self, request): + input = {} + if request.body > b'': + input = json.loads(request.body) + login = request.jwt_info['login'] - usuario = models.Usuario.objects.filter(login=login).first() - registros = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol) - aplicaciones = [] - for registro in registros: - if registro.id_aplicacion.vigente: - rol_app = models.RolAplicacion.objects.filter(id_rol=registro.id_rol, id_aplicacion=registro.id_aplicacion).first() - escritura = True - if rol_app != None: - escritura = rol_app.solo_visualizar != True - - aplicaciones.append({ - 'id_aplicacion': registro.id_aplicacion.id_aplicacion, - 'path_app': registro.id_aplicacion.path_app, - 'nombre_app': registro.id_aplicacion.nombre_app, - 'escritura': escritura - }) + if 'path' in input: + path = input.get('path') + aplicacion = models.Aplicacion.objects.filter(path_app=path).first() + rol_aplicacion = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol, id_aplicacion=aplicacion.id_aplicacion).first() + return JsonResponse({ + 'path_app': path, + 'nombre_app': aplicacion.nombre_app, + 'escritura': rol_aplicacion.solo_visualizar == False + }) + else: + registros = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol) + aplicaciones = [] + for registro in registros: + if registro.id_aplicacion.vigente: + rol_app = models.RolAplicacion.objects.filter(id_rol=registro.id_rol, id_aplicacion=registro.id_aplicacion).first() + escritura = True + if rol_app != None: + escritura = rol_app.solo_visualizar != True + + aplicaciones.append({ + 'path_app': registro.id_aplicacion.path_app, + 'nombre_app': registro.id_aplicacion.nombre_app, + }) - return JsonResponse({ "aplicaciones": aplicaciones }) \ No newline at end of file + return JsonResponse({ "aplicaciones": aplicaciones }) \ No newline at end of file