Skip to content

Commit 08110e7

Browse files
committed
fix(filestore): ensure user does not exist before renewing login
1 parent e681868 commit 08110e7

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

users/filestore.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ def set_filestore_pass(user: User):
226226
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
227227
print(err)
228228
return False
229-
print(r_users.text)
230229
for r_user in json.loads(r_users.text):
231230
if r_user["username"] == user.username:
232231
edit_user = r_user
@@ -251,6 +250,25 @@ def set_filestore_pass(user: User):
251250
return fs_user_token
252251

253252

253+
def is_filestore_user(user: User):
254+
verify, host = get_rest_host()
255+
admin_login = get_admin_login()
256+
admin_token, status = get_filestore_token(admin_login, host, verify)
257+
# find user, loop through all
258+
try:
259+
r_users = requests.get(f"https://{host}/storemng/api/users",
260+
headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
261+
r_users.raise_for_status()
262+
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
263+
print(err)
264+
return False
265+
for r_user in json.loads(r_users.text):
266+
if r_user["username"] == user.username:
267+
return True
268+
269+
return False
270+
271+
254272
def delete_filestore_user(user: User):
255273
""" Uses the filebrowser api to delete the user.username's filebrowser account and files.
256274

users/views.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
from rest_framework.schemas import AutoSchema
2626

2727
from .filestore import (add_filestore_auth, delete_filestore_user,
28-
set_filestore_pass, set_filestore_scope,
29-
use_filestore_auth)
28+
is_filestore_user, set_filestore_pass,
29+
set_filestore_scope, use_filestore_auth)
3030
from .forms import (DeviceForm, SceneForm, SocialSignupForm, UpdateDeviceForm,
3131
UpdateSceneForm, UpdateStaffForm)
3232
from .models import Device, Scene
@@ -614,10 +614,11 @@ def storelogin(request):
614614
fs_user_token = None
615615
if user.is_authenticated:
616616
# try user auth
617-
fs_user_token, status = use_filestore_auth(user)
618-
if status == 403: # if django allauth pass updated by oauth, update pass
619-
fs_user_token = set_filestore_pass(user)
620-
if not fs_user_token:
617+
if is_filestore_user(user):
618+
fs_user_token, status = use_filestore_auth(user)
619+
if status == 403: # if django allauth pass updated by oauth, update pass
620+
fs_user_token = set_filestore_pass(user)
621+
elif not fs_user_token:
621622
# otherwise user needs to be added
622623
fs_user_token = add_filestore_auth(user)
623624

0 commit comments

Comments
 (0)