Bihan-Banerjee
initial commit
c109b62
raw
history blame
1.39 kB
from flask import Blueprint, request, jsonify
from flask_jwt_extended import create_access_token
import bcrypt
from pymongo import MongoClient
import os
from dotenv import load_dotenv
load_dotenv()
MONGO_URI = os.getenv("MONGO_URI")
auth_bp = Blueprint('auth', __name__)
client = MongoClient(MONGO_URI)
db = client["codewhisperer"]
users = db["users"]
@auth_bp.route("/register", methods=["POST"])
def register():
data = request.json
username = data["username"]
email = data["email"]
password = data["password"]
if users.find_one({"username": username}):
return jsonify({"error": "User already exists"}), 400
hashed_pw = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
users.insert_one({"username": username, "email": email, "password": hashed_pw})
token = create_access_token(identity=username)
return jsonify({"token": token}), 201
@auth_bp.route("/login", methods=["POST"])
def login():
data = request.json
username = data["username"]
password = data["password"]
user = users.find_one({"username": username})
if not user:
return jsonify({"error": "Invalid credentials"}), 401
if not bcrypt.checkpw(password.encode("utf-8"), user["password"]):
return jsonify({"error": "Invalid credentials"}), 401
token = create_access_token(identity=username)
return jsonify({"token": token})