diff --git a/app/__init__.py b/app/__init__.py index e14672a..5ba9792 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -204,19 +204,23 @@ def register_settings(app): # Load environment specific settings app.config['TESTING'] = False app.config['DEBUG'] = False + app.config['SQLALCHEMY_ENGINE_OPTIONS'] = { + "pool_pre_ping": True, + "pool_size": 10, + "max_overflow": 2, + "pool_recycle": 300, + "pool_pre_ping": True, + "pool_use_lifo": True + } - # always pull these two from the env app.config['SECRET_KEY'] = os.getenv( 'APP_SECRET_KEY', app.config['APP_SECRET_KEY'] - ) app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv( 'APP_DATABASE_URI', app.config['APP_DATABASE_URI'] ) - - # try to get overides, otherwise just use what we have already app.config['USER_ENABLE_REGISTER'] = os.getenv( 'USER_ENABLE_REGISTER', app.config['USER_ENABLE_REGISTER'] @@ -241,14 +245,6 @@ def register_settings(app): 'USER_REQUIRE_INVITATION', app.config['USER_REQUIRE_INVITATION'] ) - app.config['SQLALCHEMY_ENGINE_OPTIONS'] = { - "pool_pre_ping": True, - "pool_size": 10, - "max_overflow": 2, - "pool_recycle": 300, - "pool_pre_ping": True, - "pool_use_lifo": True - } app.config['MAIL_SERVER'] = os.getenv( 'MAIL_SERVER', app.config['MAIL_SERVER'] @@ -312,6 +308,41 @@ def register_settings(app): app.config['CACHE_LOCATION'] ) + # Recaptcha settings + if "RECAPTCHA_ENABLE" not in app.config: + app.config['RECAPTCHA_ENABLE'] = False + app.config['RECAPTCHA_ENABLE'] = os.getenv( + 'RECAPTCHA_ENABLE', + app.config['RECAPTCHA_ENABLE'] + ) + if "RECAPTCHA_PUBLIC_KEY" not in app.config: + app.config['RECAPTCHA_PUBLIC_KEY'] = '' + app.config['RECAPTCHA_PUBLIC_KEY'] = os.getenv( + 'RECAPTCHA_PUBLIC_KEY', + app.config['RECAPTCHA_PUBLIC_KEY'] + ) + if "RECAPTCHA_PRIVATE_KEY" not in app.config: + app.config['RECAPTCHA_PRIVATE_KEY'] = '' + app.config['RECAPTCHA_PRIVATE_KEY'] = os.getenv( + 'RECAPTCHA_PRIVATE_KEY', + app.config['RECAPTCHA_PRIVATE_KEY'] + ) + # Optional + app.config['RECAPTCHA_API_SERVER'] = os.getenv( + 'RECAPTCHA_API_SERVER', + app.config['RECAPTCHA_API_SERVER'] + ) + app.config['RECAPTCHA_PARAMETERS'] = os.getenv( + 'RECAPTCHA_PARAMETERS', + app.config['RECAPTCHA_PARAMETERS'] + ) + if "RECAPTCHA_DATA_ATTRS" not in app.config: + app.config['RECAPTCHA_DATA_ATTRS'] = {'theme': 'white', 'size': 'invisible'} + app.config['RECAPTCHA_DATA_ATTRS'] = os.getenv( + 'RECAPTCHA_DATA_ATTRS', + app.config['RECAPTCHA_DATA_ATTRS'] + ) + def gm_level(gm_level): diff --git a/app/forms.py b/app/forms.py index 51a4a1f..5898611 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,4 +1,5 @@ from flask_wtf import FlaskForm +from flask_wtf.recaptcha import RecaptchaField from flask import current_app from flask_user.forms import ( @@ -84,6 +85,10 @@ class CustomRegisterForm(FlaskForm): ]) invite_token = HiddenField('Token') + + # Use recaptcha if config enables recaptcha + if current_app.config["ENABLE_RECAPTCHA"]: + recaptcha = RecaptchaField() submit = SubmitField('Register') diff --git a/app/settings_example.py b/app/settings_example.py index df7a992..a449e51 100644 --- a/app/settings_example.py +++ b/app/settings_example.py @@ -61,3 +61,13 @@ USER_AFTER_LOGOUT_ENDPOINT = "main.index" # Option will be removed once this feature is full implemeted ENABLE_CHAR_XML_UPLOAD = False + +# Recaptcha settings +# See: https://flask-wtf.readthedocs.io/en/1.2.x/form/#recaptcha +RECAPTCHA_ENABLE = False +RECAPTCHA_PUBLIC_KEY = '' +RECAPTCHA_PRIVATE_KEY = '' +# Optional +# RECAPTCHA_API_SERVER = '' +# RECAPTCHA_PARAMETERS = '' +RECAPTCHA_DATA_ATTRS = {'theme': 'white', 'size': 'invisible'} diff --git a/app/templates/admin/dashboard.html.j2 b/app/templates/admin/dashboard.html.j2 deleted file mode 100644 index 3a90294..0000000 --- a/app/templates/admin/dashboard.html.j2 +++ /dev/null @@ -1,188 +0,0 @@ -{% extends "bootstrap/base.html" %} -{% block title %}Key Creation{% endblock %} - -{% block navbar %} - -{% endblock navbar %}} - -{% block content %} -{# LOGO #} -