auth.py: Make usage of exceptions instead of if-else-blocks #5
25
ki/auth.py
25
ki/auth.py
@ -5,27 +5,40 @@ from app import app, db
|
||||
from ki.models import User, Token
|
||||
|
||||
|
||||
class UserWrongCredentialsException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class UserAllreadyLoggedInException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def auth(username, password):
|
||||
auth_file_path = app.config["KI_DATA_DIR"] + "/auth.yml"
|
||||
|
||||
with open(auth_file_path, "r") as auth_file_stream:
|
||||
|
||||
try:
|
||||
users = yaml.safe_load(auth_file_stream)
|
||||
|
||||
if username not in users:
|
||||
return None
|
||||
except yaml.YAMLError:
|
||||
print('Could not parse auth.yml.')
|
||||
weeman marked this conversation as resolved
|
||||
|
||||
try:
|
||||
auth_user = users[username]
|
||||
weeman marked this conversation as resolved
weeman
commented
Die Prüfung, ob der Benutzer existiert ist verschwunden oder übersehe ich was? Die Prüfung, ob der Benutzer existiert ist verschwunden oder übersehe ich was?
frlan
commented
Ja, das ist richtig. Das wirft einen KeyError. Ja, das ist richtig. Das wirft einen KeyError.
|
||||
|
||||
if auth_user["password"] != password:
|
||||
raise UserWrongCredentialsException
|
||||
|
||||
except (UserWrongCredentialsException, KeyError):
|
||||
print('Wrong username/password combination')
|
||||
weeman
commented
Ich bau die Tage mal Was passiert bei der API mit Ich bau die Tage mal `logging` ein.
Was passiert bei der API mit `print`? Sehe ich das dann in der Antwort? Weil es sollte irgend ein geregeltes JSON zurückkommen.
weeman
commented
Siehe #7 für Ausgaben. Siehe #7 für Ausgaben.
|
||||
return None
|
||||
|
||||
else:
|
||||
user = User.query.filter(User.auth_id.__eq__(username)).first()
|
||||
|
||||
if user is None:
|
||||
user = User(auth_id=username)
|
||||
db.session.add(user)
|
||||
|
||||
token = Token(token=str(uuid.uuid4()), user=user)
|
||||
|
||||
db.session.add(token)
|
||||
db.session.commit()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
Hier würde ich dann eine 500er Antwort zurückgeben.
Ich habe das jetzt mal versucht -- aber das ist nicht so richtig schön zu machen, wenn man nicht den kompletten Code in die routes.py verlegen will oder Datenstrutkturen von links nach rechts kopieren mag. Ich würde das mal rauslassen bis LDAP eingebaut wird. Für dev sollte das vollkommen ok sein.
Ich hab da ne Idee. Mach ich später