This commit is contained in:
grimhilt 2023-08-05 13:30:34 +02:00
parent 1b776ae758
commit 92e2b6c92a

47
src/api/abl/auth.py Normal file
View File

@ -0,0 +1,47 @@
from flask import Blueprint, request, jsonify, make_response
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import login_user, login_required, current_user, logout_user
from ..models import User
from .. import db
auth = Blueprint('auth', __name__)
@auth.route('/login', methods=['POST'])
def login():
data = request.get_json()
login = data['login']
password = data['password']
user = db.session.query(User).filter_by(login=login).first()
if not user or not check_password_hash(user.password, password):
return jsonify(message="Incorrect credentials"), 401
login_user(user)
return jsonify(success=True)
@auth.route('/signup', methods=['POST'])
def signup():
data = request.get_json()
login = data['login']
password = data['password']
user = db.session.query(User).filter_by(login=login).first()
if user:
return jsonify(user.as_dict_safe()), 302
new_user = User(login=login, password=generate_password_hash(password, method='sha256'))
db.session.add(new_user)
db.session.flush()
db.session.commit()
return jsonify(new_user.as_dict_safe())
@auth.route('/logout', methods=['POST'])
@login_required
def logout():
logout_user()
return jsonify(success=True)
@auth.route('/profile')
@login_required
def profile():
return jsonify(current_user.as_dict_safe())