Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/postgres-16
Browse files Browse the repository at this point in the history
  • Loading branch information
tonydamage committed Sep 25, 2023
2 parents eb61875 + a1cbcd6 commit 18cdd12
Show file tree
Hide file tree
Showing 15 changed files with 136 additions and 52 deletions.
25 changes: 12 additions & 13 deletions gui/admin-gui/src/frontend/js/midpoint-theme.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,19 +159,18 @@ export default class MidPointTheme {

breakLongerTextInTableCell(cellId) {
$("#" + cellId).css("word-break", function (index, origValue) {
var textOfColumn = document.getElementById(cellId).innerText;
if (textOfColumn != '' && textOfColumn != ' ') {
var numberOfChars = 15;
var controlValue = numberOfChars;
var indexOfSpace = textOfColumn.indexOf(' ');

while (indexOfSpace == (controlValue - numberOfChars)) {
controlValue = controlValue + 1 + indexOfSpace;
indexOfSpace = textOfColumn.indexOf(' ', (indexOfSpace + 1));
}
var textOfColumn = document.getElementById(cellId).innerText.trim();
var permittedChars = "@" //Just add other permitted chars to string if needed
if (textOfColumn != '' && textOfColumn != ' ' && !Array.from(permittedChars).some(char => textOfColumn.includes(char)))
{
var numberOfChars = 16;

if (textOfColumn.length >= numberOfChars) {
var indexOfSpace = textOfColumn.indexOf(' ');

if (indexOfSpace + 1 != textOfColumn.length && textOfColumn.length > controlValue) {
return "break-word";
if (indexOfSpace === -1 || indexOfSpace >= numberOfChars) {
return "break-all";
}
}
}
return "inherit";
Expand Down Expand Up @@ -470,7 +469,7 @@ export default class MidPointTheme {
if (!popup.is(':visible')) {
var position = ref.position();

var left = position.left + (ref.outerWidth() - popup.outerWidth()) / 2;// - paddingRight;
var left = position.left + (ref.outerWidth() - popup.outerWidth() - 9) / 2;// - paddingRight;
var top = position.top + ref.outerHeight();

var offsetLeft = ref.offset().left - position.left;
Expand Down
4 changes: 4 additions & 0 deletions gui/admin-gui/src/frontend/scss/midpoint-utils.scss
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,7 @@
height: auto !important;
position: absolute;
}

.lh-n {
line-height: normal!important;
}
9 changes: 8 additions & 1 deletion gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1280,7 +1280,7 @@ td .prism-property-value {

@include bg-variant(".search-item", $gray-300, true);

// deprecated, uses should be replaced by "d-flex gap-1 pl-1 bg-light rounded-sm align-items-center"
// deprecated, uses should be replaced by "d-flex gap-1 px-2 bg-light rounded-sm align-items-center"
.search-item {
display: flex;
gap: 0.25em;
Expand All @@ -1297,6 +1297,12 @@ td .prism-property-value {
}
}

.search-item-field {
.search-item-controls a > i {
font-size: 0.8rem;
}
}

.metadata div.prism-container {
// Removing the "top horizontal line" above metadata label and icon.
// HACK We should rather re-structure the code and provide custom css class.
Expand Down Expand Up @@ -1578,6 +1584,7 @@ fieldset.objectButtons {
flex-direction: row;
align-items: stretch;
background-color: $white;
border-radius: 0.25rem;
overflow: hidden;
box-shadow: 0 0 1px rgba(0,0,0,.125), 0 1px 3px rgba(0,0,0,.2);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,9 @@ protected ItemVisibilityHandler getVisibilityHandler() {
return ItemVisibility.AUTO;
};
}

@Override
protected void onSubmitPerformed(AjaxRequestTarget target) {
onExitPerformed(target);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ public MidpointSaml2LogoutRequestResolver(InMemoryRelyingPartyRegistrationReposi
private List<RelyingPartyRegistration> createRegistrationsWithFakeKeys(InMemoryRelyingPartyRegistrationRepository relyingPartyRegistrations) {
List<RelyingPartyRegistration> registrations = new ArrayList<>();
relyingPartyRegistrations.forEach(registration -> {
if (registration.getSigningX509Credentials().isEmpty()) {
if (registration.getAssertingPartyDetails() != null
&& !registration.getAssertingPartyDetails().getWantAuthnRequestsSigned()
&& registration.getSigningX509Credentials().isEmpty()) {
LOGGER.debug("Relying party registration with id: " + registration.getRegistrationId()
+ " doesn't contain any singing key. Logout request need sign key for signing of logout request, "
+ "so we try creating fake key and certificate.");
Expand Down Expand Up @@ -189,7 +191,7 @@ private void createFakeKeyForSign(RelyingPartyRegistration.Builder relyingPartyR
private X509v3CertificateBuilder getX509v3CertificateBuilder(RSAPrivateCrtKey privateKey, SubjectPublicKeyInfo subPubKeyInfo) {
Calendar cal = Calendar.getInstance();
Date from = cal.getTime();
cal.add(Calendar.HOUR, 1);
cal.add(Calendar.MINUTE, 10);
Date to = cal.getTime();
X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(
new X500Name("CN=MidPoint,O=Evolveum,L=,C="),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,16 @@

package com.evolveum.midpoint.model.impl.visualizer;

import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;

import com.evolveum.midpoint.util.exception.SchemaException;

import org.springframework.stereotype.Component;

import com.evolveum.midpoint.model.impl.visualizer.output.VisualizationImpl;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
Expand All @@ -43,59 +40,63 @@ public boolean match(VisualizationImpl visualization, VisualizationImpl parentVi
}

if (parentVisualization != null && parentVisualization.getSourceDelta() != null) {
ItemDelta<PrismValue, ItemDefinition<?>> deltaItem = parentVisualization.getSourceDelta().findItemDelta(ItemPath.create(
visualization.getSourceRelPath(), ActivationType.F_EFFECTIVE_STATUS));
try {
if(deltaItem != null && deltaItem.getItemNew() != null && deltaItem.getItemNew().getRealValue() != null) {
return true;
}
} catch (SchemaException e) {
//ignore it and try sourceValue
if (existDelta(visualization, parentVisualization, ActivationType.F_EFFECTIVE_STATUS)) {
return true;
}
if (existDelta(visualization, parentVisualization, ActivationType.F_ADMINISTRATIVE_STATUS)) {
return true;
}
}

if (ActivationType.class.equals(value.getCompileTimeClass())) {
// if there's password
return value.findProperty(ActivationType.F_EFFECTIVE_STATUS) != null;
}

// we're modifying/deleting password
return ActivationType.F_EFFECTIVE_STATUS.equivalent(value.getPath());
return false;
}

private boolean existDelta(VisualizationImpl visualization, VisualizationImpl parentVisualization, ItemName path) {
ActivationStatusType status = getRealValueForDelta(visualization, parentVisualization, path);
if (status != null) {
return true;
}
return false;
}

@Override
public void apply(VisualizationImpl visualization, VisualizationImpl parentVisualization, Task task, OperationResult result) {
ActivationStatusType status = null;
if (parentVisualization != null && parentVisualization.getSourceDelta() != null) {
ItemDelta<PrismValue, ItemDefinition<?>> deltaItem = parentVisualization.getSourceDelta().findItemDelta(ItemPath.create(
visualization.getSourceRelPath(), ActivationType.F_EFFECTIVE_STATUS));
try {
if(deltaItem != null && deltaItem.getItemNew() != null) {
status = (ActivationStatusType) deltaItem.getItemNew().getRealValue();
}
} catch (SchemaException e) {
//ignore it and try sourceValue
}
}

PrismContainerValue<?> value = visualization.getSourceValue();
status = getRealValueForDelta(visualization, parentVisualization, ActivationType.F_EFFECTIVE_STATUS);

if (status == null) {
PrismProperty<ActivationStatusType> effectiveStatus = value.findProperty(ActivationType.F_EFFECTIVE_STATUS);
status = effectiveStatus.getRealValue();
status = getRealValueForDelta(visualization, parentVisualization, ActivationType.F_ADMINISTRATIVE_STATUS);
}

if (status == null) {
return;
}

String typeKey = null;
PrismContainerValue<?> value = visualization.getSourceValue();

PrismContainerValue root = value.getRootValue();
PrismContainerDefinition rootDef = root.getDefinition();
Class clazz = root.getCompileTimeClass();

ItemPath path = value.getPath();
//different as '/activationContainerPath'
if (rootDef != null && path.size() > 1) {
path = path.allExceptLast();
path = path.removeIds();
PrismContainerDefinition findDef = rootDef.findContainerDefinition(path);
if (findDef != null) {
rootDef = findDef;
clazz = findDef.getCompileTimeClass();
}
}

String typeKey;
if (clazz != null && ObjectType.class.isAssignableFrom(clazz)) {
typeKey = "ObjectTypes." + ObjectTypes.getObjectType(clazz).name();
} else {
typeKey = root.getDefinition() != null ? root.getDefinition().getDisplayName() : null;
typeKey = rootDef != null ? rootDef.getDisplayName() : null;
}

if (typeKey == null) {
Expand All @@ -109,4 +110,18 @@ public void apply(VisualizationImpl visualization, VisualizationImpl parentVisua
})
);
}

private ActivationStatusType getRealValueForDelta(
VisualizationImpl visualization, VisualizationImpl parentVisualization, ItemName path) {
ItemDelta<PrismValue, ItemDefinition<?>> deltaItem = parentVisualization.getSourceDelta().findItemDelta(ItemPath.create(
visualization.getSourceRelPath(), path));
try {
if (deltaItem != null && deltaItem.getItemNew() != null) {
return (ActivationStatusType) deltaItem.getItemNew().getRealValue();
}
} catch (SchemaException e) {
//ignore it and try sourceValue
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
<append>true</append>
</appender>
</logging>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<globalSecurityPolicyRef oid="28bf845a-b107-11e3-85bc-001e8c717e5b"/>
<globalPolicyRule>
<name>global-assignment-notification-for-judge</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,7 @@
</mergeConfiguration>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
<recordResourceOids>true</recordResourceOids>
<expression>
<script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
<append>true</append>
</appender>
</logging>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<defaultObjectPolicyConfiguration>
<type>c:RoleType</type>
<objectTemplateRef oid="fc0ace70-688f-11e3-ab09-001e8c717e5b"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3">
<name>SystemConfiguration</name>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<modelHooks>
<change>
<hook>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
<append>true</append>
</appender>
</logging>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<notificationConfiguration>
<handler>
<simpleTaskNotifier>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3">
<name>SystemConfiguration</name>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<simulation>
<metric>
<identifier>nonsense-custom-metric</identifier>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class StartupConfiguration implements MidpointConfiguration {
private static final String FILE_INDIRECTION_SUFFIX = "fileIndirectionSuffix";

private static final String DEFAULT_FILE_INDIRECTION_SUFFIX = "_FILE";
private static final String DEFAULT_CONFIG_FILE_NAME = "config.xml";
public static final String DEFAULT_CONFIG_FILE_NAME = "config.xml";
private static final String LOGBACK_CONFIG_FILENAME = "logback.xml";
private static final String LOGBACK_EXTRA_CONFIG_FILENAME = "logback-extra.xml";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
<append>true</append>
</appender>
</logging>
<audit>
<eventRecording>
<recordResourceStageChanges>false</recordResourceStageChanges>
</eventRecording>
</audit>
<notificationConfiguration>
<handler>
<simpleWorkflowNotifier>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import static com.evolveum.midpoint.common.configuration.api.MidpointConfiguration.REPOSITORY_CONFIGURATION;

import java.io.Closeable;
import java.io.File;
import java.io.PrintStream;
import java.nio.charset.Charset;
import java.util.HashMap;
Expand All @@ -22,9 +23,11 @@

import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.common.configuration.api.MidpointConfiguration;
import com.evolveum.midpoint.init.StartupConfiguration;
import com.evolveum.midpoint.ninja.action.BaseOptions;
import com.evolveum.midpoint.ninja.action.ConnectionOptions;
import com.evolveum.midpoint.ninja.action.PolyStringNormalizerOptions;
import com.evolveum.midpoint.ninja.util.InputParameterException;
import com.evolveum.midpoint.ninja.util.NinjaUtils;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.query.QueryConverter;
Expand Down Expand Up @@ -139,6 +142,8 @@ private synchronized void setupRepositoryViaMidPointHome(ConnectionOptions optio

String midpointHome = options.getMidpointHome();

checkAndWarnMidpointHome(midpointHome);

backupAndUpdateSystemProperty(MidpointConfiguration.MIDPOINT_HOME_PROPERTY, midpointHome);
overrideRepoConfiguration(options);

Expand All @@ -154,6 +159,22 @@ private synchronized void setupRepositoryViaMidPointHome(ConnectionOptions optio
}
}

private void checkAndWarnMidpointHome(String midpointHome) {
if (StringUtils.isEmpty(midpointHome)) {
throw new InputParameterException("Midpoint home " + ConnectionOptions.P_MIDPOINT_HOME + " option expected, but not defined");
}

File file = new File(midpointHome);
if (!file.exists() || !file.isDirectory()) {
throw new InputParameterException("Midpoint home directory '" + midpointHome + "' doesn't exist or is not a directory");
}

File config = new File(file, StartupConfiguration.DEFAULT_CONFIG_FILE_NAME);
if (!config.exists() || config.isDirectory()) {
throw new InputParameterException("Midpoint home config.xml file '" + config.getAbsolutePath() + "' doesn't exist");
}
}

private void backupAndUpdateSystemProperty(String key, String value) {
String oldValue = System.getProperty(key);
systemPropertiesBackup.put(key, oldValue);
Expand Down

0 comments on commit 18cdd12

Please sign in to comment.