Closed zechao closed 5 years ago
Es un poco difícil valorar los cambios cuando se ha modificado la librería entera en un solo commit. Por lo pronto veo que no se respeta el funcionamiento antiguo, es decir, si se acepta este pull request deberíamos cambiar la forma en que se usa dicha librería en todos los proyectos.
Creo que deberíamos reunirnos para debatir sobre este cambio, sin duda, no era la aproximación a la solución que esperábamos.
La intención de respetar el funcionamiento antiguo lo teníamos en mente, pero no se ha subido como toca. La idea es que lo que esta en la carpeta "deprecated" se mueva al root para que el commit no rompa a los usuarios actuales. Haremos otro commit para cambiar esto. Por lo demás, podéis seguir mirando.
Cuando queráis podemos reunirnos y mirarlo juntos, no es tanto como parece. Repito lo que he dicho a Dani, cachear parseos de bearer a permissions es esencial, cosa que creo que debería hacer todos los usuarios de este paquete. Además de que con esta versión se puede mockear permissions, lo que nos permite construir tests sin necesidad de bearers.
@guzmanweb, OK, me parece bien, que te parece quedar lunes a la primera hora.
Martes mejor, estoy fuera el lunes.
OK,gracias. Lunes intentaré de cambiar algo para que se adapete a la version antigua.
He modificado la estructura para adaptar la versión antigua, la única diferencia es que el tipo Permission ahora es publica, esto no interfiere la versión antigua puesto que sólo se usan constantes.
Hi @arquio
Have you checked this changes? Best regards!
We are checking it!
We have checked it. This addition does not affect the previous functionality. We are accepting the pull request.
We have given a more abstracted meaning to the package authorization, where an authorized user could have different implementations. JWT is the implementation, we could add an Apikey implementation in the future or just change from JWT to whatever desired without affecting applications using this package.
Changes:
Added an interface for 'Permissions' to be able to mock without a bearer
Added 'User' which contains a Permission, an IsDummy bool (necessary in HotelX) and the AuthorizationValue to be able to get the same auth user when connecting another microservice.
Added the 'Parser' interface which creates a 'User' from a auth header and a Middleware that uses a 'Parser' and stores the created 'User' in the context.
Abstracted what is User and Permissions from implementation (jwt). Moved what was JWT implementation to its own package.
Added a cache implementation of Parser in order to be able to cache parses (parsing a jwt is expensive).
Removed the deprecetaded isAdmin concept of the JWT implementation.
Changed the JWT implementation to a lighter one where the "github.com/auth0/go-jwt-middleware" library is no longer used
PermissionTable renamed to Permissions
Package name changed from 'authorization' to 'auth'
Changed IgnoreExpiration in config to IgnoreValidation, validations covers expiresAt, issuedAt and notBefore. IgnoreExpiration was not used.
Suggestions:
Change the folder name from 'go-jwt-tools' to 'go-auth' to better fit with its package name and intentions