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