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