From b9825e6b78b43102b06856c88386cdb1e8fb28b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Mon, 23 Aug 2021 14:39:12 +0200
Subject: [PATCH] :sparkles: feat(core) Add an option whether givenName should
 be required

issue #6181
---
 contrib/openldap/core-fd-conf.schema    | 8 +++++++-
 plugins/config/class_configInLdap.inc   | 6 ++++++
 plugins/personal/generic/class_user.inc | 2 +-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/contrib/openldap/core-fd-conf.schema b/contrib/openldap/core-fd-conf.schema
index b135d1291..614a7923a 100644
--- a/contrib/openldap/core-fd-conf.schema
+++ b/contrib/openldap/core-fd-conf.schema
@@ -161,6 +161,12 @@ attributetype ( 1.3.6.1.4.1.38414.8.12.22 NAME 'fdMaxAvatarSize'
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
   SINGLE-VALUE)
 
+attributetype ( 1.3.6.1.4.1.38414.8.12.23 NAME 'fdGivenNameRequired'
+  DESC 'FusionDirectory - Whether givenName field is required on users'
+  EQUALITY booleanMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
+  SINGLE-VALUE )
+
 # Password
 
 attributetype ( 1.3.6.1.4.1.38414.8.13.1 NAME 'fdPasswordDefaultHash'
@@ -610,7 +616,7 @@ objectclass ( 1.3.6.1.4.1.38414.8.2.1 NAME 'fusionDirectoryConf'
     fdGidNumberBase $ fdUserRDN $ fdGroupRDN $ fdIdAllocationMethod $
     fdGidNumberPoolMin $ fdUidNumberPoolMin $ fdGidNumberPoolMax $ fdUidNumberPoolMax $
     fdAclRoleRDN $ fdCnPattern $ fdRestrictRoleMembers $
-    fdSplitPostalAddress $ fdPostalAddressPattern $ fdMaxAvatarSize $
+    fdSplitPostalAddress $ fdPostalAddressPattern $ fdMaxAvatarSize $ fdGivenNameRequired $
     fdPasswordDefaultHash $ fdPasswordMinLength $ fdPasswordMinDiffer $
     fdHandleExpiredAccounts $ fdSaslRealm $ fdSaslExop $
     fdForcePasswordDefaultHash $ fdPasswordAllowedHashes $
diff --git a/plugins/config/class_configInLdap.inc b/plugins/config/class_configInLdap.inc
index 109595202..bf2028d55 100644
--- a/plugins/config/class_configInLdap.inc
+++ b/plugins/config/class_configInLdap.inc
@@ -263,6 +263,12 @@ class configInLdap extends simplePlugin
             'fdCnPattern', TRUE,
             '%givenName% %sn%'
           ),
+          new BooleanAttribute(
+            _('Mandatory first name'),
+            _('Whether first name (givenName) should be a mandatory field on users'),
+            'fdGivenNameRequired', FALSE,
+            TRUE
+          ),
           new BooleanAttribute(
             _('Strict naming policy'),
             _('Enables strict checking of user and group names'),
diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc
index 0cd564ba0..25e7ea158 100644
--- a/plugins/personal/generic/class_user.inc
+++ b/plugins/personal/generic/class_user.inc
@@ -96,7 +96,7 @@ class user extends simplePlugin
           ),
           new StringAttribute(
             _('First name'), _('First name of this user'),
-            'givenName', TRUE,
+            'givenName', ($config->get_cfg_value('GivenNameRequired', 'TRUE') === 'TRUE'),
             '', '', '/^[^,+"?()=<>;\\\\]+$/'
           ),
           new StringAttribute(
-- 
GitLab