Spaces:
Sleeping
Sleeping
File size: 1,391 Bytes
c109b62 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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})
|