aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2018-01-30 13:07:58 +0300
committerPjotr Prins2018-03-26 09:24:35 +0000
commite0295504fb0097db394e99568339e24a71406123 (patch)
tree09fc1b0505c479fc6be5a28e5a02e385bedde871
parent3029ae6ffe66f083f02d35d39e09500f76977197 (diff)
downloadgenenetwork2-e0295504fb0097db394e99568339e24a71406123.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.
-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