@@ -37,8 +37,8 @@ def use_filestore_auth(user: User):
37
37
user_login = get_user_login (user )
38
38
user_token , status = get_filestore_token (user_login , host , verify )
39
39
if not user_token :
40
- return None
41
- return user_token
40
+ return None , status
41
+ return user_token , status
42
42
43
43
44
44
def get_filestore_token (user_login , host , verify ):
@@ -95,7 +95,7 @@ def add_filestore_auth(user: User):
95
95
if user .is_staff : # admin and staff get root scope
96
96
set_filestore_scope (user )
97
97
98
- fs_user_token = use_filestore_auth (user )
98
+ fs_user_token , status = use_filestore_auth (user )
99
99
return fs_user_token
100
100
101
101
@@ -107,7 +107,7 @@ def set_filestore_scope(user: User):
107
107
if not admin_token :
108
108
return False
109
109
# find user
110
- fs_user_token = use_filestore_auth (user )
110
+ fs_user_token , status = use_filestore_auth (user )
111
111
if not fs_user_token :
112
112
return False
113
113
payload = jwt .decode (fs_user_token , options = {"verify_signature" : False })
@@ -138,7 +138,53 @@ def set_filestore_scope(user: User):
138
138
print ("{0}: " .format (err ))
139
139
return False
140
140
141
- return True
141
+ fs_user_token , status = use_filestore_auth (user )
142
+ return fs_user_token
143
+
144
+
145
+ def set_filestore_pass (user : User ):
146
+ if not user .is_authenticated :
147
+ return False
148
+ if user .username == os .environ ["STORE_ADMIN_USERNAME" ]:
149
+ return False # root admin not allowed pass renew
150
+ verify , host = get_rest_host ()
151
+ # get auth for removing user
152
+ admin_login = get_admin_login ()
153
+ admin_token , status = get_filestore_token (admin_login , host , verify )
154
+ if not admin_token :
155
+ return False
156
+ # find user without valid pass, loop through all
157
+ edit_user = {}
158
+ try :
159
+ r_users = requests .get (f"https://{ host } /storemng/api/users" ,
160
+ headers = {"X-Auth" : admin_token }, verify = verify , timeout = FS_API_TIMEOUT )
161
+ r_users .raise_for_status ()
162
+ except (requests .exceptions .ConnectionError , requests .exceptions .HTTPError ) as err :
163
+ print ("{0}: " .format (err ))
164
+ return False
165
+ print (r_users .text )
166
+ for r_user in json .loads (r_users .text ):
167
+ if r_user ["username" ] == user .username :
168
+ edit_user = r_user
169
+ break
170
+ print (edit_user )
171
+ # return False
172
+ edit_user ["password" ] = user .password
173
+ fs_user = {
174
+ "what" : "user" ,
175
+ "which" : ["all" ],
176
+ "data" : edit_user ,
177
+ }
178
+ try :
179
+ r_useradd = requests .put (f"https://{ host } /storemng/api/users/{ edit_user ['id' ]} " ,
180
+ data = json .dumps (fs_user ), headers = {"X-Auth" : admin_token }, verify = verify , timeout = FS_API_TIMEOUT )
181
+ r_useradd .raise_for_status ()
182
+ except (requests .exceptions .ConnectionError , requests .exceptions .HTTPError ) as err :
183
+ print ("{0}: " .format (err ))
184
+ return None
185
+
186
+ fs_user_token , status = use_filestore_auth (user )
187
+ return fs_user_token
142
188
143
189
144
190
def delete_filestore_user (user : User ):
@@ -153,7 +199,7 @@ def delete_filestore_user(user: User):
153
199
if not admin_token :
154
200
return False
155
201
# find user
156
- fs_user_token = use_filestore_auth (user )
202
+ fs_user_token , status = use_filestore_auth (user )
157
203
if not fs_user_token :
158
204
return False
159
205
payload = jwt .decode (fs_user_token , options = {"verify_signature" : False })
0 commit comments