Skip to content

Commit 7ab4fd8

Browse files
author
Joe Gasewicz
authored
Merge pull request #78 from joegasewicz/auth_docs
Authentication documentation fixes #77
2 parents cc6f1bc + 243a7b6 commit 7ab4fd8

File tree

1 file changed

+38
-23
lines changed

1 file changed

+38
-23
lines changed

flask_jwt_router/_authentication.py

+38-23
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def update_entity(self):
1818
"""
1919
from abc import ABC, abstractmethod
2020
import jwt
21-
from typing import Any
21+
from typing import Any, Union
2222
from datetime import datetime
2323
from dateutil.relativedelta import *
2424

@@ -43,53 +43,68 @@ class JWTAuthStrategy(BaseAuthStrategy):
4343
"""
4444
Uses SHA-256 hash algorithm
4545
"""
46+
#: The reference to the entity key. Defaulted to `id`. See :class:`~flask_jwt_router._extensions`
47+
#: for more information.
48+
entity_key: str = "id"
49+
50+
#: The reference to the entity key. Defaulted to `DEFAULT_SECRET_KEY`.
51+
#: See :class:`~flask_jwt_router._extensions` for more information.
52+
secret_key: str = "DEFAULT_SECRET_KEY"
53+
54+
#: The reference to the entity ID.
55+
entity_id: str = None
4656

4757
def __init__(self):
4858
super(JWTAuthStrategy, self).__init__()
4959

50-
def encode_token(self, extensions: Config, entity_id: Any, exp: Any):
60+
def encode_token(self, extensions: Config, entity_id: Any, exp: Any) -> str:
5161
"""
52-
:param extensions:
53-
:param entity_id:
54-
:param exp:
55-
:return:
62+
:param extensions: See :class:`~flask_jwt_router._extensions`
63+
:param entity_id: Normally the primary key `id` or `user_id`
64+
:param exp: The expiry duration set when encoding a new token
65+
:return: str
5666
"""
57-
entity_key = extensions.entity_key
58-
secret_key = extensions.secret_key
67+
#: The reference to the entity key. Defaulted to `id`. See :class:`~flask_jwt_router._extensions`
68+
#: for more information.
69+
self.entity_key = extensions.entity_key
70+
71+
#: The reference to the entity key. Defaulted to `DEFAULT_SECRET_KEY`.
72+
# See :class:`~flask_jwt_router._extensions` for more information.
73+
self.secret_key = extensions.secret_key
5974

6075
encoded = jwt.encode({
61-
entity_key: entity_id,
76+
self.entity_key: entity_id,
6277
"exp": datetime.utcnow() + relativedelta(days=+exp) # TODO options for different time types
6378
},
64-
secret_key,
79+
self.secret_key,
6580
algorithm="HS256"
6681
).decode("utf-8")
6782
return encoded
6883

69-
def register_entity(self, extensions: Config, exp: Any, **kwargs):
84+
def register_entity(self, extensions: Config, exp: Any, **kwargs) -> Union[str, None]:
7085
"""
71-
:param extensions:
72-
:param exp:
73-
:param kwargs:
74-
:return:
86+
:param extensions: See :class:`~flask_jwt_router._extensions`
87+
:param exp: The expiry duration set when encoding a new token
88+
:param kwargs: Gets entity_id
89+
:return: Union[str, None]
7590
"""
76-
entity_id = kwargs.get("entity_id", None)
77-
if entity_id:
78-
token = self.encode_token(extensions, exp, entity_id)
91+
self.entity_id = kwargs.get("entity_id", None)
92+
if self.entity_id:
93+
token = self.encode_token(extensions, exp, self.entity_id)
7994
return token
8095
else:
8196
return None
8297

83-
def update_entity(self, extensions: Config, exp: Any, **kwargs):
98+
def update_entity(self, extensions: Config, exp: Any, **kwargs) -> Union[str, None]:
8499
"""
85100
:param extensions:
86101
:param exp:
87102
:param kwargs:
88-
:return:
103+
:return: Union[str, None]
89104
"""
90-
entity_id = kwargs.get("entity_id", None)
91-
if entity_id:
92-
token = self.encode_token(extensions, exp, entity_id)
105+
self.entity_id = kwargs.get("entity_id", None)
106+
if self.entity_id:
107+
token = self.encode_token(extensions, exp, self.entity_id)
93108
return token
94109
else:
95110
return None

0 commit comments

Comments
 (0)