Skip to content
Snippets Groups Projects
Commit 94c45b7a authored by srosse's avatar srosse
Browse files

OO-1885: fix NPE, block the LTI course element for guest if assessable or data transfert is enable

parent 61d88c10
No related branches found
No related tags found
No related merge requests found
...@@ -33,9 +33,13 @@ import org.olat.core.gui.components.stack.BreadcrumbPanel; ...@@ -33,9 +33,13 @@ import org.olat.core.gui.components.stack.BreadcrumbPanel;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.iframe.DeliveryOptions; import org.olat.core.gui.control.generic.iframe.DeliveryOptions;
import org.olat.core.gui.control.generic.messages.MessageUIFactory;
import org.olat.core.gui.control.generic.tabbable.TabbableController; import org.olat.core.gui.control.generic.tabbable.TabbableController;
import org.olat.core.gui.translator.Translator;
import org.olat.core.id.Identity; import org.olat.core.id.Identity;
import org.olat.core.id.Roles;
import org.olat.core.logging.OLATRuntimeException; import org.olat.core.logging.OLATRuntimeException;
import org.olat.core.util.StringHelper;
import org.olat.core.util.Util; import org.olat.core.util.Util;
import org.olat.course.ICourse; import org.olat.course.ICourse;
import org.olat.course.assessment.AssessmentManager; import org.olat.course.assessment.AssessmentManager;
...@@ -114,7 +118,26 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements ...@@ -114,7 +118,26 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements
public NodeRunConstructionResult createNodeRunConstructionResult(UserRequest ureq, WindowControl wControl, public NodeRunConstructionResult createNodeRunConstructionResult(UserRequest ureq, WindowControl wControl,
UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) { UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) {
updateModuleConfigDefaults(false); updateModuleConfigDefaults(false);
LTIRunController runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv);
Controller runCtrl;
Roles roles = ureq.getUserSession().getRoles();
if (roles.isGuestOnly()) {
ModuleConfiguration config = getModuleConfiguration();
boolean assessable = config.getBooleanSafe(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD, false);
boolean sendName = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false);
boolean sendEmail = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false);
boolean customValues = StringHelper.containsNonWhitespace(config.getStringValue(LTIConfigForm.CONFIG_KEY_CUSTOM));
if(assessable || sendName || sendEmail || customValues) {
Translator trans = Util.createPackageTranslator(BasicLTICourseNode.class, ureq.getLocale());
String title = trans.translate("guestnoaccess.title");
String message = trans.translate("guestnoaccess.message");
runCtrl = MessageUIFactory.createInfoMessage(ureq, wControl, title, message);
} else {
runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv);
}
} else {
runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv);
}
Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runCtrl, this, "o_lti_icon"); Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runCtrl, this, "o_lti_icon");
return new NodeRunConstructionResult(ctrl); return new NodeRunConstructionResult(ctrl);
} }
......
...@@ -218,19 +218,18 @@ public class LTIConfigForm extends FormBasicController { ...@@ -218,19 +218,18 @@ public class LTIConfigForm extends FormBasicController {
fullURI = getFullURL(proto, host, port, uri, query).toString(); fullURI = getFullURL(proto, host, port, uri, query).toString();
sendNameConfig = config.getBooleanEntry(CONFIG_KEY_SENDNAME); sendNameConfig = config.getBooleanEntry(CONFIG_KEY_SENDNAME);
if (sendNameConfig == null) sendNameConfig = Boolean.FALSE; if (sendNameConfig == null) sendNameConfig = Boolean.FALSE;
sendEmailConfig = config.getBooleanEntry(CONFIG_KEY_SENDEMAIL); sendEmailConfig = config.getBooleanEntry(CONFIG_KEY_SENDEMAIL);
if (sendEmailConfig == null) sendEmailConfig = Boolean.FALSE; if (sendEmailConfig == null) sendEmailConfig = Boolean.FALSE;
doDebugConfig = config.getBooleanEntry(CONFIG_KEY_DEBUG); doDebugConfig = config.getBooleanEntry(CONFIG_KEY_DEBUG);
if (doDebugConfig == null) doDebugConfig = Boolean.FALSE; if (doDebugConfig == null) doDebugConfig = Boolean.FALSE;
Boolean assessable = config.getBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD); Boolean assessable = config.getBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD);
isAssessable = assessable == null ? false : assessable.booleanValue(); isAssessable = assessable == null ? false : assessable.booleanValue();
initForm(ureq); initForm(ureq);
} }
@Override @Override
...@@ -417,15 +416,15 @@ public class LTIConfigForm extends FormBasicController { ...@@ -417,15 +416,15 @@ public class LTIConfigForm extends FormBasicController {
} }
private void udpateRoles(MultipleSelectionElement roleEl, String configKey, String defaultRoles) { private void udpateRoles(MultipleSelectionElement roleEl, String configKey, String defaultRoles) {
Object configRoles = config.get(configKey); Object configRoles = config.get(configKey);
String roles = defaultRoles; String roles = defaultRoles;
if(configRoles instanceof String) { if(configRoles instanceof String) {
roles = (String)configRoles; roles = (String)configRoles;
} }
String[] roleArr = roles.split(","); String[] roleArr = roles.split(",");
for(String role:roleArr) { for(String role:roleArr) {
roleEl.select(role, true); roleEl.select(role, true);
} }
} }
private String getRoles(MultipleSelectionElement roleEl) { private String getRoles(MultipleSelectionElement roleEl) {
......
...@@ -206,11 +206,20 @@ public class LTIRunController extends BasicController { ...@@ -206,11 +206,20 @@ public class LTIRunController extends BasicController {
final User user = getIdentity().getUser(); final User user = getIdentity().getUser();
//user data //user data
if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false)) { if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false)) {
userData.put("lastName", user.getProperty(UserConstants.LASTNAME, getLocale())); String lastName = user.getProperty(UserConstants.LASTNAME, getLocale());
userData.put("firstName", user.getProperty(UserConstants.FIRSTNAME, getLocale())); if(StringHelper.containsNonWhitespace(lastName)) {
userData.put("lastName", lastName);
}
String firstName = user.getProperty(UserConstants.FIRSTNAME, getLocale());
if(StringHelper.containsNonWhitespace(firstName)) {
userData.put("firstName", firstName);
}
} }
if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false)) { if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false)) {
userData.put("email", user.getProperty(UserConstants.EMAIL, getLocale())); String email = user.getProperty(UserConstants.EMAIL, getLocale());
if(StringHelper.containsNonWhitespace(email)) {
userData.put("email", email);
}
} }
// customUserData // customUserData
String custom = (String)config.get(LTIConfigForm.CONFIG_KEY_CUSTOM); String custom = (String)config.get(LTIConfigForm.CONFIG_KEY_CUSTOM);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment