mirror of
https://github.com/LukeHagar/connexion.git
synced 2025-12-06 12:27:45 +00:00
* Upgrade isort==5.9.1 * isort --thirdparty connexion,aiohttp ./tests * isort --thirdparty aiohttp,connexion --check-only --diff . * cd tests before running isort
52 lines
1.1 KiB
Python
Executable File
52 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
'''
|
|
Basic example of a resource server
|
|
'''
|
|
|
|
import time
|
|
|
|
import connexion
|
|
from jose import JWTError, jwt
|
|
from werkzeug.exceptions import Unauthorized
|
|
|
|
JWT_ISSUER = 'com.zalando.connexion'
|
|
JWT_SECRET = 'change_this'
|
|
JWT_LIFETIME_SECONDS = 600
|
|
JWT_ALGORITHM = 'HS256'
|
|
|
|
|
|
def generate_token(user_id):
|
|
timestamp = _current_timestamp()
|
|
payload = {
|
|
"iss": JWT_ISSUER,
|
|
"iat": int(timestamp),
|
|
"exp": int(timestamp + JWT_LIFETIME_SECONDS),
|
|
"sub": str(user_id),
|
|
}
|
|
|
|
return jwt.encode(payload, JWT_SECRET, algorithm=JWT_ALGORITHM)
|
|
|
|
|
|
def decode_token(token):
|
|
try:
|
|
return jwt.decode(token, JWT_SECRET, algorithms=[JWT_ALGORITHM])
|
|
except JWTError as e:
|
|
raise Unauthorized from e
|
|
|
|
|
|
def get_secret(user, token_info) -> str:
|
|
return '''
|
|
You are user_id {user} and the secret is 'wbevuec'.
|
|
Decoded token claims: {token_info}.
|
|
'''.format(user=user, token_info=token_info)
|
|
|
|
|
|
def _current_timestamp() -> int:
|
|
return int(time.time())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = connexion.FlaskApp(__name__)
|
|
app.add_api('openapi.yaml')
|
|
app.run(port=8080)
|