From 29470252a6a8f67c545f347909cc49373cb95488 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Tue, 5 Dec 2023 16:12:59 +0000
Subject: [PATCH] :sparkles: Feat(userManagement) - adds a refresh of plugins

Adds a refresh of plugins on user lock.
Allowing zimbra to directly update its account status.

Adds BCC
---
 plugins/admin/users/class_userManagement.inc | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 041dc47ae..872358618 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -27,11 +27,11 @@ class userManagement extends management
 
   public static $columns = [
     ['ObjectTypeColumn', []],
-    ['LinkColumn',       ['attributes' => 'sn',        'label' => 'Last name']],
-    ['LinkColumn',       ['attributes' => 'givenName', 'label' => 'First name']],
-    ['Column',           ['attributes' => 'uid',       'label' => 'Login']],
+    ['LinkColumn', ['attributes' => 'sn', 'label' => 'Last name']],
+    ['LinkColumn', ['attributes' => 'givenName', 'label' => 'First name']],
+    ['Column', ['attributes' => 'uid', 'label' => 'Login']],
     ['PropertiesColumn', ['label' => 'Properties']],
-    ['ActionsColumn',    ['label' => 'Actions']],
+    ['ActionsColumn', ['label' => 'Actions']],
   ];
 
   static function plInfo (): array
@@ -93,6 +93,10 @@ class userManagement extends management
 
       // Detect the password method and try to lock/unlock.
       static::lockUser($action['subaction'], ($entry['userPassword'][0] ?? ''), $dn);
+
+      // Small procedure in order to re-open the user in order to trigger plugins to update accordingly.
+      $userObject = objects::open($dn, 'user');
+      $userObject->save();
     }
   }
 
@@ -105,7 +109,7 @@ class userManagement extends management
   static function lockUser (string $action, string $pwd, string $dn)
   {
     $method = passwordMethod::get_method($pwd, $dn);
-    if ($method instanceOf passwordMethod) {
+    if ($method instanceof passwordMethod) {
       if (!$method->is_lockable()) {
         $hn = $method->get_hash_name();
         if (is_array($hn)) {
-- 
GitLab