2727from .database .models import (
2828 Authentication ,
2929 AuthType ,
30+ Role ,
3031)
3132
3233logger = logging .getLogger (__name__ )
@@ -59,7 +60,7 @@ async def register_credentials(request: web.Request) -> web.Response:
5960 request , token , content ["username" ], user_uuid , credential_uuid , AuthType .CREDENTIAL .value
6061 )
6162 else :
62- return credentials_response
63+ return credentials_response # pragma: no cover
6364
6465 return user_creation
6566
@@ -94,7 +95,7 @@ async def register_token(request: web.Request) -> web.Response:
9495 )
9596 return token_response
9697
97- return user_creation
98+ return user_creation # pragma: no cover
9899
99100
100101async def credentials_login (request : web .Request ) -> web .Response :
@@ -141,7 +142,7 @@ async def validate_credentials(request: web.Request):
141142 token = await get_credential_token (request , credential_uuid )
142143 return web .json_response ({"token" : token }), token
143144
144- return response , None
145+ return response , None # pragma: no cover
145146
146147
147148async def get_credential_token (request : web .Request , credential_uuid : str ):
@@ -177,22 +178,28 @@ async def get_token_user(request: web.Request, token: str, auth_type: AuthType):
177178 s = session ()
178179
179180 r = s .query (Authentication ).filter (Authentication .token == token ).order_by (desc (Authentication .updated_at )).first ()
181+ role = r .role .code
180182 s .close ()
181183
182184 if r is not None :
183185 if r .auth_type == auth_type .value :
184- user_call_response = await get_user_call (request , r .user_uuid )
185- return user_call_response
186+ response = await get_user_call (request , r .user_uuid )
187+
188+ if response .status == 200 :
189+ resp_json = json .loads (response .text )
190+ resp_json ["role" ] = role
191+ return web .json_response (resp_json )
192+ return response # pragma: no cover
186193
187- return web .HTTPBadRequest (text = "Please provide correct Token." )
194+ return web .HTTPBadRequest (text = "Please provide correct Token." ) # pragma: no cover
188195
189196
190197async def get_user_from_credentials (request : web .Request ) -> web .Response :
191198 resp , token = await validate_credentials (request )
192199
193200 if resp .status == 200 :
194201 return await get_token_user (request , token , AuthType .CREDENTIAL )
195- return resp
202+ return resp # pragma: no cover
196203
197204
198205async def validate_token (request : web .Request ) -> web .Response :
@@ -207,21 +214,35 @@ async def validate_token(request: web.Request) -> web.Response:
207214 s = session ()
208215
209216 r = s .query (Authentication ).filter (Authentication .token == token ).order_by (desc (Authentication .updated_at )).first ()
217+ role = None
218+ if r is not None :
219+ role = r .role .code
210220 s .close ()
211221
212222 if r is not None :
223+
213224 if r .auth_type == AuthType .TOKEN .value :
214225 token_resp = await validate_token_call (request )
215226
216227 if token_resp .status == 200 :
217- return await get_user_call (request , r .user_uuid )
228+ return await user_call (request , r .user_uuid , role )
218229
219230 if r .auth_type == AuthType .CREDENTIAL .value :
220- return await get_user_call (request , r .user_uuid )
231+ return await user_call (request , r .user_uuid , role )
221232
222233 return web .json_response ({"error" : "Please provide correct Token." }, status = 400 )
223234
224235
236+ async def user_call (request : web .Request , user_uuid , role ):
237+ response = await get_user_call (request , user_uuid )
238+
239+ if response .status == 200 :
240+ resp_json = json .loads (response .text )
241+ resp_json ["role" ] = role
242+ return web .json_response (resp_json )
243+ return response # pragma: no cover
244+
245+
225246async def get_user_call (request : web .Request , user_uuid : str ) -> web .Response :
226247 """ Get User by Session token """
227248 user_host = request .app ["config" ].user_service .host
@@ -339,6 +360,7 @@ async def create_authentication(
339360 user_id = user_id ,
340361 token = token ,
341362 auth_type = auth_type ,
363+ role_code = int (request .app ["config" ].roles .default ),
342364 created_at = now ,
343365 updated_at = now ,
344366 )
@@ -359,3 +381,31 @@ async def _get_authorization_token(request: web.Request):
359381 raise Exception
360382 except Exception as e :
361383 raise e
384+
385+
386+ class RoleRest :
387+ @staticmethod
388+ async def get_roles (request : web .Request ):
389+ session = sessionmaker (bind = request .app ["db_engine" ])
390+
391+ s = session ()
392+ records = s .query (Role ).all ()
393+ res = list ()
394+ for record in records :
395+ res .append (record .to_serializable_dict ())
396+ s .close ()
397+ return web .json_response (res )
398+
399+
400+ class AuthenticationRest :
401+ @staticmethod
402+ async def get_all (request : web .Request ):
403+ session = sessionmaker (bind = request .app ["db_engine" ])
404+
405+ s = session ()
406+ records = s .query (Authentication ).all ()
407+ res = list ()
408+ for record in records :
409+ res .append (record .to_serializable_dict ())
410+ s .close ()
411+ return web .json_response (res )
0 commit comments