32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
from flask_restx import Namespace, Resource, fields
|
||
|
from flask import request
|
||
|
from flask_jwt_extended import create_access_token
|
||
|
from app.db.models import UserModel
|
||
|
from app.docs.auth_models import auth_ns, signup_model
|
||
|
|
||
|
@auth_ns.route('/signup')
|
||
|
class SignUp(Resource):
|
||
|
@auth_ns.expect(signup_model)
|
||
|
def post(self):
|
||
|
data = request.get_json()
|
||
|
user_model = UserModel()
|
||
|
if user_model.find_by_email(data['email']):
|
||
|
return {'message': 'User already exists'}, 400
|
||
|
user_model.create_user(data['email'], data['password'])
|
||
|
return {'message': 'success'}, 201
|
||
|
|
||
|
|
||
|
@auth_ns.route('/login')
|
||
|
class Login(Resource):
|
||
|
@auth_ns.expect(signup_model)
|
||
|
def post(self):
|
||
|
data = request.get_json()
|
||
|
user_model = UserModel()
|
||
|
user = user_model.find_by_email(data['email'])
|
||
|
|
||
|
if not user or not user_model.verify_password(user['password'], data['password']):
|
||
|
return {'message': 'Invalid credentials'}, 401
|
||
|
|
||
|
access_token = create_access_token(identity=user['email'])
|
||
|
return {'access_token': access_token}, 200
|