Skip to content

Commit ffe4dc2

Browse files
check token in users service
1 parent 7e07563 commit ffe4dc2

File tree

2 files changed

+46
-29
lines changed

2 files changed

+46
-29
lines changed

src/apps/users.py

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,24 @@ def _get_token(headers: dict):
2626
return headers.get(keyName)
2727

2828

29-
def process_header(headers, body: dict) -> (dict, bool):
29+
def process_header(headers):
3030
token = _get_token(headers)
31-
if not token and not (body and "user_id" in body):
32-
return body, False
33-
newBody = body.copy() if body else {}
31+
if not token:
32+
return {"message":
33+
"no token provided",
34+
"status": http.client.UNAUTHORIZED}
3435
try:
35-
processToken = jwt.decode(token, key=os.getenv("HASH_SECRET"),
36-
algorithms=[os.getenv("HASH_ALGORITHM"), ])
37-
newBody["user_id"] = processToken.get("id", "")
38-
newBody["email"] = processToken.get("email")
36+
jwt.decode(token, os.getenv("JWT_SECRET"),
37+
algorithms=[os.getenv("HASH_ALGORITHM"), ])
3938
except jwt.ExpiredSignatureError:
4039
return {"message":
4140
"expired token",
42-
"status": http.client.UNAUTHORIZED}, True
41+
"status": http.client.UNAUTHORIZED}
4342
except jwt.InvalidTokenError:
4443
return {"message":
4544
"invalid token",
46-
"status": http.client.FORBIDDEN}, True
47-
return newBody, False
45+
"status": http.client.FORBIDDEN}
46+
return None
4847

4948

5049
class Users:
@@ -59,16 +58,24 @@ def getResponseJson(self, response):
5958

6059
def get(self, url, body, headers, query_params):
6160
url = f"{self.host}{url}{get_query_params(query_params)}"
61+
token_error_response = process_header(headers)
62+
if token_error_response:
63+
return make_response(token_error_response,
64+
token_error_response.get("status"))
6265
response = requests.get(url, json=body, headers=headers)
66+
headers = dict(response.headers)
6367
logging.info(f"USERS | GET | {url}")
64-
return make_response(self.getResponseJson(response),
65-
response.status_code)
68+
response = make_response(self.getResponseJson(response),
69+
response.status_code)
70+
response.headers[TOKEN_FIELD_NAME] = headers.get(TOKEN_FIELD_NAME)
71+
return response
6672

6773
def post(self, url, body, headers, query_params):
68-
# if not (url.startswith("login")):
69-
# body, error = process_header(headers, body)
70-
# if error:
71-
# return make_response(body, body.get("status"))
74+
if not (url.startswith("login")):
75+
token_error_response = process_header(headers)
76+
if token_error_response:
77+
return make_response(token_error_response,
78+
token_error_response.get("status"))
7279
response = requests.post(f"{self.host}{url}"
7380
f"{get_query_params(query_params)}",
7481
json=body,
@@ -83,19 +90,30 @@ def post(self, url, body, headers, query_params):
8390
return response
8491

8592
def patch(self, url, body, headers, query_params):
86-
response = requests.patch(f"{self.host}{url}"
87-
f"{get_query_params(query_params)}",
88-
json=body,
89-
headers=headers)
93+
url = f"{self.host}{url}{get_query_params(query_params)}"
94+
token_error_response = process_header(headers)
95+
if token_error_response:
96+
return make_response(token_error_response,
97+
token_error_response.get("status"))
98+
response = requests.patch(url, json=body, headers=headers)
9099
logging.info(f"USERS | PATCH | {url}")
91100
logging.debug(f"BODY: {body}")
92-
return make_response(self.getResponseJson(response),
93-
response.status_code)
101+
headers = dict(response.headers)
102+
response = make_response(self.getResponseJson(response),
103+
response.status_code)
104+
response.headers[TOKEN_FIELD_NAME] = headers.get(TOKEN_FIELD_NAME)
105+
return response
94106

95107
def delete(self, url, body, headers, query_params):
96-
response = requests.delete(f"{self.host}{url}"
97-
f"{get_query_params(query_params)}",
98-
headers=headers)
108+
token_error_response = process_header(headers)
109+
if token_error_response:
110+
return make_response(token_error_response,
111+
token_error_response.get("status"))
112+
url = f"{self.host}{url}{get_query_params(query_params)}"
113+
response = requests.delete(url, headers=headers)
99114
logging.info(f"USERS | DELETE | {url}")
100-
return make_response(self.getResponseJson(response),
101-
response.status_code)
115+
headers = dict(response.headers)
116+
response = make_response(self.getResponseJson(response),
117+
response.status_code)
118+
response.headers[TOKEN_FIELD_NAME] = headers.get(TOKEN_FIELD_NAME)
119+
return response

src/resource.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def getExtraData():
3030
"plant-types": Plants(),
3131
"logs": Plants(),
3232
"login": Users(),
33-
# TODO: Add the new service
3433
"social": Social()
3534
}
3635

0 commit comments

Comments
 (0)