10
10
11
11
12
12
def _ensure_user_credentials (
13
- user : AuthUser , key : str , secret : str , log : Logger , revoke : bool = False
13
+ user : AuthUser ,
14
+ key : str ,
15
+ secret : str ,
16
+ log : Logger ,
17
+ revoke : bool = False ,
18
+ internal_user : bool = False ,
14
19
) -> None :
15
20
if revoke :
16
21
log .info (f"Revoking credentials for existing user { user .id } ({ user .name } )" )
@@ -19,19 +24,34 @@ def _ensure_user_credentials(
19
24
return
20
25
21
26
if not (key and secret ):
22
- log .info (f"Resetting credentials for existing user { user .id } ({ user .name } )" )
23
- user .credentials = []
24
- user .save ()
27
+ if internal_user :
28
+ log .info (f"Resetting credentials for existing user { user .id } ({ user .name } )" )
29
+ user .credentials = []
30
+ user .save ()
25
31
return
26
32
27
33
new_credentials = Credentials (key = key , secret = secret )
28
- log .info (f"Setting credentials for existing user { user .id } ({ user .name } )" )
29
- user .credentials = [new_credentials ]
30
- user .save ()
31
- return
34
+ if internal_user :
35
+ log .info (f"Setting credentials for existing user { user .id } ({ user .name } )" )
36
+ user .credentials = [new_credentials ]
37
+ user .save ()
38
+ return
39
+
40
+ if user .credentials is None :
41
+ user .credentials = []
42
+ if not any ((cred .key , cred .secret ) == (key , secret ) for cred in user .credentials ):
43
+ log .info (f"Adding credentials for existing user { user .id } ({ user .name } )" )
44
+ user .credentials .append (new_credentials )
45
+ user .save ()
32
46
33
47
34
- def _ensure_auth_user (user_data : dict , company_id : str , log : Logger , revoke : bool = False ) -> str :
48
+ def _ensure_auth_user (
49
+ user_data : dict ,
50
+ company_id : str ,
51
+ log : Logger ,
52
+ revoke : bool = False ,
53
+ internal_user : bool = False ,
54
+ ) -> str :
35
55
user_id = user_data .get ("id" , f"__{ user_data ['name' ]} __" )
36
56
role = user_data ["role" ]
37
57
email = user_data ["email" ]
@@ -40,12 +60,15 @@ def _ensure_auth_user(user_data: dict, company_id: str, log: Logger, revoke: boo
40
60
41
61
user : AuthUser = AuthUser .objects (id = user_id ).first ()
42
62
if user :
43
- _ensure_user_credentials (user = user , key = key , secret = secret , log = log , revoke = revoke )
44
- if (
45
- user .role != role
46
- or user .email != email
47
- or user .autocreated != autocreated
48
- ):
63
+ _ensure_user_credentials (
64
+ user = user ,
65
+ key = key ,
66
+ secret = secret ,
67
+ log = log ,
68
+ revoke = revoke ,
69
+ internal_user = internal_user ,
70
+ )
71
+ if user .role != role or user .email != email or user .autocreated != autocreated :
49
72
user .email = email
50
73
user .role = role
51
74
user .autocreated = autocreated
@@ -54,9 +77,7 @@ def _ensure_auth_user(user_data: dict, company_id: str, log: Logger, revoke: boo
54
77
return user .id
55
78
56
79
credentials = (
57
- [Credentials (key = key , secret = secret )]
58
- if not revoke and key and secret
59
- else []
80
+ [Credentials (key = key , secret = secret )] if not revoke and key and secret else []
60
81
)
61
82
log .info (f"Creating user: { user_data ['name' ]} " )
62
83
@@ -108,7 +129,9 @@ def ensure_fixed_user(user: FixedUser, log: Logger, emails: set):
108
129
try :
109
130
log .info (f"Updating user name: { user .name } " )
110
131
given_name , _ , family_name = user .name .partition (" " )
111
- db_user .update (name = user .name , given_name = given_name , family_name = family_name )
132
+ db_user .update (
133
+ name = user .name , given_name = given_name , family_name = family_name
134
+ )
112
135
except Exception :
113
136
pass
114
137
else :
0 commit comments