def registry_user(): user_service = UserService(get_conn()) if request.method == 'PUT': email = request.json['email'] pwd = request.json['password'] # Update password based on the email status = user_service.update(email, {"pwd": pwd, "init_code": ""}) if not status and len(user_service.query({})) == 0: ts = datetime.datetime.now().timestamp() user_service.insert(email, email, pwd, str(ts), 0) return Response("{status: true }", status=201, mimetype='application/json') elif request.method == 'GET': users = user_service.query({}) return jsonify(users), 200 elif request.method == 'POST': email = request.json['email'] user_type = request.json['user_type'] name = request.json['name'] ts = datetime.datetime.now().timestamp() if len(user_service.query({'email': email})) > 0: user_service.update( email, { 'name': name, 'pwd': '', 'init_code': str(ts), 'user_type': user_type }) else: user_service.insert(email, name, "", str(ts), user_type) app.logger.info(f"Create user: user={email}&ts={ts}") return jsonify({'url': f'?user={email}&ts={ts}'})
def delete_user(user_name): if "email" in session and session['email'] != '': user_service = UserService(get_conn()) user = user_service.query({'email': session['email']}) if len(user) > 0: user_service.delete(user_name) return jsonify({"user": user_name}), 200 return jsonify({}), 404 user = user_service.query({'email': user_name}) if len(user) > 0 and ("email" not in session or session['email'] == ''): session["email"] = user_name return jsonify(user), 200
def login_user(user_name, password): user_service = UserService(get_conn()) user = user_service.query({'email': user_name, 'pwd': password}) if len(user) > 0 and ("email" not in session or session['email'] == ''): session["email"] = user_name return jsonify(user), 200
def test_queryUser(self): ini_service = InitialService() conn = ini_service.get_connection() user_service = UserService(conn) # In case the record doesn't exist. try: user_service.insert("*****@*****.**", "qi chang", "**(SDFDSF", None, 0) except Error: pass result = user_service.query({"email": "*****@*****.**"}) assert result[0]["email"] == "*****@*****.**" assert result[0]["name"] == "qi chang" assert "pwd" not in result[0] # assert result[0]["pwd"] == '**(SDFDSF' assert result[0]["init_code"] is None assert result[0]["user_type"] == 0 result = user_service.query({"email": "*****@*****.**"}) assert len(result) == 0
def index(): username = '' user_service = UserService(get_conn()) if 'email' in session: username = session['email'] if len(request.args) > 0: try: user = request.args.get('user', default='') ts = request.args.get('ts', default=0) if len(user_service.query({ 'email': user, 'init_code': ts })) > 0: now = datetime.datetime.now().timestamp() ts = float(ts) hours = (now - ts) / (60 * 60) if hours > REGISTER_MAX_HOURS: return redirect("/", code=302) elif len(user_service.query({})) == 0: # The first time register. # /[email protected] return render_template("index.html", data={ 'username': username, 'ini_admin': "false" }) else: return redirect("/", code=302) except Exception: return redirect("/", code=302) elif len(user_service.query({})) == 0: return redirect("/ini_admin", code=302) return render_template("index.html", data={ 'username': username, 'ini_admin': "false" })
def init(init_code=None): ini_service = InitialService() has_record = ini_service.has_records() if not has_record: return jsonify(["", "", 0]), 200 elif init_code is not None: user_service = UserService(get_conn()) user = user_service.query({"init_code": init_code}) if len(user) > 0: user = user[0] return jsonify( [user["name"], user["email"], user["user_type"]]), 200 return jsonify([]), 200
def index_newadmin(): user_service = UserService(get_conn()) if len(user_service.query({})) == 0: return render_template("index.html", data={'ini_admin': "true"}) else: return redirect("/", code=302)
def test_updateUser(self): ini_service = InitialService() conn = ini_service.get_connection() user_service = UserService(conn) try: user_service.insert("*****@*****.**", "qi chang", "**(SDFDSF", None, 0) user_result = user_service.query( {'email': '*****@*****.**'}) assert user_result[0]['name'] == 'qi chang' assert 'pwd' not in user_result assert user_result[0]['init_code'] is None assert user_result[0]['user_type'] == 0 user_result = user_service.query({ 'email': '*****@*****.**', 'pwd': '**(SDFDSF' }) assert user_result[0]['name'] == 'qi chang' assert 'pwd' not in user_result assert user_result[0]['init_code'] is None assert user_result[0]['user_type'] == 0 user_result = user_service.query({ 'email': '*****@*****.**', 'pwd': 'WrongPwd' }) assert len(user_result) == 0 except Error: pass result = user_service.update("*****@*****.**", { "name": "MK", "pwd": "pwdpwd", "init_code": "*&**I", "user_type": 1 }) assert result is True user_result = user_service.query({'email': '*****@*****.**'}) assert user_result[0]['name'] == 'MK' assert 'pwd' not in user_result assert user_result[0]['init_code'] == '*&**I' assert user_result[0]['user_type'] == 1 user_result = user_service.query({ 'email': '*****@*****.**', 'pwd': 'pwdpwd' }) assert user_result[0]['name'] == 'MK' assert 'pwd' not in user_result assert user_result[0]['init_code'] == '*&**I' assert user_result[0]['user_type'] == 1 user_result = user_service.query({ 'email': '*****@*****.**', 'pwd': '**(SDFDSF' }) assert len(user_result) == 0 # not existing email will return False result = user_service.update("*****@*****.**", { "name": "MK", "pwd": "***", "init_code": "*&**I", "user_type": 1 }) assert result is False # unqualified key will ignored. result = user_service.update( "*****@*****.**", { "email": "*****@*****.**", "name": "MK", "pwd": "***", "init_code": "*&**I", "user_type": 1 }) assert result is True result = user_service.query({"email": "*****@*****.**"}) assert len(result) == 1