flask-home-vod/server/flask/application/backend/flask_project.py
Gergely Hegedus 1f06c40c4c Add Media-Token beside access token
Media-Token can be used only to access the content, but unable to modify user data
2023-03-27 19:13:13 +03:00

151 lines
No EOL
5.8 KiB
Python

from os import path
from flask import Flask
import json
from .data import db as db
from .data.data_models import User
from .require_decorators import require_username_and_password
from .require_decorators import require_user_exists_by_username_and_password
from .require_decorators import requires_session
from .require_decorators import require_otp_verification_after_session
from .require_decorators import require_user_priviliged_after_session
from . import auth_requests as auth_requests_handler
from . import admin_requests as admin_requests_handler
from . import user_action_requests as user_action_requests_handler
from . import media_access_requests as media_access_requests_handler
# for chrome to accept the certificate run in console `endCommand(SecurityInterstitialCommandId.CMD_PROCEED)`
# to restart = `uwsgi --ini home-vod-server.ini` like in Dockerimage
def create_app(test_config=None):
app = Flask(__name__)
if (test_config == None):
app.config.from_file('config.json', silent=True, load=json.load)
else:
app.config.from_mapping(test_config)
db.init_app(app)
# region auth requests
@app.route("/register", methods=['POST'])
@require_username_and_password
def register(username, password):
return auth_requests_handler.handle_register(username = username, password = password)
@app.route("/otp_verification", methods=['POST'])
@require_username_and_password
@require_user_exists_by_username_and_password
def otp_verification(user: User):
return auth_requests_handler.handle_otp_verification(user = user)
@app.route("/login", methods=['POST'])
@require_username_and_password
@require_user_exists_by_username_and_password
def login(user: User):
return auth_requests_handler.handle_login(user = user)
@app.route("/logout", methods=['POST'])
def logout():
return auth_requests_handler.handle_logout()
@app.route("/refresh/token", methods=['POST'])
def refresh_token():
return auth_requests_handler.handle_refresh_token()
# endregion
# region user_actions
@app.route("/user/is_privileged", methods=['GET'])
@requires_session
def get_is_user_priviliged(user: User):
return user_action_requests_handler.handle_get_is_user_priviliged(user = user)
@app.route("/change/password", methods=['POST'])
@requires_session
@require_otp_verification_after_session
def change_password(user: User):
return user_action_requests_handler.handle_change_password(user = user)
@app.route("/reset/password", methods=['POST'])
@require_username_and_password
def reset_password(username, password):
return user_action_requests_handler.handle_reset_password(username = username, password = password)
@app.route("/user/file/metadata", methods=['POST'])
@requires_session
def add_user_file_data(user: User):
return user_action_requests_handler.handle_add_user_file_data(user = user)
@app.route("/user/file/metadata", methods=['GET'])
@requires_session
def get_user_file_data(user: User):
return user_action_requests_handler.handle_get_user_file_data(user = user)
@app.route("/file/metadata", methods=['POST'])
@requires_session
def add_file_metadata(user: User):
return user_action_requests_handler.handle_add_file_metadata(user = user)
@app.route("/file/metadata", methods=['GET'])
@requires_session
def get_file_metadata(user: User):
return user_action_requests_handler.handle_get_file_metadata(user = user)
# endregion
# region admin requests
@app.route("/admin/registration_token", methods=['POST'])
@requires_session
@require_otp_verification_after_session
@require_user_priviliged_after_session
def create_registration_token(user: User):
return admin_requests_handler.handle_create_registration_token(user = user)
@app.route("/admin/reset_password_token", methods=['POST'])
@requires_session
@require_otp_verification_after_session
@require_user_priviliged_after_session
def create_reset_password_token(user: User):
return admin_requests_handler.handle_create_reset_password_token(user = user)
@app.route("/admin/reset_otp_verification", methods=['POST'])
@requires_session
@require_otp_verification_after_session
@require_user_priviliged_after_session
def reset_user_otp_verification(user: User):
return admin_requests_handler.handle_reset_user_otp_verification(user = user)
@app.route("/admin/get_users", methods=['GET'])
@requires_session
@require_user_priviliged_after_session
def get_users(user: User):
return admin_requests_handler.handle_get_users(user = user)
@app.route("/admin/get_registration_tokens", methods=['GET'])
@requires_session
@require_user_priviliged_after_session
def get_registration_tokens(user: User):
return admin_requests_handler.handle_get_registration_tokens(user = user)
@app.route("/admin/delete/user", methods=['POST'])
@requires_session
@require_otp_verification_after_session
@require_user_priviliged_after_session
def delete_user_by_name(user: User):
return admin_requests_handler.handle_delete_user_by_name(user = user)
@app.route("/admin/delete/registration_token", methods=['POST'])
@requires_session
@require_otp_verification_after_session
@require_user_priviliged_after_session
def delete_registration_token(user: User):
return admin_requests_handler.handle_delete_registration_token(user = user)
# endregion
# region media access
@app.route("/has_media_access", methods=['GET'])
def has_media_access():
return media_access_requests_handler.handle_has_media_access()
# endregion
return app
if __name__ == "__main__":
app = create_app()
app.run(host='0.0.0.0')