forked from kompetenzinventar/ki-backend
auth.py: Make usage of exceptions instead of if-else-blocks
This commit is contained in:
parent
f20db25f74
commit
35cafe1780
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.')
|
||||
|
||||
try:
|
||||
auth_user = users[username]
|
||||
|
||||
if auth_user["password"] != password:
|
||||
raise UserWrongCredentialsException
|
||||
|
||||
except (UserWrongCredentialsException, KeyError):
|
||||
print('Wrong username/password combination')
|
||||
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