Compare commits

..

1 Commits

Author SHA1 Message Date
35cafe1780 auth.py: Make usage of exceptions instead of if-else-blocks
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-21 16:01:29 +02:00
9 changed files with 40 additions and 48 deletions

1
.gitignore vendored
View File

@ -1,2 +1 @@
/.env
*.pyc

View File

@ -14,7 +14,6 @@ pyyaml = "~=5.4.1"
[dev-packages]
flake8 = "~=3.9.2"
yapf = "~=0.31.0"
[requires]
python_version = "3.8"

View File

@ -21,6 +21,7 @@ rm data/ki.sqlite
cp env.dev .env
pipenv install --dev
pipenv shell
export FLASK_APP=app.py
flask db upgrade
flask seed
flask run
@ -42,13 +43,6 @@ python -m unittest discover ki
flake8
```
### Formatierung
Um ein einheitliches Quellcode-Erlebnis zu haben, kann der Code mit yapf neu formatiert werden:
```
yapf -i --recursive ki/
```
### Testbenutzer

10
app.py
View File

@ -1,4 +1,3 @@
import logging
import os
from dotenv import load_dotenv, find_dotenv
@ -8,14 +7,9 @@ from flask_migrate import Migrate
load_dotenv(find_dotenv())
loglevel = os.getenv("KI_LOGLEVEL", logging.WARNING)
loglevel = int(loglevel)
logging.basicConfig(level=loglevel)
logging.debug("Hello from KI")
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("SQLALCHEMY_DATABASE_URI")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv("SQLALCHEMY_DATABASE_URI")
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config["KI_DATA_DIR"] = os.path.dirname(__file__) + "/data"
app.config["KI_AUTH"] = os.getenv("KI_AUTH")
db = SQLAlchemy(app)

View File

@ -1,9 +1,3 @@
SQLALCHEMY_DATABASE_URI = 'sqlite:///data/ki.sqlite'
FLASK_APP=app.py
FLASK_ENV=development
KI_AUTH=file
# 10 = debug
KI_LOGLEVEL=10

View File

@ -5,28 +5,41 @@ 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:
users = yaml.safe_load(auth_file_stream)
if username not in users:
try:
users = yaml.safe_load(auth_file_stream)
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
auth_user = users[username]
else:
user = User.query.filter(User.auth_id.__eq__(username)).first()
if auth_user["password"] != password:
return None
token = Token(token=str(uuid.uuid4()), user=user)
user = User.query.filter(User.auth_id.__eq__(username)).first()
db.session.add(token)
db.session.commit()
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()
return token
return token

View File

@ -1 +1 @@
from ki import models, commands, routes # noqa
from ki import models, commands, routes # noqa

View File

@ -99,7 +99,7 @@ def login():
if token is None:
return make_response({}, 403)
return make_response({"token": token.token, "user_id": token.user_id})
return make_response({"token": token.token})
@app.route("/users/<user_id>/profile")

View File

@ -22,14 +22,13 @@ class TestSkillsEndpoint(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(
{
"skills": [{
"id": 1,
"name": "PHP"
}, {
"id": 3,
"name": "Python"
}]
}, response.json)
"skills": [
{"id": 1, "name": "PHP"},
{"id": 3, "name": "Python"}
]
},
response.json
)
if __name__ == "main":