Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/post-3.7-fixes' into post-3.7-fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Feb 21, 2018
2 parents 5ce610e + 7f33a5e commit 92287ba
Show file tree
Hide file tree
Showing 10 changed files with 256 additions and 184 deletions.
Expand Up @@ -17,8 +17,11 @@

import java.util.*;

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -29,6 +32,7 @@
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;

import com.evolveum.midpoint.gui.api.model.LoadableModel;
Expand Down Expand Up @@ -260,9 +264,46 @@ protected List<IColumn<SelectableBean<O>, String>> getCustomColumnsTransformed(L
Model.of(customColumn.getDisplay().getLabel()) : createStringResource(getItemDisplayName(customColumn)),
customColumn.getPath().toString());
} else {
column = new PropertyColumn(customColumn.getDisplay() != null && customColumn.getDisplay().getLabel() != null ?
column = new PropertyColumn<SelectableBean<O>, String>(customColumn.getDisplay() != null && customColumn.getDisplay().getLabel() != null ?
Model.of(customColumn.getDisplay().getLabel()) : createStringResource(getItemDisplayName(customColumn)), null,
SelectableBean.F_VALUE + "." + customColumn.getPath());
SelectableBean.F_VALUE + "." + customColumn.getPath().toString().replaceAll("/", ".")){
private static final long serialVersionUID = 1L;

@Override
public IModel<?> getDataModel(IModel<SelectableBean<O>> rowModel) {
ItemPathType itemPathType = customColumn.getPath();
if (itemPathType != null
&& itemPathType.getItemPath() != null) {
if (itemPathType.getItemPath().toString().contains(ObjectType.F_EXTENSION.getLocalPart() + "/")) {

O rowModelObject = rowModel.getObject().getValue();
if (rowModelObject.getExtension() != null) {
ExtensionType extensionType = rowModelObject.getExtension();
Item item = extensionType.asPrismContainerValue().findItem(itemPathType.getItemPath().lastNamed().getName());
if (item != null && item.getValues() != null) {
StringBuilder sb = new StringBuilder();
item.getValues().forEach(itemValue -> {
if (StringUtils.isNotEmpty(sb.toString())) {
sb.append(", ");
}
if (itemValue instanceof PrismPropertyValue) {
sb.append(((PrismPropertyValue) itemValue).getValue().toString());
} else {
sb.append(itemValue.toString() + " ");
}
});
return Model.of(sb.toString());
}
}
} else {
return super.getDataModel(rowModel);
}
}
return Model.of("");

}

};
}
columns.add(column);
}
Expand Down
Expand Up @@ -159,7 +159,7 @@ public String getObject() {
}

private static <T extends ObjectType> IColumn<SelectableBean<T>, String> getDefaultIcons(){
return new IconColumn<SelectableBean<T>>(createStringResource("userBrowserDialog.type")) {
return new IconColumn<SelectableBean<T>>(createIconColumnHeaderModel()) {

@Override
protected IModel<String> createIconModel(final IModel<SelectableBean<T>> rowModel) {
Expand All @@ -174,6 +174,19 @@ public String getObject() {
};

}

@Override
protected IModel<String> createTitleModel(final IModel<SelectableBean<T>> rowModel) {

return new AbstractReadOnlyModel<String>() {

@Override
public String getObject() {
T object = rowModel.getObject().getValue();
return object.asPrismContainer().getDefinition().getTypeName().getLocalPart();
}
};
}
};
}

Expand Down
Expand Up @@ -532,5 +532,39 @@
</xsd:complexType>
<xsd:element name="policyItemTarget" type="tns:PolicyItemTargetType"/>


<xsd:complexType name="ExecuteCredentialResetRequestType">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="resetMethod" type="xsd:string" minOccurs="0">
</xsd:element>
<xsd:element name="password" type="xsd:string" minOccurs="0">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="executeCredentialResetRequest" type="tns:ExecuteCredentialResetRequestType"/>

<xsd:complexType name="ExecuteCredentialResetResponseType">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="message" type="c:LocalizableMessageType" minOccurs="0">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="executeCredentialResetResponse" type="tns:ExecuteCredentialResetResponseType"/>


</xsd:schema>

Expand Up @@ -14590,12 +14590,6 @@
</xsd:element>
<xsd:element name="forceChange" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false">
</xsd:element>
<xsd:element name="authenticationName" type="xsd:string" minOccurs="0">
</xsd:element>
<xsd:element name="deliveryType" type="tns:DeliveryType" minOccurs="0">
</xsd:element>
<xsd:element name="newCredentialSource" type="tns:CredentialSourceType" minOccurs="0">
</xsd:element>
<xsd:element name="securityQuestionReset" type="tns:SecurityQuestionsResetPolicyType" minOccurs="0">
</xsd:element>
<xsd:element name="mailReset" type="tns:MailResetPolicyType" minOccurs="0">
Expand All @@ -14606,79 +14600,6 @@
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="CredentialSourceType">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="credentialSource" type="tns:CredentialSourceTypeType" minOccurs="0" maxOccurs="1">
</xsd:element>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="CredentialSourceTypeType">
<xsd:annotation>
<xsd:documentation>
TODO
</xsd:documentation>
<xsd:appinfo>
<jaxb:typesafeEnumClass/>
</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="generate">
<xsd:annotation>
<xsd:appinfo>
<jaxb:typesafeEnumMember name="GENERATE"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>


<xsd:simpleType name="DeliveryType">
<xsd:annotation>
<xsd:documentation>
TODO
</xsd:documentation>
<xsd:appinfo>
<jaxb:typesafeEnumClass/>
</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="gui">
<xsd:annotation>
<xsd:appinfo>
<jaxb:typesafeEnumMember name="GUI"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="CredentialResetResponseType">
<xsd:annotation>
<xsd:documentation>
</xsd:documentation>
<xsd:appinfo>
<a:container/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="message" type="tns:LocalizableMessageType" minOccurs="0">
</xsd:element>
<xsd:element name="newCredential" type="xsd:string" minOccurs="0">
</xsd:element>
</xsd:sequence>
</xsd:complexType>



<xsd:complexType name="AbstractAuthenticationPolicyType">
<xsd:annotation>
<xsd:documentation>
Expand Down
7 changes: 6 additions & 1 deletion model/certification-impl/pom.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2010-2017 Evolveum
~ Copyright (c) 2010-2018 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -67,6 +67,11 @@
<artifactId>model-impl</artifactId>
<version>3.7-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.model</groupId>
<artifactId>model-common</artifactId>
<version>3.7-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.evolveum.midpoint.infra</groupId>
<artifactId>common</artifactId>
Expand Down
Expand Up @@ -33,6 +33,8 @@
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.ExecuteCredentialResetRequestType;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.ExecuteCredentialResetResponseType;
import com.evolveum.midpoint.xml.ns._public.common.api_types_3.PolicyItemsDefinitionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;
Expand Down Expand Up @@ -328,8 +330,8 @@ LocalizableMessageType createLocalizableMessageType(LocalizableMessageTemplateTy
throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException,
ConfigurationException, SecurityViolationException;

public CredentialResetResponseType requestCredentialsReset(PrismObject<UserType> focus, String credentialsId,
CredentialsResetPolicyType resetMethod, Task task, OperationResult result)
public ExecuteCredentialResetResponseType executeCredentialsReset(PrismObject<UserType> user,
ExecuteCredentialResetRequestType executeCredentialResetRequest, Task task, OperationResult result)
throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException,
SecurityViolationException, ExpressionEvaluationException, ObjectAlreadyExistsException, PolicyViolationException;
}
Expand Up @@ -1036,6 +1036,29 @@ public Response getLog(@QueryParam("fromPosition") Long fromPosition, @QueryPara
return response;
}

@POST
@Path("/users/{oid}/credential")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, "application/yaml"})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, "application/yaml"})
public Response executeCredentialReset(@PathParam("oid") String oid, ExecuteCredentialResetRequestType executeCredentialResetRequest, @Context MessageContext mc) {
Task task = RestServiceUtil.initRequest(mc);
OperationResult result = task.getResult().createSubresult(OPERATION_GET_LOG_FILE_CONTENT);

Response response;
try {
PrismObject<UserType> user = modelService.getObject(UserType.class, oid, null, task, result);

ExecuteCredentialResetResponseType executeCredentialResetResponse = modelInteraction.executeCredentialsReset(user, executeCredentialResetRequest, task, result);
response = RestServiceUtil.createResponse(Response.Status.OK, executeCredentialResetResponse, result);
} catch (Exception ex) {
response = RestServiceUtil.handleException(result, ex);
}

result.computeStatus();
finishRequest(task);
return response;

}

// @GET
// @Path("tasks/{oid}")
Expand Down

0 comments on commit 92287ba

Please sign in to comment.