asdasdasd
All checks were successful
Deploy / deploy-staging (push) Successful in 24s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-15 21:50:41 +02:00
parent 5408a2bb89
commit 27c0825111
3 changed files with 31 additions and 12 deletions

View File

@@ -61,6 +61,7 @@ return [
'group_assignment_mode' => getenv('LDAP_GROUP_ASSIGNMENT_MODE') ?: 'group_memberuid',
'group_member_attribute' => getenv('LDAP_GROUP_MEMBER_ATTRIBUTE') ?: 'memberUid',
'default_login_shell' => '/bin/sh',
'apple_schema_enabled' => filter_var(getenv('LDAP_APPLE_SCHEMA_ENABLED') ?: 'false', FILTER_VALIDATE_BOOL),
'home_directory_prefix' => '/home',
'uid_number_start' => (int) (getenv('LDAP_UID_NUMBER_START') ?: 1000010),
'gid_number_default' => (int) (getenv('LDAP_GID_NUMBER_DEFAULT') ?: 1000012),

View File

@@ -321,16 +321,14 @@ final class LdapProvisioner
$unixHash = $this->cryptSha512($plainPassword);
$now = time();
$shadowLastChange = (string) floor($now / 86400);
$appleSchemaEnabled = (bool) ($this->config['ldap']['apple_schema_enabled'] ?? false);
return [
$entry = [
'objectClass' => [
'apple-user',
'extensibleObject',
'inetOrgPerson',
'organizationalPerson',
'person',
'posixAccount',
'sambaIdmapEntry',
'sambaSamAccount',
'shadowAccount',
'top',
@@ -342,13 +340,12 @@ final class LdapProvisioner
'sn' => $familyName !== '' ? $familyName : $username,
'uid' => $username,
'uidNumber' => $uidNumber,
'apple-generateduid' => $appleGeneratedUid,
'authAuthority' => ';basic;',
'displayName' => $displayName !== '' ? $displayName : $username,
'gecos' => $gecos,
'givenName' => $givenName,
'loginShell' => $loginShell,
'mail' => $mail,
'pwdLastSet' => '0',
'sambaAcctFlags' => '[U ]',
'sambaLMPassword' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'sambaNTPassword' => $ntHash,
@@ -363,6 +360,15 @@ final class LdapProvisioner
'shadowWarning' => (string) ($this->config['ldap']['shadow_warning'] ?? 7),
'userPassword' => $unixHash,
];
if ($appleSchemaEnabled) {
array_unshift($entry['objectClass'], 'extensibleObject');
array_unshift($entry['objectClass'], 'apple-user');
$entry['apple-generateduid'] = $appleGeneratedUid;
$entry['authAuthority'] = ';basic;';
}
return $entry;
}
/**

View File

@@ -35,6 +35,7 @@ final class RegistrationLdifBuilder
$mail = trim((string) ($request['email'] ?? ''));
$appleGeneratedUid = trim((string) ($provisioning['apple_generateduid'] ?? $this->generateUuidV4()));
$sambaSid = trim((string) ($provisioning['samba_sid'] ?? ''));
$appleSchemaEnabled = (bool) ($this->config['ldap']['apple_schema_enabled'] ?? false);
$shadowExpire = (string) ($this->config['ldap']['shadow_expire'] ?? 1);
$shadowFlag = (string) ($this->config['ldap']['shadow_flag'] ?? 0);
$shadowInactive = (string) ($this->config['ldap']['shadow_inactive'] ?? 0);
@@ -77,16 +78,19 @@ final class RegistrationLdifBuilder
}
$lines[] = 'dn: uid=' . $username . ',' . $usersDn;
$lines[] = 'objectClass: apple-user';
$lines[] = 'objectClass: extensibleObject';
$lines[] = 'objectClass: inetOrgPerson';
$lines[] = 'objectClass: organizationalPerson';
$lines[] = 'objectClass: person';
$lines[] = 'objectClass: posixAccount';
$lines[] = 'objectClass: sambaIdmapEntry';
$lines[] = 'objectClass: sambaSamAccount';
$lines[] = 'objectClass: shadowAccount';
$lines[] = 'objectClass: top';
if ($appleSchemaEnabled) {
$lines[] = 'objectClass: apple-user';
$lines[] = 'objectClass: extensibleObject';
}
$lines[] = 'cn: ' . $cn;
if ($gidNumber !== '') {
@@ -106,9 +110,12 @@ final class RegistrationLdifBuilder
$lines[] = 'uidNumber: ' . $uidNumber;
}
$lines[] = 'displayName: ' . ($displayName !== '' ? $displayName : $username);
if ($appleSchemaEnabled) {
$lines[] = 'apple-generateduid: ' . strtoupper($appleGeneratedUid);
$lines[] = 'authAuthority: ;basic;';
$lines[] = 'displayName: ' . ($displayName !== '' ? $displayName : $username);
}
if ($gecos !== '') {
$lines[] = 'gecos: ' . $gecos;
@@ -125,6 +132,11 @@ final class RegistrationLdifBuilder
$lines[] = 'memberOf: ' . $groupDn;
}
$lines[] = 'pwdLastSet: 0';
$lines[] = 'sambaAcctFlags: [U ]';
$lines[] = 'sambaLMPassword: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$lines[] = 'sambaPasswordHistory: 0000000000000000000000000000000000000000000000000000000000000000';
$lines[] = 'sambaPwdLastSet: 0';
$lines[] = 'shadowExpire: ' . $shadowExpire;
$lines[] = 'shadowFlag: ' . $shadowFlag;
$lines[] = 'shadowInactive: ' . $shadowInactive;