From b24476c05f5f1ce5376916cc3bbd05d5a66fc0b8 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Wed, 27 Jul 2022 08:43:02 +0300 Subject: [PATCH 1/6] fix version --- setup.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index f9fbb9d..bb1574c 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,5 @@ +# requires for 'bs4' and 'lxml' packages + from setuptools import setup, find_packages from requests import get as rget from bs4 import BeautifulSoup @@ -31,12 +33,13 @@ def get_install_requires(filename): for kw in (' - GitHub', ' - GoodManWEN'): if ' - GitHub' in description: description = description[:description.index(' - GitHub')] -html = BeautifulSoup(rget(release , headers).text ,'lxml') -version = html.find('div',{'class':'release-header'}).find('a').text +# html = BeautifulSoup(rget(release , headers).text ,'lxml') +# version = html.find('div',{'class':'release-header'}).find('a').text +version = '0.2.1' # makes this code working logger.info(f"description: {description}") logger.info(f"version: {version}") -# +#version with open('README.md','r',encoding='utf-8') as f: long_description_lines = f.readlines() From 3288226b7face730975f197735c5b8bd7e6b9102 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Wed, 27 Jul 2022 08:54:33 +0300 Subject: [PATCH 2/6] cors enabling --- aiohttp_jwtplus/middleware.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aiohttp_jwtplus/middleware.py b/aiohttp_jwtplus/middleware.py index c6412b3..dea2581 100644 --- a/aiohttp_jwtplus/middleware.py +++ b/aiohttp_jwtplus/middleware.py @@ -91,6 +91,8 @@ def check_if_request_in_whitelist(path , whitelist): async def _router(request, handler): try: + if request.method.lower() == 'options': # to enable CORS + return await handler(request) if self._whitelist: if check_if_request_in_whitelist(request.path , self._whitelist): return await handler(request) @@ -136,4 +138,4 @@ def test_behav(self): ''' more information in test_behav.py ''' - pass \ No newline at end of file + pass From 2a5f581eafff311861ba77ab2d41ec3d4d5ded57 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Wed, 27 Jul 2022 16:11:51 +0300 Subject: [PATCH 3/6] audience --- aiohttp_jwtplus/secrets.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/aiohttp_jwtplus/secrets.py b/aiohttp_jwtplus/secrets.py index 4c3ab55..67c49c3 100644 --- a/aiohttp_jwtplus/secrets.py +++ b/aiohttp_jwtplus/secrets.py @@ -8,14 +8,15 @@ class SecretManager: def __init__( - self , - secret:str = "" , - refresh_interval = 0 , - scheme = 'Bearer', - algorithm = 'HS256' , - exptime = '30d' + self, + secret:str="", + refresh_interval=0, + scheme='Bearer', + algorithm='HS256', + exptime='30d', + audience:str=None ): - if not isinstance(secret , str): + if not isinstance(secret, str): raise TypeError("Secret should be a string.") self.algorithm = algorithm @@ -30,6 +31,7 @@ def __init__( self._exptime = self._parse_time(exptime) self.scheme = scheme self._scheme_bytes = self.scheme.encode('utf-8') + self._audience = audience def _parse_time(self, interval): @@ -65,8 +67,8 @@ def _random_token(self , n): rc = lambda :chr(random.randint(0,74) + 48) return ''.join((rc() for i in range(n))) - def decode(self , *args , **kwargs): - return pyjwt.decode( algorithms = [self.algorithm,] ,*args , **kwargs) + def decode(self, *args, **kwargs): + return pyjwt.decode(algorithms=[self.algorithm], audience=self._audience, *args, **kwargs) def encode(self , payload , *args , **kwargs): if not isinstance(payload , dict): @@ -101,4 +103,4 @@ async def _remove_in_time(time , tk): await asyncio.sleep(self._refresh_interval) new_tk = self._random_token(self._secret_length) self._secrets.append(new_tk) - loop.create_task(_remove_in_time(self._exptime * 2 , new_tk)) \ No newline at end of file + loop.create_task(_remove_in_time(self._exptime * 2 , new_tk)) From d5b31195d88204f1b448988561b44de2f25f1d32 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Wed, 27 Jul 2022 21:15:55 +0300 Subject: [PATCH 4/6] 'sub' instead of 'username' --- aiohttp_jwtplus/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aiohttp_jwtplus/utils.py b/aiohttp_jwtplus/utils.py index c080447..b9c034d 100644 --- a/aiohttp_jwtplus/utils.py +++ b/aiohttp_jwtplus/utils.py @@ -14,9 +14,9 @@ async def basic_token_getter(request): async def basic_identifier(payload): if 'username' in payload: - ret = payload['username'] + ret = payload['sub'] # https://en.wikipedia.org/wiki/JSON_Web_Token if ret: - return {'username' : ret , 'full_jwt_payload':payload} + return {'sub' : ret , 'full_jwt_payload':payload} else: return False @@ -26,4 +26,4 @@ def show_request_info(request): print(f"\trequest path :\t{request.path}") print(f"\tauthen status :\t{request['auth_status']}") print(f"\tcarry words :\t{request['auth_carry']}") - print("\t\t\t*/") \ No newline at end of file + print("\t\t\t*/") From 68407abc69748b97abbb47940fd7c80ba0ef6136 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Wed, 27 Jul 2022 21:17:48 +0300 Subject: [PATCH 5/6] Update utils.py --- aiohttp_jwtplus/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiohttp_jwtplus/utils.py b/aiohttp_jwtplus/utils.py index b9c034d..62b32e7 100644 --- a/aiohttp_jwtplus/utils.py +++ b/aiohttp_jwtplus/utils.py @@ -13,7 +13,7 @@ async def basic_token_getter(request): return web.HTTPForbidden() async def basic_identifier(payload): - if 'username' in payload: + if 'sub' in payload: ret = payload['sub'] # https://en.wikipedia.org/wiki/JSON_Web_Token if ret: return {'sub' : ret , 'full_jwt_payload':payload} From ac3674132a40917b2666d0e4a087877fef3cd1d8 Mon Sep 17 00:00:00 2001 From: loven-doo <1429305+loven-doo@users.noreply.github.com> Date: Thu, 28 Jul 2022 08:54:21 +0300 Subject: [PATCH 6/6] Update setup.py --- setup.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index bb1574c..ca63509 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,10 @@ from setuptools import setup, find_packages from requests import get as rget from bs4 import BeautifulSoup -import logging , sys +import logging, sys + +VERSION = '0.2.1' # Setup script should work for any branch, not for releases. Usually, the version in repo is the lattest and not released + # init logger logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -20,7 +23,6 @@ def get_install_requires(filename): # url = 'https://github.com/GoodManWEN/aiohttp-jwtplus' -release = f'{url}/releases/latest' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36", "Connection": "keep-alive", @@ -33,9 +35,7 @@ def get_install_requires(filename): for kw in (' - GitHub', ' - GoodManWEN'): if ' - GitHub' in description: description = description[:description.index(' - GitHub')] -# html = BeautifulSoup(rget(release , headers).text ,'lxml') -# version = html.find('div',{'class':'release-header'}).find('a').text -version = '0.2.1' # makes this code working +version = VERSION logger.info(f"description: {description}") logger.info(f"version: {version}")