adasd
This commit is contained in:
@@ -163,14 +163,16 @@ final class RegistrationService
|
||||
$request['provisioning']['status'] = 'ldap_created_inactive';
|
||||
$request['provisioning']['ldif_path'] = $this->writeLdifDraft($request['id'], $username, $this->ldifBuilder->build($request, $provisioning));
|
||||
} catch (\Throwable $exception) {
|
||||
$errorReference = $this->logProvisioningFailure($request, $provisioning, $exception);
|
||||
$request['password_secret'] = $passwordSecret;
|
||||
$request['status'] = 'provisioning_failed';
|
||||
$request['provisioning']['status'] = 'provisioning_failed';
|
||||
$request['provisioning']['error'] = $exception->getMessage();
|
||||
$request['provisioning']['error_reference'] = $errorReference;
|
||||
|
||||
return [
|
||||
'success' => false,
|
||||
'errors' => ['Die Registrierung konnte im Moment nicht gespeichert werden. Bitte versuche es später erneut.'],
|
||||
'errors' => ['Die Registrierung konnte im Moment nicht gespeichert werden. Bitte versuche es später erneut. Referenz: ' . $errorReference],
|
||||
'request' => $this->store->create($request),
|
||||
];
|
||||
}
|
||||
@@ -379,4 +381,38 @@ final class RegistrationService
|
||||
|
||||
return $this->projectRoot . '/' . ltrim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $request
|
||||
* @param array<string, mixed> $provisioning
|
||||
*/
|
||||
private function logProvisioningFailure(array $request, array $provisioning, \Throwable $exception): string
|
||||
{
|
||||
$reference = 'REG-' . gmdate('YmdHis') . '-' . substr(bin2hex(random_bytes(4)), 0, 8);
|
||||
$path = $this->resolveProjectPath('data/registration-provisioning-errors.log');
|
||||
$directory = dirname($path);
|
||||
|
||||
if (!is_dir($directory)) {
|
||||
mkdir($directory, 0775, true);
|
||||
}
|
||||
|
||||
$payload = [
|
||||
'reference' => $reference,
|
||||
'created_at' => gmdate('c'),
|
||||
'message' => $exception->getMessage(),
|
||||
'username' => (string) ($request['username'] ?? ''),
|
||||
'email' => (string) ($request['email'] ?? ''),
|
||||
'display_name' => (string) ($request['display_name'] ?? ''),
|
||||
'origin' => $request['origin'] ?? [],
|
||||
'provisioning' => $provisioning,
|
||||
];
|
||||
|
||||
file_put_contents(
|
||||
$path,
|
||||
json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . PHP_EOL,
|
||||
FILE_APPEND | LOCK_EX
|
||||
);
|
||||
|
||||
return $reference;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user