From fbcae4e03e0cb11ff9247e9c8ace38b59d4c3885 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 8 Jan 2019 14:56:10 +0100
Subject: [PATCH] when there is no email account connected to request an
 account link then request an account link is disabled

---
 frontend-js/src/main/js/minerva.js      | 19 +++++++++++++------
 frontend-js/src/test/js/minerva-test.js |  8 ++++++++
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 725550e4df..2ba660e911 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -654,9 +654,10 @@ function createFooter() {
 
 /**
  *
- * @returns {HTMLElement}
+ * @param {Configuration} configuration
+ * @return {HTMLElement}
  */
-function createLoginDiv() {
+function createLoginDiv(configuration) {
   var loggedIn = false;
 
   var result = functions.createElement({type: "center"});
@@ -707,11 +708,17 @@ function createLoginDiv() {
   $("#go_to_map_button", resultDiv).hide();
 
   resultDiv.appendChild(functions.createElement({type: "br"}));
+  var requestAccountStyle = "";
+  if (configuration.getOption(ConfigurationType.REQUEST_ACCOUNT_EMAIL).getValue() === "" ||
+    configuration.getOption(ConfigurationType.REQUEST_ACCOUNT_EMAIL).getValue() === undefined) {
+    requestAccountStyle = "display: none";
+  }
   resultDiv.appendChild(functions.createElement({
     type: "a",
     href: "javascript:;",
     id: "register_button",
     className: "adminLink",
+    style: requestAccountStyle,
     content: '<i class="fa fa-chevron-right"></i> REQUEST AN ACCOUNT</a>',
     xss: false
   }));
@@ -757,9 +764,9 @@ function createLoginDiv() {
   });
   $('#register_button', result).click(function () {
     var email, content;
-    return ServerConnector.getConfigurationParam("REQUEST_ACCOUNT_EMAIL").then(function (result) {
+    return ServerConnector.getConfigurationParam(ConfigurationType.REQUEST_ACCOUNT_EMAIL).then(function (result) {
       email = result;
-      return ServerConnector.getConfigurationParam("REQUEST_ACCOUNT_DEFAULT_CONTENT");
+      return ServerConnector.getConfigurationParam(ConfigurationType.REQUEST_ACCOUNT_DEFAULT_CONTENT);
     }).then(function (result) {
       content = encodeURIComponent(result);
       document.location.href = 'mailto:' + email + '?subject=MINERVA account request&body=' + content;
@@ -783,8 +790,8 @@ function createLogin(params) {
   // make sure that we are logged in
   return ServerConnector.createSession().then(function () {
     return ServerConnector.getConfiguration();
-  }).then(function () {
-    var loginDiv = createLoginDiv();
+  }).then(function (configuration) {
+    var loginDiv = createLoginDiv(configuration);
     params.getElement().appendChild(loginDiv);
     return createFooter();
   }).then(function (footer) {
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 9a6398a209..483320c2ec 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -5,6 +5,7 @@ require("./mocha-config");
 var Promise = require("bluebird");
 
 var minerva = require('../../main/js/minerva');
+var ConfigurationType = require('../../main/js/ConfigurationType');
 var SecurityError = require('../../main/js/SecurityError');
 var ServerConnectorMock = require('./ServerConnector-mock');
 var Point = require('../../main/js/map/canvas/Point');
@@ -279,8 +280,15 @@ describe('minerva global', function () {
     });
   });
   describe('createLogin', function () {
+    it('no request account email configured', function () {
+      helper.getConfiguration().getOption(ConfigurationType.REQUEST_ACCOUNT_EMAIL).setValue("");
+      return minerva.createLogin({element: testDiv}).then(function () {
+        assert.ok($("#register_button").css("display") === "none");
+      });
+    });
     it('default', function () {
       return minerva.createLogin({element: testDiv}).then(function () {
+        assert.ok($("#register_button").css("display") !== "none");
         assert.ok(testDiv.innerHTML.indexOf("MiNERVA") >= 0);
       });
     });
-- 
GitLab