diff --git a/LICENSE.txt b/LICENSE.txt index dd6424b8..cbe191f6 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2018 Kuchuk Oleh +Copyright (c) 2018-2020 Kuchuk Oleh Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/example/app.py b/example/app.py index 43dc3be5..8ea27764 100644 --- a/example/app.py +++ b/example/app.py @@ -9,50 +9,36 @@ logger = logging.getLogger(__name__) -secret = 'your secret' +secret = "your secret" + + +async def get_token(request): + return jwt.encode({"username": "johndoe", "scopes": ["user:admin"]}, secret) + + +jwt_middleware = JWTMiddleware( + secret, + request_property="user", + token_getter=get_token, + credentials_required=False, + whitelist=[r"/(foo|bar)"], +) async def foo_handler(request): - return json_response({'status': 'OK'}) + return json_response({"status": "OK"}) -@check_permissions([ - 'user:admin', - 'olehkuchuk', -], comparison=match_any) +@check_permissions(["user:admin", "johndoe"], comparison=match_any) async def protected_handler(request): - payload = request.get('user', {}) - return json_response({ - 'status': 'OK', - 'username': payload.get('username'), - }) + payload = request.get("user", {}) + return json_response({"status": "OK", "username": payload.get("username")}) -async def get_token(request): - return jwt.encode({ - 'username': 'olehkuchuk', - 'scopes': [ - 'user:admin', - ], - }, secret) - return None - -app = web.Application( - middlewares=[ - JWTMiddleware( - secret=secret, - request_property='user', - token_getter=get_token, - credentials_required=False, - whitelist=[ - r'/(foo|bar)' - ], - ), - ] -) +app = web.Application(middlewares=[jwt_middleware]) -app.router.add_get('/foo', foo_handler) -app.router.add_get('/protected', protected_handler) +app.router.add_get("/foo", foo_handler) +app.router.add_get("/protected", protected_handler) -if __name__ == '__main__': +if __name__ == "__main__": web.run_app(app) diff --git a/example/basic.py b/example/basic.py index f197a9f7..c7024437 100644 --- a/example/basic.py +++ b/example/basic.py @@ -3,23 +3,19 @@ from aiohttp_jwt import JWTMiddleware -sharable_secret = 'secret' +sharable_secret = "secret" async def public_handler(request): - return web.json_response({'username': 'anonymous'}) + return web.json_response({"username": "anonymous"}) async def protected_handler(request): - return web.json_response({ - 'username': request['user'].get('username', 'anonymous'), - }) + return web.json_response({"username": request["user"].get("username", "anonymous")}) async def get_token(request): - return jwt.encode({ - 'username': 'olehkuchuk', - }, sharable_secret) + return jwt.encode({"username": "johndoe"}, sharable_secret) app = web.Application( @@ -27,17 +23,15 @@ async def get_token(request): JWTMiddleware( secret_or_pub_key=sharable_secret, token_getter=get_token, - request_property='user', - whitelist=[ - r'/public*' - ] + request_property="user", + whitelist=[r"/public*"], ) ] ) -app.router.add_get('/public', public_handler) -app.router.add_get('/protected', protected_handler) +app.router.add_get("/public", public_handler) +app.router.add_get("/protected", protected_handler) -if __name__ == '__main__': +if __name__ == "__main__": web.run_app(app) diff --git a/example/login_required.py b/example/login_required.py index 89d7083b..fde41bff 100644 --- a/example/login_required.py +++ b/example/login_required.py @@ -3,35 +3,33 @@ from aiohttp_jwt import JWTMiddleware, login_required -sharable_secret = 'secret' +sharable_secret = "secret" + +jwt_middleware = JWTMiddleware( + sharable_secret, request_property="user", credentials_required=False +) async def public_handler(request): - return web.json_response({ - 'username': request['user'].get('username') - if 'user' in request else 'anonymous', - }) + return web.json_response( + { + "username": request["user"].get("username") + if "user" in request + else "anonymous" + } + ) @login_required async def auth_required_handler(request): - return web.json_response({ - 'username': request['user'], - }) - -app = web.Application( - middlewares=[ - JWTMiddleware( - secret_or_pub_key=sharable_secret, - request_property='user', - credentials_required=False, - ) - ] -) + return web.json_response({"username": request["user"]}) + + +app = web.Application(middlewares=[jwt_middleware]) -app.router.add_get('/public', public_handler) -app.router.add_get('/protected', auth_required_handler) +app.router.add_get("/public", public_handler) +app.router.add_get("/protected", auth_required_handler) -if __name__ == '__main__': +if __name__ == "__main__": web.run_app(app) diff --git a/example/permissions.py b/example/permissions.py index 6286dc45..cf7c3740 100644 --- a/example/permissions.py +++ b/example/permissions.py @@ -3,48 +3,44 @@ from aiohttp_jwt import JWTMiddleware, check_permissions, match_any -sharable_secret = 'secret' +sharable_secret = "secret" + + +async def get_token(request): + return jwt.encode( + {"username": "johndoe", "scopes": ["username:johndoe"]}, sharable_secret + ) + + +jwt_middleware = JWTMiddleware( + sharable_secret, + token_getter=get_token, + request_property="user", + credentials_required=False, + whitelist=[r"/public*"], +) async def public_handler(request): - return web.json_response({ - 'username': request['user'].get('username') - if 'user' in request else 'anonymous', - }) + return web.json_response( + { + "username": request["user"].get("username") + if "user" in request + else "anonymous" + } + ) -@check_permissions([ - 'app/user:admin', - 'username:olehkuchuk', -], comparison=match_any) +@check_permissions(["app/user:admin", "username:johndoe"], comparison=match_any) async def protected_handler(request): - return web.json_response({ - 'username': request['user'].get('username'), - }) + return web.json_response({"username": request["user"].get("username")}) -async def get_token(request): - return jwt.encode({ - 'username': 'olehkuchuk', - 'scopes': ['username:olehkuchuk'], - }, sharable_secret) - - -app = web.Application( - middlewares=[ - JWTMiddleware( - secret_or_pub_key=sharable_secret, - token_getter=get_token, - request_property='user', - credentials_required=False, - whitelist=[r'/public*'] - ) - ] -) +app = web.Application(middlewares=[jwt_middleware]) -app.router.add_get('/public', public_handler) -app.router.add_get('/protected', protected_handler) +app.router.add_get("/public", public_handler) +app.router.add_get("/protected", protected_handler) -if __name__ == '__main__': +if __name__ == "__main__": web.run_app(app)