From 69b0235b045f21d8f839c2ea7f9e4a917064014d Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Fri, 28 Jan 2011 13:39:24 +0000
Subject: [PATCH] Fix for OPENDJ-21, make sure password reset or changes with the Password Modify Extended Operation are triggering Account Status Notifications.
---
opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java | 42 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index 0449fa0..169a050 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -23,12 +23,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
+ * Portions Copyright 2011 ForgeRock AS
*/
package org.opends.server.extensions;
+
+
import org.opends.messages.Message;
-
-
-
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -63,6 +63,7 @@
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.ErrorLogger;
import static org.opends.messages.ExtensionMessages.*;
+import static org.opends.messages.CoreMessages.*;
import org.opends.messages.MessageBuilder;
import static org.opends.server.util.ServerConstants.*;
@@ -1132,6 +1133,41 @@
pwPolicyWarningValue,
pwPolicyErrorType));
}
+
+ // Handle Account Status Notifications that may be needed.
+ // They are not handled by the backend for internal operations.
+ List<AttributeValue> currentPasswords = null;
+ if (oldPassword != null)
+ {
+ currentPasswords = new ArrayList<AttributeValue>(1);
+ currentPasswords.add(AttributeValues
+ .create(oldPassword, oldPassword));
+ }
+ List<AttributeValue> newPasswords = null;
+ if (newPassword != null)
+ {
+ newPasswords = new ArrayList<AttributeValue>(1);
+ newPasswords.add(AttributeValues
+ .create(newPassword, newPassword));
+ }
+ if (selfChange)
+ {
+ Message message = INFO_MODIFY_PASSWORD_CHANGED.get();
+ pwPolicyState.generateAccountStatusNotification(
+ AccountStatusNotificationType.PASSWORD_CHANGED,
+ userEntry, message,
+ AccountStatusNotification.createProperties(pwPolicyState, false,
+ -1, currentPasswords, newPasswords));
+ }
+ else
+ {
+ Message message = INFO_MODIFY_PASSWORD_RESET.get();
+ pwPolicyState.generateAccountStatusNotification(
+ AccountStatusNotificationType.PASSWORD_RESET,
+ userEntry, message,
+ AccountStatusNotification.createProperties(pwPolicyState, false,
+ -1, currentPasswords, newPasswords));
+ }
}
}
finally
--
Gitblit v1.10.0