Spaces:
Sleeping
Sleeping
| 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"] | |
| 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 | |
| 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}) | |