Skip to content
Snippets Groups Projects
Commit d198e7d6 authored by Dichi13's avatar Dichi13
Browse files

merge login and register into one -> user.py

parent f9f9bb3f
Branches
1 merge request!5Develop
Pipeline #14457 canceled with stage
...@@ -2,9 +2,8 @@ from flask import Flask, render_template ...@@ -2,9 +2,8 @@ from flask import Flask, render_template
from flask import request, jsonify from flask import request, jsonify
from flask_cors import CORS from flask_cors import CORS
from database.database import mongo from database.database import mongo
from modules.login import login_route from modules.user import user_route
from modules.comment import comment_route from modules.comment import comment_route
from modules.register import register_route
from modules.admin import admin_route from modules.admin import admin_route
from modules.page import page_route from modules.page import page_route
from modules.apbd import apbd_route from modules.apbd import apbd_route
...@@ -15,8 +14,7 @@ app = Flask(__name__) ...@@ -15,8 +14,7 @@ app = Flask(__name__)
app.config.from_pyfile("config.cfg") app.config.from_pyfile("config.cfg")
mongo.init_app(app) mongo.init_app(app)
app.register_blueprint(login_route) app.register_blueprint(user_route)
app.register_blueprint(register_route)
app.register_blueprint(comment_route) app.register_blueprint(comment_route)
app.register_blueprint(admin_route) app.register_blueprint(admin_route)
app.register_blueprint(page_route) app.register_blueprint(page_route)
......
from flask import Blueprint, jsonify, request, current_app
from database import database as db
from modules.tools.token import Token, validate_login_token
from modules.tools.roles import Roles
from werkzeug.security import generate_password_hash, check_password_hash
register_route = Blueprint('register', __name__, template_folder="templates")
@register_route.route("/api/register", methods=["POST"])
def add_new_user():
form = request.get_json()
user_id = form.get("user_id")
password = form.get("password")
#hashing paswword
hash_pass = generate_password_hash(password);
username = form.get("username")
name = form.get("name")
role = form.get("role")
#TO DO: Check the database or add constraints
try:
new_user = db.User(user_id=user_id, password=hash_pass, username=username, name=name, role=role)
key = current_app.config.get("SECRET_KEY")
token = Token.generate_from(user_id, key)
new_user.save()
return jsonify({
"status": 200,
"data": {
"token": token.decode('utf-8')
}
})
except Exception as e:
return jsonify({
"status": 500,
"message": str(e)
})
@register_route.route('/api/unregister', methods=["POST"])
@validate_login_token(pass_user=True)
def delete_user(user):
try:
user_id = request.get_json().get("user_id")
if user_id is not None:
del_user = db.User.objects.with_id(user_id)
if del_user != user and user.role < Roles.ADMIN:
return jsonify({
"status":401,
"message":"unauthorized delete"
})
else:
del_user = user
del_user.delete()
return jsonify({
"status": 200,
"message": "User deleted successfully"
})
except Exception as e:
return jsonify({
"status": 500,
"message": str(e)
})
\ No newline at end of file
...@@ -5,11 +5,12 @@ from flask import Blueprint, jsonify, request, current_app ...@@ -5,11 +5,12 @@ from flask import Blueprint, jsonify, request, current_app
from database import database as db from database import database as db
from modules.tools.token import Token, validate_login_token from modules.tools.token import Token, validate_login_token
from modules.tools.roles import Roles from modules.tools.roles import Roles
from werkzeug.security import check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
login_route = Blueprint('login', __name__, template_folder="templates")
user_route = Blueprint('login', __name__, template_folder="templates")
@login_route.route("/api/login", methods=["POST"])
@user_route.route("/api/login", methods=["POST"])
def login_user(): def login_user():
form = request.get_json() form = request.get_json()
username = form.get("username") username = form.get("username")
...@@ -37,7 +38,7 @@ def login_user(): ...@@ -37,7 +38,7 @@ def login_user():
}) })
@login_route.route("/api/check-user", methods=["POST"]) @user_route.route("/api/check-user", methods=["POST"])
def check_user_existence(): def check_user_existence():
form = request.get_json() form = request.get_json()
username = form.get("username") username = form.get("username")
...@@ -58,7 +59,7 @@ def check_user_existence(): ...@@ -58,7 +59,7 @@ def check_user_existence():
}) })
@login_route.route("/api/get-user", methods=["POST"]) @user_route.route("/api/get-user", methods=["POST"])
@validate_login_token(pass_user=True) @validate_login_token(pass_user=True)
def get_user_from_token(user): def get_user_from_token(user):
del user.password del user.password
...@@ -72,7 +73,7 @@ def get_user_from_token(user): ...@@ -72,7 +73,7 @@ def get_user_from_token(user):
"page_list": child "page_list": child
}) })
@login_route.route("/api/get-user-public", methods=["POST"]) @user_route.route("/api/get-user-public", methods=["POST"])
def get_user_from_id(): def get_user_from_id():
req = request.get_json() req = request.get_json()
user_id = req.get("user_id") user_id = req.get("user_id")
...@@ -84,3 +85,59 @@ def get_user_from_id(): ...@@ -84,3 +85,59 @@ def get_user_from_id():
"status":200, "status":200,
"data": user "data": user
}) })
@user_route.route("/api/register", methods=["POST"])
def add_new_user():
form = request.get_json()
user_id = form.get("user_id")
password = form.get("password")
#hashing paswword
hash_pass = generate_password_hash(password);
username = form.get("username")
name = form.get("name")
role = form.get("role")
#TO DO: Check the database or add constraints
try:
new_user = db.User(user_id=user_id, password=hash_pass, username=username, name=name, role=role)
key = current_app.config.get("SECRET_KEY")
token = Token.generate_from(user_id, key)
new_user.save()
return jsonify({
"status": 200,
"data": {
"token": token.decode('utf-8')
}
})
except Exception as e:
return jsonify({
"status": 500,
"message": str(e)
})
@user_route.route('/api/unregister', methods=["POST"])
@validate_login_token(pass_user=True)
def delete_user(user):
try:
user_id = request.get_json().get("user_id")
if user_id is not None:
del_user = db.User.objects.with_id(user_id)
if del_user != user and user.role < Roles.ADMIN:
return jsonify({
"status":401,
"message":"unauthorized delete"
})
else:
del_user = user
del_user.delete()
return jsonify({
"status": 200,
"message": "User deleted successfully"
})
except Exception as e:
return jsonify({
"status": 500,
"message": str(e)
})
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment