Update + Signup works!

This commit is contained in:
Parker M. 2024-11-05 21:23:19 -06:00
parent e944df3d7d
commit ddb984d0cd
Signed by: parker
GPG Key ID: 505ED36FC12B5D5E
5 changed files with 12 additions and 66 deletions

View File

@ -49,56 +49,6 @@ async def signup(request: Request):
return templates.TemplateResponse("signup.html", {"request": request}) return templates.TemplateResponse("signup.html", {"request": request})
# TODO: Create users routes
# User - register/create
# User - delete
# User - update
# @app.route("/signup", methods=["GET", "POST"])
# def signup():
# if request.method == "POST":
# username = request.form["username"]
# password = request.form["password"]
# # Verify the password meets requirements
# if len(password) < 8:
# return {"status": "Password must be at least 8 characters"}
# if not any(char.isdigit() for char in password):
# return {"status": "Password must contain at least one digit"}
# if not any(char.isupper() for char in password):
# return {
# "status": "Password must contain at least one uppercase letter"
# }
# # Get database session
# db = SessionLocal()
# user = db.query(User).filter(User.username == username).first()
# if user:
# db.close()
# return {"status": "Username not available"}
# # Add information to the database
# hashed_password = bcrypt.hashpw(
# password.encode("utf-8"), bcrypt.gensalt()
# ).decode("utf-8")
# api_key = "".join(
# random.choices(string.ascii_letters + string.digits, k=20)
# )
# new_user = User(
# username=username, password=hashed_password, api_key=api_key
# )
# db.add(new_user)
# db.commit()
# db.close()
# # Log in the newly created user
# flask_user = FlaskUser()
# flask_user.id = username
# login_user(flask_user)
# return {"status": "success"}
# return render_template("signup.html")
@app.get("/dashboard") @app.get("/dashboard")
async def dashboard( async def dashboard(
response: Annotated[ response: Annotated[

View File

@ -1,5 +1,6 @@
from fastapi import APIRouter, status, Path, Depends from fastapi import APIRouter, status, Path, Depends
from fastapi.exception_handlers import HTTPException from fastapi.exception_handlers import HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from typing import Annotated from typing import Annotated
import string import string
import bcrypt import bcrypt
@ -92,15 +93,15 @@ async def update_pass(
@router.post("/register", summary="Register a new user") @router.post("/register", summary="Register a new user")
async def get_links( async def get_links(
login_data: LoginDataSchema, form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
db=Depends(get_db), db=Depends(get_db),
): ):
""" """
Given the login data (username, password) process the registration of a new Given the login data (username, password) process the registration of a new
user account and return either the user or an error message user account and return either the user or an error message
""" """
username = login_data.username username = form_data.username
password = login_data.password password = form_data.password
# Make sure the password meets all of the requirements # Make sure the password meets all of the requirements
check_password_reqs(password) check_password_reqs(password)

View File

@ -96,8 +96,6 @@
body: formData body: formData
}); });
console.log(await response.json());
if (response.status != 200) { if (response.status != 200) {
document.getElementById('error').style.display = 'block'; document.getElementById('error').style.display = 'block';
} else { } else {

View File

@ -91,24 +91,21 @@
// Prevent default form submission // Prevent default form submission
event.preventDefault(); event.preventDefault();
// Get form data
const formData = new FormData(this); const formData = new FormData(this);
console.log(formData)
// Send POST request to /signup containing form data // Send POST request to /signup containing form data
const response = await fetch('/signup', { const response = await fetch('/api/users/register', {
method: 'POST', method: 'POST',
body: formData body: formData
}); });
data = await response.json() if (response.status != 200) {
const data = await response.json();
if (data.status != "success") {
document.getElementById('error').style.display = 'block'; document.getElementById('error').style.display = 'block';
document.getElementById('error').innerText = data.status; document.getElementById('error').innerText = data.detail;
} else { }
window.location.href = '/dashboard'; else {
window.location.href = '/login';
} }
}); });
</script> </script>

View File

@ -86,7 +86,7 @@ async def get_current_user_from_token(
return await get_current_user(token, db=db) return await get_current_user(token, db=db)
# Backwards kinda of way to get refresh token support # Backwards kind of way to get refresh token support
# `refresh_get_current_user` is only called from /refresh # `refresh_get_current_user` is only called from /refresh
# and alerts `get_current_user` that it should expect a refresh token # and alerts `get_current_user` that it should expect a refresh token
async def refresh_get_current_user( async def refresh_get_current_user(