Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into access-certification
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Nov 12, 2015
2 parents a568fbd + eb22592 commit 619b5fe
Show file tree
Hide file tree
Showing 82 changed files with 4,086 additions and 2,149 deletions.
6 changes: 6 additions & 0 deletions build-system/pom.xml
Expand Up @@ -695,6 +695,12 @@
<groupId>org.bouncycastle</groupId>
<artifactId>bctsp-jdk14</artifactId>
</exclusion>
<exclusion> <!-- Pulled in by castor-xml. Conflicts with itself (depends both on stax-api 1.0-2 and 1.0.1)
Note: the 1.0-2 and 1.0.1 have differeng group IDs (but same java packages),
so dependency convergence will not detect this. -->
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
<!-- use in midPoint 3.2
<exclusion>
<groupId>org.apache.lucene</groupId>
Expand Down
2 changes: 1 addition & 1 deletion config/initial-objects/100-report-reconciliation.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion config/initial-objects/110-report-user-list.xml

Large diffs are not rendered by default.

Expand Up @@ -252,14 +252,6 @@ public String load() {

if(ref != null){
sb.append(WebMiscUtil.getOrigStringFromPoly(ref.getTargetName())).append(": ");
// String oid = ref.getOid();
//
// PrismObject<ObjectTemplateType> template = WebModelUtils.loadObject(ObjectTemplateType.class, oid, result, getPageBase());
//
// if(template != null){
// ObjectTemplateType tmp = template.asObjectable();
// sb.append(WebMiscUtil.getOrigStringFromPoly(tmp.getName())).append(": ");
// }
}

if(config.getType() != null){
Expand Down
Expand Up @@ -16,34 +16,73 @@

package com.evolveum.midpoint.web.component.menu;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.MidPointPrincipal;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.util.BaseSimplePanel;
import com.evolveum.midpoint.web.component.util.LoadableModel;
import com.evolveum.midpoint.web.page.PageBase;
import com.evolveum.midpoint.web.page.admin.home.PageMyPasswordQuestions;
import com.evolveum.midpoint.web.page.admin.home.dto.PasswordQuestionsDto;
import com.evolveum.midpoint.web.page.admin.home.dto.SecurityQuestionAnswerDTO;
import com.evolveum.midpoint.web.security.SecurityUtils;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SecurityQuestionAnswerType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SecurityQuestionsCredentialsType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.cycle.RequestCycle;
import org.springframework.security.core.context.SecurityContextHolder;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* @author lazyman
*/
public class UserMenuPanel extends BaseSimplePanel {

private static final Trace LOGGER = TraceManager.getTrace(UserMenuPanel.class);
private static final String ID_USERNAME_LINK = "usernameLink";
private static final String ID_LOGOUT_LINK = "logoutLink";

private static final String ID_USERNAME = "username";

private static final String ID_EDIT_PROFILE = "editProfile";
private static final String ID_PASSWORD_QUESTIONS = "passwordQuestions";
private IModel<PasswordQuestionsDto> passwordQuestionsDtoIModel;
private static final String DOT_CLASS = UserMenuPanel.class.getName() + ".";
private static final String OPERATION_LOAD_USER = DOT_CLASS + "loaduser";

private boolean isModelLoaded = false;

public UserMenuPanel(String id) {
super(id);
if (!isModelLoaded) {
passwordQuestionsDtoIModel = new LoadableModel<PasswordQuestionsDto>(false) {

private static final long serialVersionUID = 1L;

@Override
protected PasswordQuestionsDto load() {
return loadModel();
}
};
}
}

@Override
Expand Down Expand Up @@ -77,10 +116,33 @@ public String getObject() {

@Override
public void onClick(AjaxRequestTarget target) {
setResponsePage(PageMyPasswordQuestions.class);
PageMyPasswordQuestions myPasswordQuestions = new PageMyPasswordQuestions(passwordQuestionsDtoIModel);
setResponsePage(myPasswordQuestions);
}

};
add(editPasswordQ);

if (!isModelLoaded) {
passwordQuestionsDtoIModel = new LoadableModel<PasswordQuestionsDto>(false) {

private static final long serialVersionUID = 1L;

@Override
protected PasswordQuestionsDto load() {
return loadModel();
}
};
}
if (passwordQuestionsDtoIModel.getObject() == null ||
((passwordQuestionsDtoIModel.getObject().getPwdQuestion() == null
|| passwordQuestionsDtoIModel.getObject().getPwdQuestion().trim().equals(""))
&& (passwordQuestionsDtoIModel.getObject().getSecurityAnswers() == null
|| passwordQuestionsDtoIModel.getObject().getSecurityAnswers().size() == 0)
&& (passwordQuestionsDtoIModel.getObject().getPwdAnswer() == null
|| passwordQuestionsDtoIModel.getObject().getPwdAnswer().trim().equals("")))) {
editPasswordQ.setVisible(false);
}
}

private String getShortUserName() {
Expand All @@ -98,4 +160,73 @@ private String getShortUserName() {

return principal.toString();
}

private PasswordQuestionsDto loadModel() {
LOGGER.debug("Loading user for Security Question Page.");

PasswordQuestionsDto dto =new PasswordQuestionsDto();
OperationResult result = new OperationResult(OPERATION_LOAD_USER);
try{


String userOid = SecurityUtils.getPrincipalUser().getOid();
Task task = ((PageBase)getPage()).createSimpleTask(OPERATION_LOAD_USER);
OperationResult subResult = result.createSubresult(OPERATION_LOAD_USER);

PrismObject<UserType> user = ((PageBase)getPage()).getModelService().getObject(UserType.class, userOid, null, task, subResult);

dto.setSecurityAnswers(createUsersSecurityQuestionsList(user));

subResult.recordSuccessIfUnknown();

}
catch (Exception ex) {
LoggingUtils.logExceptionOnDebugLevel(LOGGER, "Couldn't get user Questions, Probably not set yet", ex);

} finally {
result.recomputeStatus();
isModelLoaded = true;
}
return dto;
}

public List<SecurityQuestionAnswerDTO> createUsersSecurityQuestionsList(PrismObject<UserType> user) {

SecurityQuestionsCredentialsType credentialsPolicyType = user.asObjectable().getCredentials()
.getSecurityQuestions();
if (credentialsPolicyType == null) {
return null;
}
List<SecurityQuestionAnswerType> secQuestAnsList = credentialsPolicyType.getQuestionAnswer();

if (secQuestAnsList != null) {
List<SecurityQuestionAnswerDTO> secQuestAnswListDTO = new ArrayList<SecurityQuestionAnswerDTO>();
for (Iterator iterator = secQuestAnsList.iterator(); iterator.hasNext();) {
SecurityQuestionAnswerType securityQuestionAnswerType = (SecurityQuestionAnswerType) iterator
.next();
// System.out.println(securityQuestionAnswerType.getQuestionIdentifier());
Protector protector = ((PageBase) getPage()).getPrismContext().getDefaultProtector();
String decoded = "";
if (securityQuestionAnswerType.getQuestionAnswer().getEncryptedDataType() != null) {
try {
decoded = protector.decryptString(securityQuestionAnswerType.getQuestionAnswer());
} catch (EncryptionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

secQuestAnswListDTO.add(new SecurityQuestionAnswerDTO(securityQuestionAnswerType
.getQuestionIdentifier(), decoded));
}

return secQuestAnswListDTO;

} else {
return null;
}

}


}
Expand Up @@ -554,7 +554,8 @@ public DeltaDto getObject() {
final PrismObject<LookupTableType> lookupTable = WebModelUtils.loadObject(LookupTableType.class,
lookupTableUid, options, pageBase, task, result);

panel = new AutoCompleteTextPanel<String>(id, new LookupPropertyModel<String>(model, baseExpression, lookupTable.asObjectable()), type) {
panel = new AutoCompleteTextPanel<String>(id, new LookupPropertyModel<String>(model, baseExpression,
lookupTable == null ? null : lookupTable.asObjectable()), type) {


@Override
Expand Down
Expand Up @@ -51,6 +51,7 @@
import com.evolveum.midpoint.web.page.admin.reports.PageNewReport;
import com.evolveum.midpoint.web.page.admin.reports.PageReport;
import com.evolveum.midpoint.web.page.admin.reports.PageReports;
import com.evolveum.midpoint.web.page.admin.resources.PageImportResource;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.page.admin.roles.PageRole;
Expand Down Expand Up @@ -324,7 +325,9 @@ protected List<SideBarMenuItem> createMenuItems() {
}

if (WebMiscUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_RESOURCES_URL,
AuthorizationConstants.AUTZ_UI_RESOURCES_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL)) {
AuthorizationConstants.AUTZ_UI_RESOURCES_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL,
AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL, AuthorizationConstants.AUTZ_UI_RESOURCE_URL,
AuthorizationConstants.AUTZ_UI_RESOURCE_EDIT_URL)) {
items.add(createResourcesItems());
}

Expand Down Expand Up @@ -352,7 +355,12 @@ protected List<SideBarMenuItem> createMenuItems() {
}

if (WebMiscUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_CONFIGURATION_URL,
AuthorizationConstants.AUTZ_UI_CONFIGURATION_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL)) {
AuthorizationConstants.AUTZ_UI_CONFIGURATION_DEBUG_URL, AuthorizationConstants.AUTZ_UI_CONFIGURATION_DEBUGS_URL,
AuthorizationConstants.AUTZ_UI_CONFIGURATION_IMPORT_URL, AuthorizationConstants.AUTZ_UI_CONFIGURATION_LOGGING_URL,
AuthorizationConstants.AUTZ_UI_CONFIGURATION_SYSTEM_CONFIG_URL, AuthorizationConstants.AUTZ_UI_CONFIGURATION_ABOUT_URL,
AuthorizationConstants.AUTZ_UI_CONFIGURATION_SYNCHRONIZATION_ACCOUNTS_URL,
AuthorizationConstants.AUTZ_UI_CONFIGURATION_ALL_URL, AuthorizationConstants.AUTZ_GUI_ALL_URL,
AuthorizationConstants.AUTZ_GUI_ALL_DEPRECATED_URL)) {
items.add(createConfigurationItems());
}

Expand Down Expand Up @@ -417,7 +425,7 @@ private MainMenuItem createResourcesItems() {
PageResourceWizard.class);
submenu.add(created);
MenuItem n = new MenuItem(createStringResource("PageAdmin.menu.top.resources.import"),
PageImportObject.class);
PageImportResource.class);
submenu.add(n);

return item;
Expand Down
Expand Up @@ -116,7 +116,7 @@
<div class="wrapper">
<header class="main-header">
<!-- Logo -->
<a class="logo" href="#">
<a class="logo" href="./">
<span>&nbsp;</span>
</a>
<!-- Header Navbar: style can be found in header.less -->
Expand Down
Expand Up @@ -72,6 +72,11 @@ <h3>
<div wicket:id="assignmentsPanel" />
</div>
</div>

<div wicket:id="tasks">
<h3><wicket:message key="pageUser.tasks"/></h3>
<div wicket:id="taskTable"/>
</div>
</div>
</div>

Expand Down

0 comments on commit 619b5fe

Please sign in to comment.