@@ -35,34 +35,24 @@ def authenticate_by_token(callback_token):
3535 return None
3636
3737
38- def create_callback_token_for_user (user , alias_type , token_type ):
39- token = None
38+ def create_callback_token_for_user (user , alias_type , token_type , to_alias ):
4039 alias_type_u = alias_type .upper ()
41- to_alias_field = getattr (api_settings , f'PASSWORDLESS_USER_{ alias_type_u } _FIELD_NAME' )
42- if user .pk in api_settings .PASSWORDLESS_DEMO_USERS .keys ():
43- token = CallbackToken .objects .filter (user = user ).first ()
44- if token :
45- return token
46- else :
47- return CallbackToken .objects .create (
48- user = user ,
49- key = api_settings .PASSWORDLESS_DEMO_USERS [user .pk ],
50- to_alias_type = alias_type_u ,
51- to_alias = getattr (user , to_alias_field ),
52- type = token_type
53- )
54-
55- token = CallbackToken .objects .create (user = user ,
56- to_alias_type = alias_type_u ,
57- to_alias = getattr (user , to_alias_field ),
58- type = token_type )
59-
60-
61-
62- if token is not None :
40+ demo_key = api_settings .PASSWORDLESS_DEMO_USERS .get (user .pk ) or getattr (
41+ api_settings , f"PASSWORDLESS_DEMO_USERS_{ alias_type_u } "
42+ ).get (to_alias )
43+ if demo_key :
44+ token , _ = CallbackToken .objects .get_or_create (
45+ user = user ,
46+ key = demo_key ,
47+ to_alias_type = alias_type_u ,
48+ to_alias = to_alias ,
49+ type = token_type )
6350 return token
6451
65- return None
52+ return CallbackToken .objects .create (user = user ,
53+ to_alias_type = alias_type_u ,
54+ to_alias = to_alias ,
55+ type = token_type )
6656
6757
6858def validate_token_age (callback_token ):
@@ -74,7 +64,9 @@ def validate_token_age(callback_token):
7464 token = CallbackToken .objects .get (key = callback_token , is_active = True )
7565 seconds = (timezone .now () - token .created_at ).total_seconds ()
7666 token_expiry_time = api_settings .PASSWORDLESS_TOKEN_EXPIRE_TIME
77- if token .user .pk in api_settings .PASSWORDLESS_DEMO_USERS .keys ():
67+ if token .user .pk in api_settings .PASSWORDLESS_DEMO_USERS or token .to_alias in getattr (
68+ api_settings , f"PASSWORDLESS_DEMO_USERS_{ token .to_alias_type } "
69+ ):
7870 return True
7971 if seconds <= token_expiry_time :
8072 return True
0 commit comments