From 19c0c06214a5ca39c806d9bd4987170d61d793c5 Mon Sep 17 00:00:00 2001
From: uhensler <none@none>
Date: Mon, 13 Nov 2017 12:22:17 +0100
Subject: [PATCH] OO-2981: Send no email address to card2brain if a user has no
 email address

---
 .../org/olat/course/nodes/basiclti/LTIRunController.java | 2 +-
 .../course/nodes/card2brain/Card2BrainRunController.java | 2 +-
 .../course/nodes/edubase/EdubaseViewerController.java    | 2 +-
 src/main/java/org/olat/ims/lti/LTIManager.java           | 2 +-
 .../java/org/olat/ims/lti/manager/LTIManagerImpl.java    | 9 +++++++--
 5 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
index 911c792b9f3..ade3b060882 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
+++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
@@ -460,7 +460,7 @@ public class LTIRunController extends BasicController {
 		container.contextPut("width", width);
 		LTIContext context = new LTICourseNodeContext(courseEnv, courseNode, ltiRoles,
 				sourcedId, backMapperUri, outcomeMapperUri, custom, target, width, height);
-		Map<String,String> unsignedProps = ltiManager.forgeLTIProperties(getIdentity(), getLocale(), context, sendname, sendmail);
+		Map<String,String> unsignedProps = ltiManager.forgeLTIProperties(getIdentity(), getLocale(), context, sendname, sendmail, true);
 		Mapper contentMapper = new PostDataMapper(unsignedProps, url, oauth_consumer_key, oauth_secret, "true".equals(debug));
 
 		String mapperUri = registerMapper(ureq, contentMapper);
diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java
index 8ec4ae1a004..cca982f6f9f 100644
--- a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java
+++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java
@@ -84,7 +84,7 @@ public class Card2BrainRunController extends BasicController {
 
 		LTIContext context = new Card2BrainContext();
 		Map<String, String> unsignedProps = ltiManager.forgeLTIProperties(getIdentity(), getLocale(), context, true,
-				true);
+				true, false);
 
 		Mapper contentMapper = new PostDataMapper(unsignedProps, url, oauth_consumer_key, oauth_secret, false);
 
diff --git a/src/main/java/org/olat/course/nodes/edubase/EdubaseViewerController.java b/src/main/java/org/olat/course/nodes/edubase/EdubaseViewerController.java
index 7a0ffe8f9b9..3ed615e1c24 100644
--- a/src/main/java/org/olat/course/nodes/edubase/EdubaseViewerController.java
+++ b/src/main/java/org/olat/course/nodes/edubase/EdubaseViewerController.java
@@ -90,7 +90,7 @@ public class EdubaseViewerController extends BasicController {
 
 		LTIContext context = new EdubaseContext(ureq.getUserSession().getIdentityEnvironment(), bookSection.getPageTo());
 		Map<String, String> unsignedProps = ltiManager.forgeLTIProperties(getIdentity(), getLocale(), context, true,
-				true);
+				true, false);
 
 		Mapper contentMapper = new PostDataMapper(unsignedProps, launchUrl, baseUrl, oauthConsumerKey, oauthSecret, false);
 		String mapperUri = registerMapper(ureq, contentMapper);
diff --git a/src/main/java/org/olat/ims/lti/LTIManager.java b/src/main/java/org/olat/ims/lti/LTIManager.java
index e176cd307fc..346bf3a0a4a 100644
--- a/src/main/java/org/olat/ims/lti/LTIManager.java
+++ b/src/main/java/org/olat/ims/lti/LTIManager.java
@@ -38,7 +38,7 @@ public interface LTIManager {
 	public static final int EXPIRATION_TIME = 3600 * 24 * 30 * 6;//6 months
 
 	public Map<String,String> forgeLTIProperties(Identity identity, Locale locale,
-			LTIContext context, boolean sendName, boolean sendEmail);
+			LTIContext context, boolean sendName, boolean sendEmail, boolean ensureEmail);
 
 	public Map<String,String> sign(Map<String,String> props, String url, String oauthKey, String oauthSecret);
 
diff --git a/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java b/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java
index 05298290507..dc8263a0022 100644
--- a/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java
+++ b/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java
@@ -163,13 +163,18 @@ public class LTIManagerImpl implements LTIManager {
 
 	@Override
 	public Map<String,String> forgeLTIProperties(Identity identity, Locale locale, LTIContext context,
-			boolean sendName, boolean sendEmail) {
+			boolean sendName, boolean sendEmail, boolean ensureEmail) {
 		final Locale loc = locale;
 		final Identity ident = identity;
 		final User u = ident.getUser();
 		final String lastName = u.getProperty(UserConstants.LASTNAME, loc);
 		final String firstName = u.getProperty(UserConstants.FIRSTNAME, loc);
-		final String email = userManager.getEnsuredEmail(u);
+		String email;
+		if (ensureEmail) {
+			email = userManager.getEnsuredEmail(u);
+		} else {
+			email = u.getProperty(UserConstants.EMAIL, loc);
+		}
 
 		Map<String,String> props = new HashMap<>();
 		setProperty(props, "resource_link_id", context.getResourceId());
-- 
GitLab