user creation
This commit is contained in:
@@ -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
|
||||||
|
|||||||
41
src/auth.py
41
src/auth.py
@@ -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
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user