user creation

This commit is contained in:
iamBadgers
2026-04-29 22:49:58 -07:00
parent dc17553db8
commit 79f8dacd52
4 changed files with 38 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ charset-normalizer==3.4.6
click==8.3.1 click==8.3.1
docker @ git+https://github.com/docker/docker-py@df3f8e2abc5a03de482e37214dddef9e0cee1bb1 docker @ git+https://github.com/docker/docker-py@df3f8e2abc5a03de482e37214dddef9e0cee1bb1
Flask==3.1.3 Flask==3.1.3
Flask-Login==0.6.3
Flask-SQLAlchemy==3.1.1 Flask-SQLAlchemy==3.1.1
greenlet==3.4.0 greenlet==3.4.0
idna==3.11 idna==3.11

View File

@@ -1,33 +1,52 @@
from flask import Blueprint from flask import Blueprint, request, jsonify
from user_model import User from user_model import User
from main import db from main import db
from flask_login import login_user, logout_user
from random import randint
auth = Blueprint("auth_api", __name__) auth = Blueprint("auth_api", __name__)
@auth.route("/login") @auth.route("/login", methods=["POST"])
def login(self): def login():
return username = request.get_json()["username"]
password = request.get_json()["password"]
user = User.query.filter_by(user_name=username).first()
if user and user.test_password(password):
login_user(user)
return None, 200
return None, 403
@auth.route("/logout") @auth.route("/logout")
def logout(self): def logout():
return return
@auth.route("/user") @auth.route("/user")
def get_current_user(self): def get_current_user():
return return
@auth.route("/user", methods=["POST"]) @auth.route("/user", methods=["POST"])
def create_user(self): def create_user():
return username = request.get_json()["username"]
password = request.get_json()["password"]
user = User(id=randint(0, 999999), user_name=username)
user.set_password(password)
db.session.add(user)
db.session.commit()
return jsonify(user.to_dict())
@auth.route("/user/<user_id>", methods=["POST"]) @auth.route("/user/<user_id>", methods=["POST"])
def update_user(self): def update_user():
return return
@auth.route("/user/<user_id>", methods=["DELETE"]) @auth.route("/user/<user_id>", methods=["DELETE"])
def delete_user(self): def delete_user():
return return
@auth.route("/user/<user_id>") @auth.route("/user/<user_id>")
def get_user(self): def get_user():
return return

View File

@@ -20,8 +20,10 @@ def create_app():
db.close() db.close()
import tables import tables
import auth
app.register_blueprint(tables.tables, url_prefix="/api") app.register_blueprint(tables.tables, url_prefix="/api")
app.register_blueprint(auth.auth, url_prefix="/api/auth")
with app.app_context(): with app.app_context():
init_db(get_db()) init_db(get_db())

View File

@@ -1,6 +1,7 @@
from sqlalchemy import Column, ForeignKey, Integer, Table from sqlalchemy import Column, ForeignKey, Integer, Table
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from main import db from main import db
from werkzeug.security import generate_password_hash, check_password_hash
def create_new_session(user: User) -> Session: def create_new_session(user: User) -> Session:
return return
@@ -9,16 +10,16 @@ class User(db.Model):
__tablename__ = "users" __tablename__ = "users"
user_id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
password_hash = db.Column(db.Text) password_hash = db.Column(db.Text)
user_name = db.Column(db.Text, unique=True) user_name = db.Column(db.Text, unique=True)
sessions = relationship("Session", back_populates="user") sessions = relationship("Session", back_populates="user")
def set_password(self, newPassword: str): def set_password(self, newPassword: str):
self.password_hash = "testing" self.password_hash = generate_password_hash(newPassword)
def test_password(self, password: str) -> bool: def test_password(self, password: str) -> bool:
return True return self.check_password_hash(password)
def to_dict(self): def to_dict(self):
return {"username": self.user_name} return {"username": self.user_name}
@@ -28,7 +29,7 @@ class Session(db.Model):
__tableanme__ = "sessions" __tableanme__ = "sessions"
session_id = db.Column(db.Text, primary_key=True) session_id = db.Column(db.Text, primary_key=True)
parent_id = db.Column(db.Integer, ForeignKey("users.user_id")) parent_id = db.Column(db.Integer, ForeignKey("users.id"))
issue_timestamp = db.Column(db.Integer) issue_timestamp = db.Column(db.Integer)
user = relationship("User", back_populates="sessions") user = relationship("User", back_populates="sessions")