aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2018-01-30 13:07:58 +0300
committerMuriithi Frederick Muriuki2018-01-30 13:07:58 +0300
commitafaea1b1297d0cf08565746799d2900a6981823a (patch)
treea10232b77ff3e49b309a6af9db9d9fc5fac76a0a /wqflask
parentfb0ad54313366a3f0efda3ef20e800d5e52d1d53 (diff)
downloadgenenetwork2-afaea1b1297d0cf08565746799d2900a6981823a.tar.gz
Fail safely if elasticsearch is down or unconfigured
* If elasticsearch server is down, or the configuration variables are not provided at startup or in a configuration file, then do not allow the system to simply crash, but instead, inform the user that they cannot use the services that depend on elasticsearch to be running.
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/utility/elasticsearch_tools.py16
-rw-r--r--wqflask/wqflask/templates/new_security/login_user.html25
-rw-r--r--wqflask/wqflask/user_manager.py6
3 files changed, 36 insertions, 11 deletions
diff --git a/wqflask/utility/elasticsearch_tools.py b/wqflask/utility/elasticsearch_tools.py
index c2c999ea..8b8ad9cc 100644
--- a/wqflask/utility/elasticsearch_tools.py
+++ b/wqflask/utility/elasticsearch_tools.py
@@ -1,10 +1,14 @@
-from elasticsearch import Elasticsearch, TransportError
-from utility.tools import ELASTICSEARCH_HOST, ELASTICSEARCH_PORT
+es = None
+try:
+ from elasticsearch import Elasticsearch, TransportError
+ from utility.tools import ELASTICSEARCH_HOST, ELASTICSEARCH_PORT
-es = Elasticsearch([{
- "host": ELASTICSEARCH_HOST
- , "port": ELASTICSEARCH_PORT
-}])
+ es = Elasticsearch([{
+ "host": ELASTICSEARCH_HOST
+ , "port": ELASTICSEARCH_PORT
+ }]) if (ELASTICSEARCH_HOST and ELASTICSEARCH_PORT) else None
+except:
+ es = None
def get_user_by_unique_column(column_name, column_value):
user_details = None
diff --git a/wqflask/wqflask/templates/new_security/login_user.html b/wqflask/wqflask/templates/new_security/login_user.html
index 15f0a27e..0dae3503 100644
--- a/wqflask/wqflask/templates/new_security/login_user.html
+++ b/wqflask/wqflask/templates/new_security/login_user.html
@@ -16,7 +16,14 @@
<h4>Don't have an account?</h4>
- <a href="/n/register" class="btn btn-primary modalize">Create a new account</a>
+ {% if es_server: %}
+ <a href="/n/register" class="btn btn-primary modalize">Create a new account</a>
+ {% else: %}
+ <div class="alert alert-warning">
+ <p>You cannot create an account at this moment.<br />
+ Please try again later.</p>
+ </div>
+ {% endif %}
<hr />
<h4>Login with external services</h4>
@@ -31,13 +38,17 @@
<a href="{{external_login['orcid']}}" title="Login with ORCID" class="btn btn-info btn-group">Login with ORCID</a>
{% endif %}
</div>
-
- <hr />
+ {% else: %}
+ <div class="alert alert-warning">
+ <p>You cannot login with external services at this time.<br />
+ Please try again later.</p>
+ </div>
{% endif %}
+ <hr />
<h4>Already have an account? Sign in here.</h4>
-
+ {% if es_server: %}
<form class="form-horizontal" action="/n/login" method="POST" name="login_user_form" id="loginUserForm">
<fieldset>
<div class="form-group">
@@ -75,6 +86,12 @@
</fieldset>
</form>
+ {% else: %}
+ <div class="alert alert-warning">
+ <p>You cannot login at this moment using your GeneNetwork account.<br />
+ Please try again later.</p>
+ </div>
+ {% endif %}
</div>
</div>
diff --git a/wqflask/wqflask/user_manager.py b/wqflask/wqflask/user_manager.py
index 4322945b..772d6c83 100644
--- a/wqflask/wqflask/user_manager.py
+++ b/wqflask/wqflask/user_manager.py
@@ -585,13 +585,17 @@ class LoginUser(object):
logger.debug("in login params are:", params)
if not params:
from utility.tools import GITHUB_AUTH_URL, ORCID_AUTH_URL
+ from utility.elasticsearch_tools import es
external_login = None
if GITHUB_AUTH_URL or ORCID_AUTH_URL:
external_login={
"github": GITHUB_AUTH_URL,
"orcid": ORCID_AUTH_URL
}
- return render_template("new_security/login_user.html", external_login=external_login)
+ return render_template(
+ "new_security/login_user.html"
+ , external_login=external_login
+ , es_server=es)
else:
user_details = get_user_by_unique_column("email_address", params["email_address"])
user = None