From d198e7d695d7a60106f24db552f47e3e8bbeea70 Mon Sep 17 00:00:00 2001 From: Dichi13 <diciganteng01@icloud.com> Date: Sun, 28 Apr 2019 14:57:34 +0700 Subject: [PATCH] merge login and register into one -> user.py --- app.py | 6 +-- modules/register.py | 64 -------------------------------- modules/{login.py => user.py} | 69 ++++++++++++++++++++++++++++++++--- 3 files changed, 65 insertions(+), 74 deletions(-) delete mode 100644 modules/register.py rename modules/{login.py => user.py} (50%) diff --git a/app.py b/app.py index bc2cb9d..b5956ef 100644 --- a/app.py +++ b/app.py @@ -2,9 +2,8 @@ from flask import Flask, render_template from flask import request, jsonify from flask_cors import CORS 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.register import register_route from modules.admin import admin_route from modules.page import page_route from modules.apbd import apbd_route @@ -15,8 +14,7 @@ app = Flask(__name__) app.config.from_pyfile("config.cfg") mongo.init_app(app) -app.register_blueprint(login_route) -app.register_blueprint(register_route) +app.register_blueprint(user_route) app.register_blueprint(comment_route) app.register_blueprint(admin_route) app.register_blueprint(page_route) diff --git a/modules/register.py b/modules/register.py deleted file mode 100644 index ee75422..0000000 --- a/modules/register.py +++ /dev/null @@ -1,64 +0,0 @@ -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 diff --git a/modules/login.py b/modules/user.py similarity index 50% rename from modules/login.py rename to modules/user.py index 710e3b5..1c64761 100644 --- a/modules/login.py +++ b/modules/user.py @@ -5,11 +5,12 @@ 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 check_password_hash -login_route = Blueprint('login', __name__, template_folder="templates") +from werkzeug.security import generate_password_hash, check_password_hash +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(): form = request.get_json() username = form.get("username") @@ -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(): form = request.get_json() username = form.get("username") @@ -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) def get_user_from_token(user): del user.password @@ -72,7 +73,7 @@ def get_user_from_token(user): "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(): req = request.get_json() user_id = req.get("user_id") @@ -84,3 +85,59 @@ def get_user_from_id(): "status":200, "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 -- GitLab