1- from flask import Flask , Blueprint , request , jsonify , current_app
1+ from flask import Blueprint , request , jsonify , current_app
22from db .db_connector import DBConnector
33from Crypto .Cipher import DES
44from Crypto .Util .Padding import pad , unpad
55import base64
6+ from .jwt_utils import issue_token , validate_token
67
78auth = Blueprint ('auth' , __name__ )
89
@@ -44,23 +45,24 @@ def login():
4445 decrypted_password = str (decrypt_password (encrypted_password , DES_KEY ))
4546 print (f'Password comparsion!! input: { password } vs decrypted_password: { decrypted_password } ' )
4647 if password == decrypted_password :
47- result = dbc .execute_query (query = 'update_user_activity' , args = {
48+ dbc .execute_query (query = 'update_user_activity' , args = {
4849 'user_id' : _id ,
4950 'active' : True
5051 })
5152 is_admin = dbc .execute_query (query = 'get_user_admin' , args = _id )
5253 print (f'Admin --> { is_admin } ' )
5354 if is_admin == 1 :
5455 is_admin = 'true'
55- token = current_app .config ['ADMIN_AUTH_TOKEN' ]
5656 else :
5757 is_admin = 'false'
58- token = current_app .config ['AUTH_TOKEN' ]
5958
6059 comp_id = dbc .execute_query (query = 'get_user_comp_id' , args = _id )
6160 if not isinstance (comp_id , int ):
6261 return jsonify ({'status' : 'Bad request' }), 400
6362
63+ token : str = issue_token (user_id = _id , comp_id = comp_id , is_admin = (is_admin == 'true' ))
64+ print (token )
65+
6466 return jsonify ({'status' : 'Ok' , 'user_id' : _id , 'token' : token , 'is_admin' : is_admin , 'comp_id' : comp_id }), 200
6567
6668 return jsonify ({'status' : 'Bad credentials' }), 403
@@ -87,8 +89,8 @@ def reset_password():
8789 user_id = dict_data ['user_id' ]
8890 new_password = dict_data ['new_password' ]
8991 token = dict_data ['token' ]
90-
91- if token != current_app . config [ "AUTH_TOKEN" ] and token != current_app . config [ "ADMIN_AUTH_TOKEN" ] :
92+ is_valid , _payload = validate_token ( token )
93+ if not is_valid :
9294 return jsonify ({'status' : 'Unauthorised' }), 403
9395
9496 encrypted_password = encrypt_password (new_password , DES_KEY )
@@ -133,14 +135,15 @@ def signup():
133135 'user_id' : user_id ,
134136 'comp_id' : comp_id
135137 })
138+ token : str = issue_token (user_id = user_id , comp_id = comp_id , is_admin = True )
136139 if isinstance (result , int ):
137140 return jsonify (
138141 {
139142 'status' : 'Ok' ,
140143 'comp_id' : comp_id ,
141144 'user_id' : user_id ,
142145 'is_admin' : True ,
143- 'token' : current_app . config [ "ADMIN_AUTH_TOKEN" ]
146+ 'token' : token
144147 }
145148 ), 200
146149 else :
@@ -151,7 +154,8 @@ def new_employee():
151154 ''' Create new employee function '''
152155 dbc = DBConnector ()
153156 dict_data = request .get_json ()
154- if dict_data ['token' ] != current_app .config ['ADMIN_AUTH_TOKEN' ]:
157+ is_valid , payload = validate_token (dict_data .get ('token' ))
158+ if not is_valid or not payload .get ('is_admin' ):
155159 return jsonify ({'status' : 'Unauthorized' }), 403
156160 result = dbc .execute_query ('create_user_employee' , args = {
157161 'username' : dict_data ['username' ],
@@ -168,7 +172,8 @@ def retire():
168172 ''' Retire function, delete company and all employees '''
169173 dbc = DBConnector ()
170174 dict_data = request .get_json ()
171- if dict_data ['token' ] != current_app .config ['ADMIN_AUTH_TOKEN' ]:
175+ is_valid , payload = validate_token (dict_data .get ('token' ))
176+ if not is_valid or not payload .get ('is_admin' ):
172177 return jsonify ({'status' : 'Unauthorized' }), 403
173178 result = dbc .execute_query (query = 'delete_sales_by_comp_id' , args = dict_data ['comp_id' ])
174179 if result is False :
@@ -195,7 +200,8 @@ def delete_employee():
195200 ''' Delete employee function '''
196201 dbc = DBConnector ()
197202 dict_data = request .get_json ()
198- if dict_data ['token' ] != current_app .config ['ADMIN_AUTH_TOKEN' ]:
203+ is_valid , payload = validate_token (dict_data .get ('token' ))
204+ if not is_valid or not payload .get ('is_admin' ):
199205 return jsonify ({'status' : 'Unauthorized' }), 403
200206 result = dbc .execute_query ('delete_user_by_id' , dict_data ['employee_id' ])
201207 if result is True :
0 commit comments