added server side password verification to everything that needs it

This commit is contained in:
Kristy Fournier 2025-07-18 19:21:21 -04:00
parent d110657d8f
commit f41255e456

View file

@ -16,11 +16,11 @@ if not(ADMIN_PASS):
ADMIN_PASS = None ADMIN_PASS = None
# True = everyone, False = admin only. Change in client while in use. # True = everyone, False = admin only. Change in client while in use.
controlPerms = { controlPerms = {
"PP":True, "PP":True, #done
"SK":True, "SK":True, #done
"AS":True, "AS":True, #done
"PM":True, "PM":True, #done
"VOL":True "VOL":True #done
} }
fileofDB = sql.connect("songDatabase.db") fileofDB = sql.connect("songDatabase.db")
@ -111,34 +111,48 @@ def playerControls():
recieveData=request.get_json(force=True) recieveData=request.get_json(force=True)
if recieveData["control"] != None: if recieveData["control"] != None:
if recieveData["control"] == "play-pause": if recieveData["control"] == "play-pause":
player.pause() if ADMIN_PASS == recieveData['password'] or not(ADMIN_PASS) or controlPerms["PP"]:
return "200" player.pause()
return "200"
else:
return "401"
elif recieveData["control"] == "skip": elif recieveData["control"] == "skip":
skipNow = True if ADMIN_PASS == recieveData['password'] or not(ADMIN_PASS) or controlPerms["SK"]:
# print(str(player.get_state())) skipNow = True
return "200" return "200"
else:
return "401"
else: else:
return "400" return "400"
@app.route("/settings", methods=['POST']) @app.route("/settings", methods=['POST'])
def settingsControl(): def settingsControl():
global controlPerms
# set the volume and partymode # set the volume and partymode
global partyMode global partyMode
global player global player
recieveData = request.get_json(force=True) recieveData = request.get_json(force=True)
if recieveData["setting"] == "volume": if recieveData["setting"] == "volume":
volumePassed = player.audio_set_volume(int(recieveData["level"])) if ADMIN_PASS == recieveData['password'] or not(ADMIN_PASS) or controlPerms["VOL"]:
return {"volumePassed":volumePassed} volumePassed = player.audio_set_volume(int(recieveData["level"]))
return {"volumePassed":volumePassed}
else:
return "401"
elif recieveData["setting"] == "partymode-toggle": elif recieveData["setting"] == "partymode-toggle":
partyMode = not(partyMode) if ADMIN_PASS == recieveData['password'] or not(ADMIN_PASS) or controlPerms["PM"]:
return "200" partyMode = not(partyMode)
return "200"
else:
return "401"
elif recieveData["setting"] == "perms": elif recieveData["setting"] == "perms":
print(ADMIN_PASS)
print(recieveData["password"])
if ADMIN_PASS == recieveData["password"] and ADMIN_PASS: if ADMIN_PASS == recieveData["password"] and ADMIN_PASS:
#if an adminpass doesn't exist these perms can never be changed
controlPerms = recieveData["admin"] controlPerms = recieveData["admin"]
return "200" return "200"
else: else:
return "401" return "401"
elif recieveData["setting"] == "getsettings": elif recieveData["setting"] == "getsettings":
# probably should have made this a different request type or something but it works # probably should have made this a different request type or something but it works
x = {"partymode":partyMode,"volume":player.audio_get_volume(),"admin":controlPerms} x = {"partymode":partyMode,"volume":player.audio_get_volume(),"admin":controlPerms}