develop (#28)
Co-authored-by: tg95 <tg95@noreply.localhost> Co-authored-by: Taarly <lownslow.music@gmail.com> Co-authored-by: taarly <lownslow.music@gmail.com> Co-authored-by: ViperioN1339 <stezel1989@outlook.de> Co-authored-by: MuchenTuchen31 <yasin.mine31@gmail.com> Reviewed-on: https://git.eckertplayground.de/taarly/PHP_AdminTool_Projekt/pulls/28 Co-authored-by: blaerf <blaerf@gmx.de> Co-committed-by: blaerf <blaerf@gmx.de>
This commit is contained in:
parent
7911740ad9
commit
9f0e534e20
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,3 +3,5 @@
|
||||
/.vscode/
|
||||
/storage/
|
||||
/config.php
|
||||
/phpdoc.xml
|
||||
/tools/
|
||||
|
||||
31
README.md
31
README.md
@ -69,6 +69,8 @@ Der komplette Ablauf ist im [Gitea-Workflow](https://git.eckertplayground.de/taa
|
||||
| UI/UX anpassen | Yasin B (@Muchentuchen), Alexander M (@Alexander) |
|
||||
| Blackbox Testing | Torsten J (@tojacobs) |
|
||||
|
||||
**Hinweis:** Die Passwortanforderungen (Mindestlänge, Kategorien, keine Teile des Benutzernamens) werden beim Erstellen validiert. Die Validierung ist in `scripts/powershell/create_users_csv.ps1` implementiert und die Mockup-UI (`docs/Mockup/index.html`) zeigt die Anforderungen und prüft sie clientseitig.
|
||||
|
||||
---
|
||||
|
||||
## Dokumentation
|
||||
@ -82,6 +84,35 @@ Dieser Bereich muss von allen Entwicklern gelesen werden, bevor am Projekt gearb
|
||||
|
||||
---
|
||||
|
||||
## PowerShell Integration (Benutzererstellung)
|
||||
|
||||
Die Weboberfläche nutzt PowerShell-Skripte, um Active Directory Benutzer anzulegen. Damit dies funktioniert, sind folgende Voraussetzungen erforderlich:
|
||||
|
||||
- Der Webserver läuft auf Windows und PHP kann PowerShell ausführen (`powershell` oder `pwsh`).
|
||||
- Die PowerShell-Module `ActiveDirectory` müssen installiert (RSAT) und verfügbar sein.
|
||||
- Der Benutzer, unter dem der Webserver läuft, muss ausreichende Rechte besitzen, um `New-ADUser` und `Add-ADGroupMember` auszuführen.
|
||||
- Im `config/config.php` kann `powershell.dry_run` auf `true` gesetzt werden, um Tests ohne Änderungen durchzuführen.
|
||||
|
||||
Konfigurationsoptionen (in `config/config.php`):
|
||||
- `powershell.exe`: Name oder Pfad zur PowerShell-Executable (standard `powershell`).
|
||||
- `powershell.script_dir`: Pfad zu den PowerShell-Skripten (standard `scripts/powershell`).
|
||||
- `powershell.execution_policy`: Auszuführende ExecutionPolicy (z. B. `Bypass`).
|
||||
- `powershell.dry_run`: Wenn `true`, werden keine echten AD-Änderungen durchgeführt; das Skript meldet nur, was es tun würde.
|
||||
|
||||
Die grundlegende Funktionalität wurde mit folgenden Komponenten implementiert:
|
||||
- `public/api/create_user.php`: API-Endpoint zur Erstellung eines einzelnen Benutzers.
|
||||
- `public/api/create_users_csv.php`: API-Endpoint zur Erstellung mehrerer Benutzer aus CSV.
|
||||
- `scripts/powershell/create_user.ps1`: PowerShell-Skript zum Erstellen eines einzelnen Benutzers.
|
||||
- `scripts/powershell/create_users_csv.ps1`: PowerShell-Skript zum Erstellen mehrerer Benutzer aus CSV.
|
||||
|
||||
- `scripts/powershell/check_environment.ps1`: Prüft, ob `ActiveDirectory`-Modul vorhanden ist und zeigt die ausführende Identität an.
|
||||
|
||||
API endpoints:
|
||||
- `public/api/powershell_check.php`: Ruft `check_environment.ps1` auf und gibt ein JSON-Objekt mit `actor`, `module_installed`, `can_new_aduser` zurück.
|
||||
|
||||
Bitte testen zuerst mit `powershell.dry_run = true` und prüfen sie die resultierenden Meldungen in UI.
|
||||
|
||||
|
||||
## Mitwirken
|
||||
|
||||
Wer etwas ändern oder erweitern möchte:
|
||||
|
||||
123
app/Controllers/LogViewerController.php
Normal file
123
app/Controllers/LogViewerController.php
Normal file
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use App\Services\Logging\LoggingService;
|
||||
use App\Services\Logging\LogViewerService;
|
||||
|
||||
/**
|
||||
* Controller für den Log Viewer (read-only).
|
||||
*/
|
||||
class LogViewerController
|
||||
{
|
||||
/** @var array<string, mixed> */
|
||||
private array $config;
|
||||
|
||||
private LoggingService $logger;
|
||||
private LogViewerService $logViewer;
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $config
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
{
|
||||
$this->config = $config;
|
||||
|
||||
$loggingConfig = $config['logging'] ?? [];
|
||||
$this->logger = new LoggingService($loggingConfig);
|
||||
$this->logViewer = new LogViewerService($loggingConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeigt den Log Viewer an.
|
||||
*
|
||||
* Erwartet optionale GET-Parameter:
|
||||
* - file (Dateiname, z.B. app.log)
|
||||
* - level (DEBUG|INFO|WARNING|ERROR)
|
||||
* - q (Suche)
|
||||
* - lines (Anzahl Zeilen, Default 200)
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function show(): array
|
||||
{
|
||||
$files = $this->logViewer->listLogFiles();
|
||||
|
||||
$selectedFile = (string)($_GET['file'] ?? '');
|
||||
if ($selectedFile === '' && isset($files[0]['name'])) {
|
||||
$selectedFile = (string)$files[0]['name'];
|
||||
}
|
||||
|
||||
$level = (string)($_GET['level'] ?? '');
|
||||
$level = strtoupper(trim($level));
|
||||
if ($level === '') {
|
||||
$level = '';
|
||||
}
|
||||
|
||||
$q = (string)($_GET['q'] ?? '');
|
||||
$q = trim($q);
|
||||
|
||||
$lines = (int)($_GET['lines'] ?? 200);
|
||||
if ($lines <= 0) {
|
||||
$lines = 200;
|
||||
}
|
||||
if ($lines > 2000) {
|
||||
$lines = 2000;
|
||||
}
|
||||
|
||||
$error = null;
|
||||
$fileMeta = null;
|
||||
$entries = [];
|
||||
|
||||
try {
|
||||
if ($selectedFile !== '') {
|
||||
$fileMeta = $this->logViewer->getFileMeta($selectedFile);
|
||||
$entries = $this->logViewer->getEntries(
|
||||
$selectedFile,
|
||||
$lines,
|
||||
$level !== '' ? $level : null,
|
||||
$q !== '' ? $q : null
|
||||
);
|
||||
|
||||
if ($fileMeta === null) {
|
||||
$error = 'Die ausgewählte Log-Datei ist nicht verfügbar.';
|
||||
$entries = [];
|
||||
}
|
||||
} else {
|
||||
$error = 'Es wurde keine Log-Datei gefunden.';
|
||||
}
|
||||
} catch (\Throwable $ex) {
|
||||
$this->logger->logException(
|
||||
'LogViewerController: Fehler beim Laden der Logs.',
|
||||
$ex,
|
||||
[
|
||||
'route' => 'logs',
|
||||
'file' => $selectedFile,
|
||||
]
|
||||
);
|
||||
|
||||
$error = 'Technischer Fehler beim Laden der Logs. Details stehen im app.log.';
|
||||
}
|
||||
|
||||
$viewPath = __DIR__ . '/../../public/views/logs.php';
|
||||
|
||||
return [
|
||||
'view' => $viewPath,
|
||||
'data' => [
|
||||
'loginPage' => false,
|
||||
'files' => $files,
|
||||
'selectedFile' => $selectedFile,
|
||||
'fileMeta' => $fileMeta,
|
||||
'entries' => $entries,
|
||||
'filterLevel' => $level,
|
||||
'searchQuery' => $q,
|
||||
'lines' => $lines,
|
||||
'error' => $error,
|
||||
],
|
||||
'pageTitle' => 'Logs',
|
||||
'activeMenu' => 'logs',
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -100,4 +100,49 @@ class UserManagementController
|
||||
'activeMenu' => 'users',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeigt die Seite zum Erstellen von Benutzern (Einzel/CSV).
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function create(): array
|
||||
{
|
||||
$viewPath = __DIR__ . '/../../public/views/createuser.php';
|
||||
|
||||
// Use session flash messages if available
|
||||
$error = null;
|
||||
$success = null;
|
||||
if (session_status() !== PHP_SESSION_ACTIVE) {
|
||||
@session_start();
|
||||
}
|
||||
if (isset($_SESSION['flash_error'])) {
|
||||
$error = $_SESSION['flash_error'];
|
||||
unset($_SESSION['flash_error']);
|
||||
}
|
||||
if (isset($_SESSION['flash_success'])) {
|
||||
$success = $_SESSION['flash_success'];
|
||||
unset($_SESSION['flash_success']);
|
||||
}
|
||||
$csvDetails = null;
|
||||
if (isset($_SESSION['csv_details'])) {
|
||||
$csvDetails = $_SESSION['csv_details'];
|
||||
unset($_SESSION['csv_details']);
|
||||
}
|
||||
|
||||
$powershellDryRun = $this->config['powershell']['dry_run'] ?? false;
|
||||
|
||||
return [
|
||||
'view' => $viewPath,
|
||||
'data' => [
|
||||
'error' => $error,
|
||||
'success' => $success,
|
||||
'loginPage' => false,
|
||||
'csvDetails' => $csvDetails,
|
||||
'powershellDryRun' => $powershellDryRun,
|
||||
],
|
||||
'pageTitle' => 'Benutzer erstellen',
|
||||
'activeMenu' => 'createuser',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
319
app/Services/Logging/LogViewerService.php
Normal file
319
app/Services/Logging/LogViewerService.php
Normal file
@ -0,0 +1,319 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Services\Logging;
|
||||
|
||||
/**
|
||||
* LogViewerService
|
||||
*
|
||||
* - Listet Log-Dateien im konfigurierten Logging-Verzeichnis.
|
||||
* - Liest performant die letzten N Zeilen (Tail), ohne komplette Datei zu laden.
|
||||
* - Parst das LoggingService-Format:
|
||||
* "[YYYY-MM-DD HH:MM:SS] LEVEL message {json}"
|
||||
*/
|
||||
class LogViewerService
|
||||
{
|
||||
private string $logDir;
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $loggingConfig Teilkonfiguration "logging" aus config.php
|
||||
*/
|
||||
public function __construct(array $loggingConfig)
|
||||
{
|
||||
$baseDir = $loggingConfig['log_dir'] ?? (__DIR__ . '/../../../public/logs');
|
||||
$this->logDir = rtrim((string)$baseDir, DIRECTORY_SEPARATOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, array{name:string, size:int, mtime:int}>
|
||||
*/
|
||||
public function listLogFiles(): array
|
||||
{
|
||||
$result = [];
|
||||
|
||||
if (is_dir($this->logDir) === false) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$entries = @scandir($this->logDir);
|
||||
if ($entries === false) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
foreach ($entries as $name) {
|
||||
if ($name === '.' || $name === '..') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Nur normale Dateien, keine Unterordner.
|
||||
$fullPath = $this->logDir . DIRECTORY_SEPARATOR . $name;
|
||||
if (is_file($fullPath) === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Safety: nur "logartige" Dateien anzeigen.
|
||||
$lower = strtolower($name);
|
||||
if (
|
||||
str_ends_with($lower, '.log') === false
|
||||
&& str_ends_with($lower, '.txt') === false
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$size = @filesize($fullPath);
|
||||
$mtime = @filemtime($fullPath);
|
||||
|
||||
$result[] = [
|
||||
'name' => $name,
|
||||
'size' => is_int($size) ? $size : 0,
|
||||
'mtime' => is_int($mtime) ? $mtime : 0,
|
||||
];
|
||||
}
|
||||
|
||||
// Neueste zuerst
|
||||
usort(
|
||||
$result,
|
||||
static function (array $a, array $b): int {
|
||||
return ($b['mtime'] ?? 0) <=> ($a['mtime'] ?? 0);
|
||||
}
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert Metadaten zur ausgewählten Datei (oder null wenn ungültig).
|
||||
*
|
||||
* @return array{name:string, size:int, mtime:int}|null
|
||||
*/
|
||||
public function getFileMeta(string $fileName): ?array
|
||||
{
|
||||
$path = $this->resolveLogFilePath($fileName);
|
||||
if ($path === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$size = @filesize($path);
|
||||
$mtime = @filemtime($path);
|
||||
|
||||
return [
|
||||
'name' => basename($path),
|
||||
'size' => is_int($size) ? $size : 0,
|
||||
'mtime' => is_int($mtime) ? $mtime : 0,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fileName
|
||||
* @param int $maxLines
|
||||
* @param string|null $levelFilter z.B. "ERROR"|"WARNING"|"INFO"|"DEBUG"|null
|
||||
* @param string|null $search Freitextsuche in message/context/raw
|
||||
*
|
||||
* @return array<int, array{
|
||||
* ts:string|null,
|
||||
* level:string|null,
|
||||
* message:string,
|
||||
* context:array<string,mixed>|null,
|
||||
* raw:string
|
||||
* }>
|
||||
*/
|
||||
public function getEntries(string $fileName, int $maxLines = 200, ?string $levelFilter = null, ?string $search = null): array
|
||||
{
|
||||
$path = $this->resolveLogFilePath($fileName);
|
||||
if ($path === null) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$lines = $this->tailLines($path, $maxLines);
|
||||
|
||||
$entries = [];
|
||||
foreach ($lines as $line) {
|
||||
$parsed = $this->parseLine($line);
|
||||
|
||||
if ($levelFilter !== null && $levelFilter !== '') {
|
||||
$lvl = strtoupper((string)($parsed['level'] ?? ''));
|
||||
if ($lvl !== strtoupper($levelFilter)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ($search !== null && $search !== '') {
|
||||
$haystack = $parsed['raw'] . ' ' . $parsed['message'];
|
||||
|
||||
if (is_array($parsed['context'])) {
|
||||
$haystack .= ' ' . (string)json_encode($parsed['context'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
}
|
||||
|
||||
if (mb_stripos($haystack, $search) === false) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$entries[] = $parsed;
|
||||
}
|
||||
|
||||
return $entries;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null Vollständiger Pfad oder null, wenn ungültig/Traversal
|
||||
*/
|
||||
private function resolveLogFilePath(string $fileName): ?string
|
||||
{
|
||||
$fileName = trim($fileName);
|
||||
if ($fileName === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Keine Pfade erlauben, nur Dateiname
|
||||
$fileName = basename($fileName);
|
||||
|
||||
$candidate = $this->logDir . DIRECTORY_SEPARATOR . $fileName;
|
||||
|
||||
$realDir = realpath($this->logDir);
|
||||
$realFile = realpath($candidate);
|
||||
|
||||
if ($realDir === false || $realFile === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Muss innerhalb des Log-Verzeichnisses liegen
|
||||
$realDirNorm = rtrim($realDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
|
||||
$realFileNorm = $realFile;
|
||||
|
||||
if (str_starts_with($realFileNorm, $realDirNorm) === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (is_file($realFileNorm) === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $realFileNorm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tail-Implementierung: liest die letzten $maxLines Zeilen.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
private function tailLines(string $filePath, int $maxLines): array
|
||||
{
|
||||
$maxLines = max(1, min(2000, $maxLines));
|
||||
|
||||
$fh = @fopen($filePath, 'rb');
|
||||
if ($fh === false) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$chunkSize = 8192;
|
||||
$buffer = '';
|
||||
$pos = -1;
|
||||
$linesFound = 0;
|
||||
|
||||
// ans Ende springen
|
||||
@fseek($fh, 0, SEEK_END);
|
||||
$fileSize = (int)@ftell($fh);
|
||||
if ($fileSize <= 0) {
|
||||
@fclose($fh);
|
||||
return [];
|
||||
}
|
||||
|
||||
while ($linesFound <= $maxLines && -$pos < $fileSize) {
|
||||
$readSize = $chunkSize;
|
||||
if (-$pos + $chunkSize > $fileSize) {
|
||||
$readSize = $fileSize - (-$pos);
|
||||
}
|
||||
|
||||
@fseek($fh, $pos - $readSize + 1, SEEK_END);
|
||||
$chunk = (string)@fread($fh, $readSize);
|
||||
|
||||
$buffer = $chunk . $buffer;
|
||||
$linesFound = substr_count($buffer, "\n");
|
||||
|
||||
$pos -= $readSize;
|
||||
}
|
||||
|
||||
@fclose($fh);
|
||||
|
||||
$lines = preg_split("/\r\n|\n|\r/", $buffer);
|
||||
if (is_array($lines) === false) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// ggf. letzte leere Zeile raus
|
||||
if (end($lines) === '') {
|
||||
array_pop($lines);
|
||||
}
|
||||
|
||||
// letzte maxLines
|
||||
$lines = array_slice($lines, -$maxLines);
|
||||
|
||||
// Leere Zeilen am Anfang/Ende tolerieren, aber nicht komplett aufblasen
|
||||
$clean = [];
|
||||
foreach ($lines as $line) {
|
||||
$line = (string)$line;
|
||||
if ($line === '') {
|
||||
continue;
|
||||
}
|
||||
$clean[] = $line;
|
||||
}
|
||||
|
||||
return $clean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array{
|
||||
* ts:string|null,
|
||||
* level:string|null,
|
||||
* message:string,
|
||||
* context:array<string,mixed>|null,
|
||||
* raw:string
|
||||
* }
|
||||
*/
|
||||
private function parseLine(string $line): array
|
||||
{
|
||||
$raw = $line;
|
||||
|
||||
$ts = null;
|
||||
$level = null;
|
||||
$message = $line;
|
||||
$context = null;
|
||||
|
||||
// Basis: [timestamp] LEVEL ...
|
||||
if (preg_match('/^\[(?<ts>[0-9\-:\s]{19})\]\s+(?<lvl>[A-Z]+)\s+(?<rest>.*)$/', $line, $m) === 1) {
|
||||
$ts = (string)$m['ts'];
|
||||
$level = (string)$m['lvl'];
|
||||
$rest = (string)$m['rest'];
|
||||
|
||||
// Versuch: Context ist am Ende ein JSON-Objekt, das mit "{" beginnt und mit "}" endet.
|
||||
$ctxCandidate = null;
|
||||
|
||||
$lastBracePos = strrpos($rest, '{');
|
||||
if ($lastBracePos !== false) {
|
||||
$maybeJson = substr($rest, $lastBracePos);
|
||||
$maybeJson = trim($maybeJson);
|
||||
|
||||
if ($maybeJson !== '' && str_starts_with($maybeJson, '{') && str_ends_with($maybeJson, '}')) {
|
||||
$decoded = json_decode($maybeJson, true);
|
||||
if (is_array($decoded)) {
|
||||
$ctxCandidate = $decoded;
|
||||
$rest = trim(substr($rest, 0, $lastBracePos));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$context = $ctxCandidate;
|
||||
$message = $rest;
|
||||
}
|
||||
|
||||
return [
|
||||
'ts' => $ts,
|
||||
'level' => $level,
|
||||
'message' => $message,
|
||||
'context' => $context,
|
||||
'raw' => $raw,
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -67,7 +67,12 @@ class SnmpServerStatusService
|
||||
// Hilfsfunktion: SNMP-Werte bereinigen (z.B. "INTEGER: 123" -> 123)
|
||||
$cleanSnmpValue = fn($v) => (int)filter_var($v, FILTER_SANITIZE_NUMBER_INT);
|
||||
|
||||
// --- 2. Uptime abfragen ---
|
||||
// --- 2. Hostname abfragen (dynamisch, nicht hardcoded) ---
|
||||
$hostnameOid = $oids['hostname'] ?? '1.3.6.1.2.1.1.5.0'; // sysName OID
|
||||
$hostnameResult = @snmpget($host, $community, $hostnameOid, $timeout, $retries);
|
||||
$hostnameFromSnmp = $hostnameResult ? trim(str_ireplace('STRING:', '', $hostnameResult), ' "') : $host;
|
||||
|
||||
// --- 3. Uptime abfragen ---
|
||||
$uptimeOid = $oids['uptime'] ?? '1.3.6.1.2.1.1.3.0';
|
||||
$uptimeResult = @snmpget($host, $community, $uptimeOid, $timeout, $retries);
|
||||
if ($uptimeResult === false) {
|
||||
@ -86,7 +91,7 @@ class SnmpServerStatusService
|
||||
(int)($uptimeSeconds % 60)
|
||||
);
|
||||
|
||||
// --- 3. CPU (Durchschnitt über alle Kerne) ---
|
||||
// --- 4. CPU (Durchschnitt über alle Kerne) ---
|
||||
$cpuTable = $oids['cpu_table'] ?? '1.3.6.1.2.1.25.3.3.1.2';
|
||||
$cpuValues = @snmpwalk($host, $community, $cpuTable, $timeout, $retries);
|
||||
|
||||
@ -97,7 +102,7 @@ class SnmpServerStatusService
|
||||
$cpuValues = array_map($cleanSnmpValue, $cpuValues);
|
||||
$cpuAvg = (int)round(array_sum($cpuValues) / count($cpuValues));
|
||||
|
||||
// --- 4. Storage-Tabellen (RAM + Disks) ---
|
||||
// --- 5. Storage-Tabellen (RAM + Disks) ---
|
||||
$descrOid = $oids['storage_descr'] ?? '1.3.6.1.2.1.25.2.3.1.3';
|
||||
$unitsOid = $oids['storage_units'] ?? '1.3.6.1.2.1.25.2.3.1.4';
|
||||
$sizeOid = $oids['storage_size'] ?? '1.3.6.1.2.1.25.2.3.1.5';
|
||||
@ -118,7 +123,7 @@ class SnmpServerStatusService
|
||||
$size = array_map($cleanSnmpValue, $size);
|
||||
$used = array_map($cleanSnmpValue, $used);
|
||||
|
||||
// --- 5. RAM mit Fallback-Logik ---
|
||||
// --- 6. RAM mit Fallback-Logik ---
|
||||
$ramPercent = null;
|
||||
$memTotalBytes = null;
|
||||
|
||||
@ -163,7 +168,7 @@ class SnmpServerStatusService
|
||||
throw new RuntimeException("Konnte 'Physical Memory' in der SNMP Storage-Tabelle nicht finden.");
|
||||
}
|
||||
|
||||
// --- 6. Disk C: / Root mit Fallback-Logik ---
|
||||
// --- 7. Disk C: / Root mit Fallback-Logik ---
|
||||
$diskCPercent = null;
|
||||
|
||||
// Heuristik 1: Suche nach C:\
|
||||
@ -212,9 +217,9 @@ class SnmpServerStatusService
|
||||
throw new RuntimeException("Konnte Laufwerk 'C:\\' oder Root-Partition in der SNMP Storage-Tabelle nicht finden.");
|
||||
}
|
||||
|
||||
// --- 7. Status-Array zusammenbauen ---
|
||||
// --- 8. Status-Array zusammenbauen ---
|
||||
$status = [
|
||||
'hostname' => $host,
|
||||
'hostname' => $hostnameFromSnmp,
|
||||
'os' => 'Windows Server', // TODO: OS dynamisch per SNMP abfragen (OID 1.3.6.1.2.1.1.1.0)
|
||||
'uptime' => $uptimeFormatted,
|
||||
'cpu_usage' => $cpuAvg,
|
||||
|
||||
@ -36,6 +36,7 @@ return [
|
||||
|
||||
// Platzhalter für OIDs – später können wir die auf echte Werte setzen
|
||||
'oids' => [
|
||||
'hostname' => '1.3.6.1.2.1.1.5.0', // sysName - Hostname des Servers
|
||||
'uptime' => '1.3.6.1.2.1.1.3.0',
|
||||
|
||||
// CPU pro Kern
|
||||
@ -59,4 +60,16 @@ return [
|
||||
// Minimale Stufe: debug, info, warning, error
|
||||
'min_level' => 'info',
|
||||
],
|
||||
'powershell' => [
|
||||
// Executable name: 'powershell' on Windows, 'pwsh' for PowerShell core.
|
||||
'exe' => 'powershell',
|
||||
// Script directory where the PS1 scripts live (relative to config dir)
|
||||
'script_dir' => __DIR__ . '/../scripts/powershell',
|
||||
// Execution policy to pass to the PowerShell invocation
|
||||
'execution_policy' => 'Bypass',
|
||||
// Default OU. IIS only has write access there.
|
||||
'default_ou' => 'OU=WebAppUsers,DC=ITFA-PROJ-DOM,DC=local',
|
||||
// For testing; if true, the scripts will run in dry-run mode (no real AD changes)
|
||||
'dry_run' => false,
|
||||
],
|
||||
];
|
||||
|
||||
@ -262,6 +262,10 @@
|
||||
|
||||
background-color: var(--color-secondary);
|
||||
}
|
||||
|
||||
/* Password hint and invalid input styles */
|
||||
.password-hint { display:block; margin-top: 6px; font-size: 0.9rem; color: #6c757d; }
|
||||
.invalid { border: 1px solid #c0152f; background-color: rgba(192,21,47,0.04); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@ -280,6 +284,7 @@
|
||||
<div class="form-group">
|
||||
<label for="password">Passwort</label>
|
||||
<input type="password" id="password" name="password" required>
|
||||
<small class="text-muted password-hint">Das Passwort muss mindestens 7 Zeichen lang sein, darf keine größeren Teile des Benutzernamens enthalten und muss Zeichen aus mindestens 3 von 4 Kategorien enthalten: Großbuchstaben, Kleinbuchstaben, Ziffern, Sonderzeichen.</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
@ -377,14 +382,60 @@
|
||||
}
|
||||
}
|
||||
|
||||
function validatePasswordJS(password, sam) {
|
||||
const errors = [];
|
||||
if (!password || password.length < 7) {
|
||||
errors.push('Passwort muss mindestens 7 Zeichen lang sein.');
|
||||
}
|
||||
let categories = 0;
|
||||
if (/[A-Z]/.test(password)) categories++;
|
||||
if (/[a-z]/.test(password)) categories++;
|
||||
if (/\d/.test(password)) categories++;
|
||||
if (/[^A-Za-z0-9]/.test(password)) categories++;
|
||||
if (categories < 3) {
|
||||
errors.push('Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten.');
|
||||
}
|
||||
if (sam) {
|
||||
const pwLower = password.toLowerCase();
|
||||
const samLower = sam.toLowerCase();
|
||||
if (pwLower.includes(samLower)) {
|
||||
errors.push('Passwort darf den Benutzernamen nicht enthalten.');
|
||||
} else {
|
||||
const minLen = 4;
|
||||
if (samLower.length >= minLen) {
|
||||
outer: for (let len = minLen; len <= samLower.length; len++) {
|
||||
for (let s = 0; s <= samLower.length - len; s++) {
|
||||
const sub = samLower.substr(s, len);
|
||||
if (pwLower.includes(sub)) {
|
||||
errors.push('Passwort darf keine größeren Teile des Benutzernamens enthalten.');
|
||||
break outer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
||||
document.getElementById('adForm').addEventListener('submit', (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const firstname = document.getElementById('firstname').value.trim();
|
||||
const lastname = document.getElementById('lastname').value.trim();
|
||||
const samGuess = (firstname + lastname).replace(/\s+/g, '');
|
||||
const password = document.getElementById('password').value;
|
||||
const pwErrors = validatePasswordJS(password, samGuess);
|
||||
if (pwErrors.length > 0) {
|
||||
alert('Passwort ungültig:\n' + pwErrors.join('\n'));
|
||||
return;
|
||||
}
|
||||
|
||||
const formData = {
|
||||
firstname: document.getElementById('firstname').value,
|
||||
lastname: document.getElementById('lastname').value,
|
||||
firstname: firstname,
|
||||
lastname: lastname,
|
||||
group: document.getElementById('group').value,
|
||||
password: document.getElementById('password').value,
|
||||
password: password,
|
||||
customFields: {}
|
||||
};
|
||||
|
||||
@ -442,6 +493,9 @@
|
||||
|
||||
// Datenzeilen erstellen (mit editierbaren Inputs)
|
||||
tableBody.innerHTML = '';
|
||||
const pwdHeaderIndex = headers.findIndex(h => /pass(word)?/i.test(h));
|
||||
const samHeaderIndex = headers.findIndex(h => /(sam(accountname)?)|samaccountname/i.test(h));
|
||||
let foundInvalid = false;
|
||||
for (let i = 1; i < csvData.length; i++) {
|
||||
const row = csvData[i];
|
||||
const tr = document.createElement('tr');
|
||||
@ -454,6 +508,10 @@
|
||||
input.dataset.col = index;
|
||||
input.addEventListener('input', (e) => {
|
||||
csvData[i][index] = e.target.value;
|
||||
// live re-validate if this is password or sam column
|
||||
if (index === pwdHeaderIndex || index === samHeaderIndex) {
|
||||
validateCsvPasswords(headers);
|
||||
}
|
||||
});
|
||||
td.appendChild(input);
|
||||
tr.appendChild(td);
|
||||
@ -461,10 +519,53 @@
|
||||
tableBody.appendChild(tr);
|
||||
}
|
||||
|
||||
// Validate password column if present
|
||||
function validateCsvPasswords(headersLocal) {
|
||||
const pwdIdx = pwdHeaderIndex;
|
||||
const samIdx = samHeaderIndex;
|
||||
foundInvalid = false;
|
||||
// Clear previous highlights/messages
|
||||
const rows = tableBody.querySelectorAll('tr');
|
||||
rows.forEach((r, idx) => {
|
||||
r.querySelectorAll('input').forEach(inp => inp.classList.remove('invalid'));
|
||||
});
|
||||
|
||||
if (pwdIdx >= 0) {
|
||||
for (let r = 0; r < rows.length; r++) {
|
||||
const inputs = rows[r].querySelectorAll('input');
|
||||
const pwdVal = inputs[pwdIdx] ? inputs[pwdIdx].value : '';
|
||||
const samVal = (samIdx >= 0 && inputs[samIdx]) ? inputs[samIdx].value : '';
|
||||
const errs = validatePasswordJS(pwdVal, samVal);
|
||||
if (errs.length > 0) {
|
||||
foundInvalid = true;
|
||||
if (inputs[pwdIdx]) inputs[pwdIdx].classList.add('invalid');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const previewInfo = previewDiv.querySelector('.preview-info');
|
||||
if (!previewInfo) return;
|
||||
if (foundInvalid) {
|
||||
previewInfo.innerHTML = '<strong>Hinweis:</strong> Einige Passwörter entsprechen nicht den Anforderungen. Bitte korrigieren Sie diese in der Tabelle bevor Sie importieren.';
|
||||
} else {
|
||||
previewInfo.innerHTML = '<strong>Hinweis:</strong> Sie können die Werte direkt in der Tabelle bearbeiten, bevor Sie importieren.';
|
||||
}
|
||||
}
|
||||
|
||||
// initial validation run
|
||||
validateCsvPasswords(headers);
|
||||
|
||||
previewDiv.style.display = 'block';
|
||||
}
|
||||
|
||||
function importCSVData() {
|
||||
// Prevent import if any password entries are invalid (highlighted)
|
||||
const invalids = document.querySelectorAll('#csvTableBody input.invalid');
|
||||
if (invalids.length > 0) {
|
||||
alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Importierte CSV-Daten:', csvData);
|
||||
alert(`${csvData.length - 1} Benutzer erfolgreich importiert!\n\nDaten in der Konsole (F12) einsehen.`);
|
||||
cancelCSVPreview();
|
||||
|
||||
721
docs/api/classes/App-Controllers-AuthController.html
Normal file
721
docs/api/classes/App-Controllers-AuthController.html
Normal file
@ -0,0 +1,721 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-controllers.html">Controllers</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
AuthController
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">22</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zuständig für alles rund um den Login:
|
||||
- Login-Formular anzeigen
|
||||
- Login-Daten verarbeiten (Authentifizierung gegen LDAP/AD)
|
||||
- Logout durchführen</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>NEU:</p>
|
||||
<ul>
|
||||
<li>Statt direkt HTML auszugeben oder header()-Redirects zu setzen,
|
||||
liefert der Controller "View-Results" zurück, die von index.php
|
||||
und einem zentralen Layout verarbeitet werden.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Controllers-AuthController.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-AuthController.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#property_ldapAuthService">$ldapAuthService</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Ldap-LdapAuthService.html"><abbr title="\App\Services\Ldap\LdapAuthService">LdapAuthService</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#property_logger">$logger</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-AuthController.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
<dd>Übergibt die Konfiguration an den Controller und initialisiert den LDAP-Authentifizierungsservice.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#method_logout">logout()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Meldet den aktuell eingeloggten Benutzer ab, indem der entsprechende Session-Eintrag entfernt wird,
|
||||
und liefert anschließend ein Redirect-Result zurück auf die Login-Seite.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#method_processLogin">processLogin()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Verarbeitet das Login-Formular:
|
||||
- Liest Benutzername und Passwort aus $_POST
|
||||
- Ruft den LdapAuthService zur Authentifizierung auf
|
||||
- Liefert bei Erfolg ein Redirect-Result zum Dashboard
|
||||
- Liefert bei Fehlern ein View-Result für das Login-Formular mit Fehlermeldung</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-AuthController.html#method_showLoginForm">showLoginForm()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Zeigt das Login-Formular an.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-AuthController.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Controllers-AuthController.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">25</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Konfigurationswerte der Anwendung (aus config.php)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_ldapAuthService">
|
||||
$ldapAuthService
|
||||
<a href="classes/App-Controllers-AuthController.html#property_ldapAuthService" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">28</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Ldap-LdapAuthService.html"><abbr title="\App\Services\Ldap\LdapAuthService">LdapAuthService</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$ldapAuthService</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Service, der die eigentliche LDAP/AD-Authentifizierung übernimmt</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_logger">
|
||||
$logger
|
||||
<a href="classes/App-Controllers-AuthController.html#property_logger" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">31</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$logger</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Logger für technische Fehler</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-AuthController.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Controllers-AuthController.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">38</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Übergibt die Konfiguration an den Controller und initialisiert den LDAP-Authentifizierungsservice.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$config</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$config</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Vollständige Konfiguration aus config.php</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_logout">
|
||||
logout()
|
||||
<a href="classes/App-Controllers-AuthController.html#method_logout" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">150</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Meldet den aktuell eingeloggten Benutzer ab, indem der entsprechende Session-Eintrag entfernt wird,
|
||||
und liefert anschließend ein Redirect-Result zurück auf die Login-Seite.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">logout</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>Redirect-Result</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_processLogin">
|
||||
processLogin()
|
||||
<a href="classes/App-Controllers-AuthController.html#method_processLogin" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">84</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Verarbeitet das Login-Formular:
|
||||
- Liest Benutzername und Passwort aus $_POST
|
||||
- Ruft den LdapAuthService zur Authentifizierung auf
|
||||
- Liefert bei Erfolg ein Redirect-Result zum Dashboard
|
||||
- Liefert bei Fehlern ein View-Result für das Login-Formular mit Fehlermeldung</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">processLogin</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>View-Result ODER Redirect-Result</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_showLoginForm">
|
||||
showLoginForm()
|
||||
<a href="classes/App-Controllers-AuthController.html#method_showLoginForm" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/AuthController.php"><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">57</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zeigt das Login-Formular an.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">showLoginForm</span><span>(</span><span class="phpdocumentor-signature__argument"><span>[</span><span class="phpdocumentor-signature__argument__return-type">string|null </span><span class="phpdocumentor-signature__argument__name">$errorMessage</span><span> = </span><span class="phpdocumentor-signature__argument__default-value">null</span><span> ]</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
<section class="phpdocumentor-description"><p>Optional kann eine Fehlermeldung übergeben werden, die in der View dargestellt wird.</p>
|
||||
</section>
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$errorMessage</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string|null</span>
|
||||
= <span class="phpdocumentor-signature__argument__default-value">null</span> </dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>View-Result für das zentrale Layout</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/AuthController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Controllers-AuthController.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Controllers-AuthController.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#property_config">$config</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#property_ldapAuthService">$ldapAuthService</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#property_logger">$logger</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#method_logout">logout()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#method_processLogin">processLogin()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-AuthController.html#method_showLoginForm">showLoginForm()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Controllers-AuthController.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
537
docs/api/classes/App-Controllers-DashboardController.html
Normal file
537
docs/api/classes/App-Controllers-DashboardController.html
Normal file
@ -0,0 +1,537 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-controllers.html">Controllers</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
DashboardController
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/DashboardController.php"><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">15</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Controller für das Dashboard.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Zeigt Serverstatus-Metriken über SNMP an:</p>
|
||||
<ul>
|
||||
<li>Initial Load: Server-seitiger Service-Aufruf (sofortige Daten)</li>
|
||||
<li>Live-Updates: Client-seitiges JavaScript-Polling alle 5s</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Controllers-DashboardController.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-DashboardController.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-DashboardController.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string|int, mixed> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-DashboardController.html#property_snmpService">$snmpService</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Snmp-SnmpServerStatusService.html"><abbr title="\App\Services\Snmp\SnmpServerStatusService">SnmpServerStatusService</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-DashboardController.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-DashboardController.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-DashboardController.html#method_show">show()</a>
|
||||
<span>
|
||||
: array<string|int, mixed> </span>
|
||||
</dt>
|
||||
<dd>Zeigt das Dashboard an.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-DashboardController.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Controllers-DashboardController.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/DashboardController.php"><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">17</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string|int, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_snmpService">
|
||||
$snmpService
|
||||
<a href="classes/App-Controllers-DashboardController.html#property_snmpService" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/DashboardController.php"><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">18</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Snmp-SnmpServerStatusService.html"><abbr title="\App\Services\Snmp\SnmpServerStatusService">SnmpServerStatusService</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$snmpService</span>
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-DashboardController.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Controllers-DashboardController.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/DashboardController.php"><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">20</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string|int, mixed> </span><span class="phpdocumentor-signature__argument__name">$config</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$config</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string|int, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_show">
|
||||
show()
|
||||
<a href="classes/App-Controllers-DashboardController.html#method_show" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/DashboardController.php"><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">33</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zeigt das Dashboard an.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">show</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string|int, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
<section class="phpdocumentor-description"><p>Beim initialen Laden wird der Service aufgerufen, um sofort Daten anzuzeigen.
|
||||
Live-Updates erfolgen anschließend via JavaScript-Polling (api/snmp_status.php alle 5s).</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string|int, mixed></span>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/DashboardController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Controllers-DashboardController.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Controllers-DashboardController.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-DashboardController.html#property_config">$config</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-DashboardController.html#property_snmpService">$snmpService</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-DashboardController.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-DashboardController.html#method_show">show()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Controllers-DashboardController.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
650
docs/api/classes/App-Controllers-UserManagementController.html
Normal file
650
docs/api/classes/App-Controllers-UserManagementController.html
Normal file
@ -0,0 +1,650 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-controllers.html">Controllers</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
UserManagementController
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">26</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Controller für die Benutzer- und Gruppenanzeige.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Aufgaben:</p>
|
||||
<ul>
|
||||
<li>holt über den LdapDirectoryService die Listen von Benutzern und Gruppen</li>
|
||||
<li>behandelt technische Fehler und bereitet eine Fehlermeldung für die View auf</li>
|
||||
<li>gibt die Daten an eine View-Datei (public/views/users.php) weiter</li>
|
||||
</ul>
|
||||
<p>WICHTIG:</p>
|
||||
<ul>
|
||||
<li>Es werden aktuell nur Daten angezeigt (Read-only).</li>
|
||||
<li>Es findet keine Änderung im Active Directory statt.</li>
|
||||
</ul>
|
||||
<p>NEU:</p>
|
||||
<ul>
|
||||
<li>Gibt ein View-Result-Array zurück, das von index.php + Layout gerendert wird.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Controllers-UserManagementController.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-UserManagementController.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#property_directoryService">$directoryService</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Ldap-LdapDirectoryService.html"><abbr title="\App\Services\Ldap\LdapDirectoryService">LdapDirectoryService</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#property_logger">$logger</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-UserManagementController.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#method_create">create()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Zeigt die Seite zum Erstellen von Benutzern (Einzel/CSV).</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Controllers-UserManagementController.html#method_show">show()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Zeigt Benutzer- und Gruppenliste an.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Controllers-UserManagementController.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Controllers-UserManagementController.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">29</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Vollständige Anwendungskonfiguration (aus config.php)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_directoryService">
|
||||
$directoryService
|
||||
<a href="classes/App-Controllers-UserManagementController.html#property_directoryService" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">32</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Ldap-LdapDirectoryService.html"><abbr title="\App\Services\Ldap\LdapDirectoryService">LdapDirectoryService</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$directoryService</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Service für das Lesen von Benutzern und Gruppen aus dem LDAP/AD</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_logger">
|
||||
$logger
|
||||
<a href="classes/App-Controllers-UserManagementController.html#property_logger" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">35</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$logger</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Logger für technische Fehler</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Controllers-UserManagementController.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Controllers-UserManagementController.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">40</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$config</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$config</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Vollständige Konfiguration aus config.php</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_create">
|
||||
create()
|
||||
<a href="classes/App-Controllers-UserManagementController.html#method_create" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">109</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zeigt die Seite zum Erstellen von Benutzern (Einzel/CSV).</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">create</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_show">
|
||||
show()
|
||||
<a href="classes/App-Controllers-UserManagementController.html#method_show" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Controllers/UserManagementController.php"><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">61</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zeigt Benutzer- und Gruppenliste an.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">show</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
<section class="phpdocumentor-description"><p>Wird typischerweise über die Route "users" (index.php?route=users) aufgerufen.</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>View-Result für das zentrale Layout</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/UserManagementController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Controllers-UserManagementController.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Controllers-UserManagementController.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#property_config">$config</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#property_directoryService">$directoryService</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#property_logger">$logger</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#method_create">create()</a></li>
|
||||
<li class=""><a href="classes/App-Controllers-UserManagementController.html#method_show">show()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Controllers-UserManagementController.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
584
docs/api/classes/App-Services-Ldap-LdapAuthService.html
Normal file
584
docs/api/classes/App-Services-Ldap-LdapAuthService.html
Normal file
@ -0,0 +1,584 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services-ldap.html">Ldap</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
LdapAuthService
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapAuthService.php"><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">17</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Service zur Authentifizierung von Benutzern gegen ein Active Directory per LDAP/LDAPS.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Bekommt Benutzername und Passwort und liefert:</p>
|
||||
<ul>
|
||||
<li>true -> Anmeldedaten sind gültig</li>
|
||||
<li>false -> Anmeldedaten sind fachlich ungültig (z. B. falsches Passwort)
|
||||
Technische Fehler (z. B. falsche Konfiguration, keine Verbindung) werden als Exception geworfen.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapAuthService.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapAuthService.html#property_connectionHelper">$connectionHelper</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapAuthService.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
<dd>Erwartet den Teilbereich "ldap" aus der allgemeinen Konfiguration (config.php).</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapAuthService.html#method_authenticate">authenticate()</a>
|
||||
<span>
|
||||
: bool </span>
|
||||
</dt>
|
||||
<dd>Führt die eigentliche LDAP/AD-Authentifizierung durch.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapAuthService.php"><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">20</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>LDAP-spezifische Konfiguration (Server, Port, Domain-Suffix, Timeout, etc.)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_connectionHelper">
|
||||
$connectionHelper
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#property_connectionHelper" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapAuthService.php"><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">22</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$connectionHelper</span>
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapAuthService.php"><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">29</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Erwartet den Teilbereich "ldap" aus der allgemeinen Konfiguration (config.php).</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$ldapConfig</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$ldapConfig</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Konfiguration für die LDAP-Verbindung</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_authenticate">
|
||||
authenticate()
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#method_authenticate" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapAuthService.php"><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">46</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Führt die eigentliche LDAP/AD-Authentifizierung durch.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">authenticate</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">string </span><span class="phpdocumentor-signature__argument__name">$username</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">string </span><span class="phpdocumentor-signature__argument__name">$password</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">bool</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$username</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Benutzername (ohne Domain-Suffix, z. B. "administrator")</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$password</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Passwort im Klartext (wird direkt an ldap_bind übergeben)</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#method_authenticate#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>bei technischen Problemen (z. B. fehlende Konfiguration, Verbindungsfehler)</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">bool</span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>true bei erfolgreicher Anmeldung, false bei fachlich ungültigen Anmeldedaten</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapAuthService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Services-Ldap-LdapAuthService.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Services-Ldap-LdapAuthService.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapAuthService.html#property_config">$config</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapAuthService.html#property_connectionHelper">$connectionHelper</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapAuthService.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapAuthService.html#method_authenticate">authenticate()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Services-Ldap-LdapAuthService.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
524
docs/api/classes/App-Services-Ldap-LdapConnectionHelper.html
Normal file
524
docs/api/classes/App-Services-Ldap-LdapConnectionHelper.html
Normal file
@ -0,0 +1,524 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services-ldap.html">Ldap</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
LdapConnectionHelper
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapConnectionHelper.php"><a href="files/app-services-ldap-ldapconnectionhelper.html"><abbr title="app/Services/Ldap/LdapConnectionHelper.php">LdapConnectionHelper.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">23</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Hilfsklasse zum Aufbau einer LDAP/LDAPS-Verbindung.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Aufgaben:</p>
|
||||
<ul>
|
||||
<li>liest Server, Port und Timeout aus der LDAP-Konfiguration</li>
|
||||
<li>erstellt eine LDAP-Verbindung</li>
|
||||
<li>setzt die notwendigen Optionen (Protokollversion, Netzwerk-Timeout)</li>
|
||||
</ul>
|
||||
<p>Wichtig:</p>
|
||||
<ul>
|
||||
<li>Diese Klasse führt KEIN ldap_bind durch.</li>
|
||||
<li>Das Bind (mit Benutzer- oder Service-Konto) erfolgt in den Fach-Services
|
||||
wie LdapAuthService oder LdapDirectoryService.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapConnectionHelper.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapConnectionHelper.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapConnectionHelper.html#method_createConnection">createConnection()</a>
|
||||
<span>
|
||||
: resource </span>
|
||||
</dt>
|
||||
<dd>Erstellt eine LDAP-Verbindung mit gesetzten Optionen (Protokollversion, Timeout),
|
||||
aber ohne Bind. Den Bind führen die aufrufenden Services durch.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapConnectionHelper.php"><a href="files/app-services-ldap-ldapconnectionhelper.html"><abbr title="app/Services/Ldap/LdapConnectionHelper.php">LdapConnectionHelper.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">26</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>LDAP-spezifische Konfiguration (server, port, timeout, etc.)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapConnectionHelper.php"><a href="files/app-services-ldap-ldapconnectionhelper.html"><abbr title="app/Services/Ldap/LdapConnectionHelper.php">LdapConnectionHelper.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">31</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$ldapConfig</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$ldapConfig</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Teilbereich "ldap" aus der config.php</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_createConnection">
|
||||
createConnection()
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#method_createConnection" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapConnectionHelper.php"><a href="files/app-services-ldap-ldapconnectionhelper.html"><abbr title="app/Services/Ldap/LdapConnectionHelper.php">LdapConnectionHelper.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">46</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Erstellt eine LDAP-Verbindung mit gesetzten Optionen (Protokollversion, Timeout),
|
||||
aber ohne Bind. Den Bind führen die aufrufenden Services durch.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">createConnection</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">resource</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#method_createConnection#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>wenn der Server nicht konfiguriert ist oder die Verbindung scheitert</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">resource</span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>LDAP-Verbindungs-Handle</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapConnectionHelper.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Services-Ldap-LdapConnectionHelper.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Services-Ldap-LdapConnectionHelper.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapConnectionHelper.html#property_config">$config</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapConnectionHelper.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapConnectionHelper.html#method_createConnection">createConnection()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Services-Ldap-LdapConnectionHelper.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
711
docs/api/classes/App-Services-Ldap-LdapDirectoryService.html
Normal file
711
docs/api/classes/App-Services-Ldap-LdapDirectoryService.html
Normal file
@ -0,0 +1,711 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services-ldap.html">Ldap</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
LdapDirectoryService
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">21</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Service zum Lesen von Objekten aus dem Active Directory.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Aktueller Umfang:</p>
|
||||
<ul>
|
||||
<li>Liste von Benutzern (sAMAccountName, displayName, mail)</li>
|
||||
<li>Liste von Gruppen (sAMAccountName, cn, description)</li>
|
||||
</ul>
|
||||
<p>Technische Details:</p>
|
||||
<ul>
|
||||
<li>Verwendet ein technisches Konto (bind_dn + bind_password) für Lesezugriffe</li>
|
||||
<li>Nutzt LdapConnectionHelper zum Aufbau der Verbindung</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#property_connectionHelper">$connectionHelper</a>
|
||||
<span>
|
||||
: <a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getGroups">getGroups()</a>
|
||||
<span>
|
||||
: array<int, array<string, string>> </span>
|
||||
</dt>
|
||||
<dd>Liefert eine Liste von Gruppen aus dem AD.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getUsers">getUsers()</a>
|
||||
<span>
|
||||
: array<int, array<string, string>> </span>
|
||||
</dt>
|
||||
<dd>Liefert eine Liste von Benutzern aus dem AD.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -private">
|
||||
<a class="" href="classes/App-Services-Ldap-LdapDirectoryService.html#method_connect">connect()</a>
|
||||
<span>
|
||||
: resource </span>
|
||||
</dt>
|
||||
<dd>Stellt eine LDAP-Verbindung her und bindet sich mit dem technischen Konto.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">24</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>LDAP-Konfiguration (inkl. base_dn, bind_dn, bind_password)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_connectionHelper">
|
||||
$connectionHelper
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#property_connectionHelper" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">27</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type"><a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a></span>
|
||||
<span class="phpdocumentor-signature__name">$connectionHelper</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Zentrale Hilfsklasse für den Aufbau von LDAP-Verbindungen</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">32</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$ldapConfig</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$ldapConfig</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Teilbereich "ldap" aus der config.php</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_getGroups">
|
||||
getGroups()
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getGroups" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">153</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Liefert eine Liste von Gruppen aus dem AD.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">getGroups</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<int, array<string, string>></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getGroups#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>bei Konfigurations- oder Verbindungsproblemen</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<int, array<string, string>></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>Liste von Gruppen-Datensätzen</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_getUsers">
|
||||
getUsers()
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getUsers" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">90</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Liefert eine Liste von Benutzern aus dem AD.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">getUsers</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<int, array<string, string>></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getUsers#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>bei Konfigurations- oder Verbindungsproblemen</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<int, array<string, string>></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>Liste von Benutzer-Datensätzen
|
||||
[
|
||||
[
|
||||
'samaccountname' => 'user1',
|
||||
'displayname' => 'User Eins',
|
||||
'mail' => 'user1@example.local',
|
||||
],
|
||||
...
|
||||
]</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_connect">
|
||||
connect()
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_connect" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Ldap/LdapDirectoryService.php"><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">49</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Stellt eine LDAP-Verbindung her und bindet sich mit dem technischen Konto.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__name">connect</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">resource</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_connect#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>wenn Bind-Daten fehlen oder der Bind fehlschlägt</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">resource</span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>LDAP-Verbindungs-Handle</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapDirectoryService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Services-Ldap-LdapDirectoryService.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Services-Ldap-LdapDirectoryService.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#property_config">$config</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#property_connectionHelper">$connectionHelper</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getGroups">getGroups()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_getUsers">getUsers()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Ldap-LdapDirectoryService.html#method_connect">connect()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Services-Ldap-LdapDirectoryService.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
790
docs/api/classes/App-Services-Logging-LoggingService.html
Normal file
790
docs/api/classes/App-Services-Logging-LoggingService.html
Normal file
@ -0,0 +1,790 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services-logging.html">Logging</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
LoggingService
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">17</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Einfacher File-Logger für die AdminTool-Anwendung.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Ziele:</p>
|
||||
<ul>
|
||||
<li>Technische Details werden in eine Log-Datei unter public/logs/ geschrieben.</li>
|
||||
<li>In der Weboberfläche erscheinen nur verständliche, fachliche Fehlermeldungen.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-constants">
|
||||
Constants
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#toc-constants" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -constant -private">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#constant_LEVEL_MAP">LEVEL_MAP</a>
|
||||
<span>
|
||||
= ['debug' => 100, 'info' => 200, 'warning' => 300, 'error' => 400] </span>
|
||||
</dt>
|
||||
<dd>Zuordnung der Log-Level zu numerischen Werten zur Filterung.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#property_logDir">$logDir</a>
|
||||
<span>
|
||||
: string </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#property_logFile">$logFile</a>
|
||||
<span>
|
||||
: string </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#property_minLevel">$minLevel</a>
|
||||
<span>
|
||||
: int </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#method_log">log()</a>
|
||||
<span>
|
||||
: void </span>
|
||||
</dt>
|
||||
<dd>Allgemeiner Log-Eintrag.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#method_logException">logException()</a>
|
||||
<span>
|
||||
: void </span>
|
||||
</dt>
|
||||
<dd>Komfortmethode, um Exceptions strukturiert zu loggen.</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -private">
|
||||
<a class="" href="classes/App-Services-Logging-LoggingService.html#method_ensureLogDirectoryExists">ensureLogDirectoryExists()</a>
|
||||
<span>
|
||||
: void </span>
|
||||
</dt>
|
||||
<dd>Stellt sicher, dass das Log-Verzeichnis existiert.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-constants">
|
||||
<h3 class="phpdocumentor-elements__header" id="constants">
|
||||
Constants
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#constants" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article class="phpdocumentor-element -constant -private ">
|
||||
<h4 class="phpdocumentor-element__name" id="constant_LEVEL_MAP">
|
||||
LEVEL_MAP
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#constant_LEVEL_MAP" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">33</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Zuordnung der Log-Level zu numerischen Werten zur Filterung.</p>
|
||||
|
||||
|
||||
<code class="phpdocumentor-signature phpdocumentor-code ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, int></span>
|
||||
<span class="phpdocumentor-signature__name">LEVEL_MAP</span>
|
||||
= <span class="phpdocumentor-signature__default-value">['debug' => 100, 'info' => 200, 'warning' => 300, 'error' => 400]</span>
|
||||
</code>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_logDir">
|
||||
$logDir
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#property_logDir" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">20</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">string</span>
|
||||
<span class="phpdocumentor-signature__name">$logDir</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Vollständiger Pfad zum Log-Verzeichnis</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_logFile">
|
||||
$logFile
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#property_logFile" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">23</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">string</span>
|
||||
<span class="phpdocumentor-signature__name">$logFile</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Dateiname der Log-Datei</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_minLevel">
|
||||
$minLevel
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#property_minLevel" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">26</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">int</span>
|
||||
<span class="phpdocumentor-signature__name">$minLevel</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Minimale Log-Stufe, ab der geschrieben wird.</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">43</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$config</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$config</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Teilkonfiguration "logging" aus config.php</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_log">
|
||||
log()
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#method_log" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">79</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Allgemeiner Log-Eintrag.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">log</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">string </span><span class="phpdocumentor-signature__argument__name">$level</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">string </span><span class="phpdocumentor-signature__argument__name">$message</span></span><span class="phpdocumentor-signature__argument"><span>[</span><span>, </span><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$context</span><span> = </span><span class="phpdocumentor-signature__argument__default-value">[]</span><span> ]</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">void</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$level</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Log-Level (debug|info|warning|error)</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$message</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Nachrichtentext</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$context</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
= <span class="phpdocumentor-signature__argument__default-value">[]</span> </dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Zusätzliche Kontextinformationen</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_logException">
|
||||
logException()
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#method_logException" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">119</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Komfortmethode, um Exceptions strukturiert zu loggen.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">logException</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">string </span><span class="phpdocumentor-signature__argument__name">$message</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Throwable">Throwable</abbr> </span><span class="phpdocumentor-signature__argument__name">$exception</span></span><span class="phpdocumentor-signature__argument"><span>[</span><span>, </span><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$context</span><span> = </span><span class="phpdocumentor-signature__argument__default-value">[]</span><span> ]</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">void</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$message</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">string</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Kurzer Kontexttext zur Exception</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$exception</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Throwable">Throwable</abbr></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Die geworfene Exception</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$context</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
= <span class="phpdocumentor-signature__argument__default-value">[]</span> </dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Zusätzlicher Kontext (Route, Benutzername, Remote-IP, ...)</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_ensureLogDirectoryExists">
|
||||
ensureLogDirectoryExists()
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#method_ensureLogDirectoryExists" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Logging/LoggingService.php"><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">60</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Stellt sicher, dass das Log-Verzeichnis existiert.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__name">ensureLogDirectoryExists</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">void</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Logging/LoggingService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Services-Logging-LoggingService.html#toc-constants">Constants</a></li>
|
||||
<li><a href="classes/App-Services-Logging-LoggingService.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Services-Logging-LoggingService.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="phpdocumentor-on-this-page-section__title">Constants</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#constant_LEVEL_MAP">LEVEL_MAP</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#property_logDir">$logDir</a></li>
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#property_logFile">$logFile</a></li>
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#property_minLevel">$minLevel</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#method_log">log()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#method_logException">logException()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Logging-LoggingService.html#method_ensureLogDirectoryExists">ensureLogDirectoryExists()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Services-Logging-LoggingService.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
521
docs/api/classes/App-Services-Snmp-SnmpServerStatusService.html
Normal file
521
docs/api/classes/App-Services-Snmp-SnmpServerStatusService.html
Normal file
@ -0,0 +1,521 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services-snmp.html">Snmp</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -class">
|
||||
<h2 class="phpdocumentor-content__title">
|
||||
SnmpServerStatusService
|
||||
|
||||
|
||||
<div class="phpdocumentor-element__package">
|
||||
in package
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="packages/Application.html">Application</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Snmp/SnmpServerStatusService.php"><a href="files/app-services-snmp-snmpserverstatusservice.html"><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">21</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Service zur Ermittlung des Serverstatus per SNMP.</p>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>Features:</p>
|
||||
<ul>
|
||||
<li>Robuste Fehlerbehandlung mit aussagekräftigen Exceptions</li>
|
||||
<li>Intelligente Fallback-Logik bei fehlenden oder unerwarteten OID-Beschreibungen</li>
|
||||
<li>Unterstützung für Windows (C:) und Linux (/) Systeme</li>
|
||||
<li>Detailliertes Logging über Exceptions</li>
|
||||
</ul>
|
||||
<p>Wird vom DashboardController beim initialen Laden aufgerufen.
|
||||
Das Live-Polling erfolgt über das API-Endpunkt (public/api/snmp_status.php).</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#toc-properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -property -private">
|
||||
<a class="" href="classes/App-Services-Snmp-SnmpServerStatusService.html#property_config">$config</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
|
||||
</dl>
|
||||
|
||||
<h4 id="toc-methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#toc-methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Snmp-SnmpServerStatusService.html#method___construct">__construct()</a>
|
||||
<span>
|
||||
: mixed </span>
|
||||
</dt>
|
||||
<dd>Erwartet den Teilbereich "snmp" aus der allgemeinen Konfiguration (config.php).</dd>
|
||||
|
||||
<dt class="phpdocumentor-table-of-contents__entry -method -public">
|
||||
<a class="" href="classes/App-Services-Snmp-SnmpServerStatusService.html#method_getServerStatus">getServerStatus()</a>
|
||||
<span>
|
||||
: array<string, mixed> </span>
|
||||
</dt>
|
||||
<dd>Liefert den aktuellen Serverstatus zurück.</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="phpdocumentor-properties">
|
||||
<h3 class="phpdocumentor-elements__header" id="properties">
|
||||
Properties
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#properties" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="
|
||||
phpdocumentor-element
|
||||
-property
|
||||
-private
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="property_config">
|
||||
$config
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#property_config" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
<span class="phpdocumentor-element__modifiers">
|
||||
</span>
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Snmp/SnmpServerStatusService.php"><a href="files/app-services-snmp-snmpserverstatusservice.html"><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">24</span>
|
||||
|
||||
</aside>
|
||||
|
||||
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">private</span>
|
||||
<span class="phpdocumentor-signature__type">array<string, mixed></span>
|
||||
<span class="phpdocumentor-signature__name">$config</span>
|
||||
</code>
|
||||
|
||||
|
||||
<section class="phpdocumentor-description"><p>SNMP-Konfiguration (Host, Community, Timeout, OIDs, etc.)</p>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-methods">
|
||||
<h3 class="phpdocumentor-elements__header" id="methods">
|
||||
Methods
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#methods" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method___construct">
|
||||
__construct()
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#method___construct" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Snmp/SnmpServerStatusService.php"><a href="files/app-services-snmp-snmpserverstatusservice.html"><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">31</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Erwartet den Teilbereich "snmp" aus der allgemeinen Konfiguration (config.php).</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">__construct</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">array<string, mixed> </span><span class="phpdocumentor-signature__argument__name">$snmpConfig</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
|
||||
<dl class="phpdocumentor-argument-list">
|
||||
<dt class="phpdocumentor-argument-list__entry">
|
||||
<span class="phpdocumentor-signature__argument__name">$snmpConfig</span>
|
||||
: <span class="phpdocumentor-signature__argument__return-type">array<string, mixed></span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-argument-list__definition">
|
||||
<section class="phpdocumentor-description"><p>Konfiguration für die SNMP-Abfragen</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
<article
|
||||
class="phpdocumentor-element
|
||||
-method
|
||||
-public
|
||||
"
|
||||
>
|
||||
<h4 class="phpdocumentor-element__name" id="method_getServerStatus">
|
||||
getServerStatus()
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#method_getServerStatus" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<aside class="phpdocumentor-element-found-in">
|
||||
<abbr class="phpdocumentor-element-found-in__file" title="app/Services/Snmp/SnmpServerStatusService.php"><a href="files/app-services-snmp-snmpserverstatusservice.html"><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></a></abbr>
|
||||
:
|
||||
<span class="phpdocumentor-element-found-in__line">43</span>
|
||||
|
||||
</aside>
|
||||
|
||||
<p class="phpdocumentor-summary">Liefert den aktuellen Serverstatus zurück.</p>
|
||||
|
||||
<code class="phpdocumentor-code phpdocumentor-signature ">
|
||||
<span class="phpdocumentor-signature__visibility">public</span>
|
||||
<span class="phpdocumentor-signature__name">getServerStatus</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array<string, mixed></span></code>
|
||||
|
||||
<div class="phpdocumentor-label-line">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<h5 class="phpdocumentor-tag-list__heading" id="tags">
|
||||
Tags
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#method_getServerStatus#tags" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h5>
|
||||
<dl class="phpdocumentor-tag-list">
|
||||
<dt class="phpdocumentor-tag-list__entry">
|
||||
<span class="phpdocumentor-tag__name">throws</span>
|
||||
</dt>
|
||||
<dd class="phpdocumentor-tag-list__definition">
|
||||
<span class="phpdocumentor-tag-link"><abbr title="\RuntimeException">RuntimeException</abbr></span>
|
||||
|
||||
<section class="phpdocumentor-description"><p>wenn die SNMP-Konfiguration unvollständig ist oder Abfragen fehlschlagen</p>
|
||||
</section>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h5 class="phpdocumentor-return-value__heading">Return values</h5>
|
||||
<span class="phpdocumentor-signature__response_type">array<string, mixed></span>
|
||||
—
|
||||
<section class="phpdocumentor-description"><p>Assoziatives Array mit Statuswerten (Hostname, CPU%, RAM%, etc.)</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Snmp/SnmpServerStatusService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="classes/App-Services-Snmp-SnmpServerStatusService.html#toc-properties">Properties</a></li>
|
||||
<li><a href="classes/App-Services-Snmp-SnmpServerStatusService.html#toc-methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Properties</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Snmp-SnmpServerStatusService.html#property_config">$config</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="phpdocumentor-on-this-page-section__title">Methods</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class=""><a href="classes/App-Services-Snmp-SnmpServerStatusService.html#method___construct">__construct()</a></li>
|
||||
<li class=""><a href="classes/App-Services-Snmp-SnmpServerStatusService.html#method_getServerStatus">getServerStatus()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="classes/App-Services-Snmp-SnmpServerStatusService.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1236
docs/api/css/base.css
Normal file
1236
docs/api/css/base.css
Normal file
File diff suppressed because it is too large
Load Diff
427
docs/api/css/normalize.css
vendored
Normal file
427
docs/api/css/normalize.css
vendored
Normal file
@ -0,0 +1,427 @@
|
||||
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||
|
||||
/**
|
||||
* 1. Set default font family to sans-serif.
|
||||
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||
* user zoom.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: sans-serif; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default margin.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* HTML5 display definitions
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||
* and Firefox.
|
||||
* Correct `block` display not defined for `main` in IE 11.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
main,
|
||||
menu,
|
||||
nav,
|
||||
section,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
audio,
|
||||
canvas,
|
||||
progress,
|
||||
video {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent modern browsers from displaying `audio` without controls.
|
||||
* Remove excess height in iOS 5 devices.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||
*/
|
||||
|
||||
[hidden],
|
||||
template {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background color from active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Improve readability when focused and also mouse hovered in all browsers.
|
||||
*/
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in Safari and Chrome.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address variable `h1` font-size and margin within `section` and `article`
|
||||
* contexts in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address styling not present in IE 8/9.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent and variable font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove border when inside `a` element in IE 8/9/10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct overflow not hidden in IE 9/10/11.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Address margin not present in IE 8/9 and Safari.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address differences between Firefox and other browsers.
|
||||
*/
|
||||
|
||||
hr {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Contain overflow in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address odd `em`-unit font size rendering in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
pre,
|
||||
samp {
|
||||
font-family: var(--font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||
* styling of `select`, unless a `border` property is set.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 1. Correct color not being inherited.
|
||||
* Known issue: affects color of disabled elements.
|
||||
* 2. Correct font properties not being inherited.
|
||||
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
color: inherit; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
margin: 0; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
button {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||
* All other form control elements do not inherit `text-transform` values.
|
||||
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||
* Correct `select` style inheritance in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||
* and `video` controls.
|
||||
* 2. Correct inability to style clickable `input` types in iOS.
|
||||
* 3. Improve usability and consistency of cursor style between image-type
|
||||
* `input` and others.
|
||||
*/
|
||||
|
||||
button,
|
||||
html input[type="button"], /* 1 */
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
cursor: pointer; /* 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-set default cursor for disabled elements.
|
||||
*/
|
||||
|
||||
button[disabled],
|
||||
html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and border in Firefox 4+.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
input::-moz-focus-inner {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||
* the UA stylesheet.
|
||||
*/
|
||||
|
||||
input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* It's recommended that you don't attempt to style these elements.
|
||||
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||
*
|
||||
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||
* 2. Remove excess padding in IE 8/9/10.
|
||||
*/
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||
* `font-size` values of the `input`, it causes the cursor style of the
|
||||
* decrement button to change from `default` to `text`.
|
||||
*/
|
||||
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||
* (include `-moz` to future-proof).
|
||||
*/
|
||||
|
||||
input[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box; /* 2 */
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||
* padding (and `textfield` appearance).
|
||||
*/
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button,
|
||||
input[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define consistent border, margin, and padding.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #c0c0c0;
|
||||
margin: 0 2px;
|
||||
padding: 0.35em 0.625em 0.75em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||
*/
|
||||
|
||||
legend {
|
||||
border: 0; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Don't inherit the `font-weight` (applied by a rule above).
|
||||
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||
*/
|
||||
|
||||
optgroup {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Tables
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove most spacing between table cells.
|
||||
*/
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 0;
|
||||
}
|
||||
279
docs/api/css/template.css
Normal file
279
docs/api/css/template.css
Normal file
@ -0,0 +1,279 @@
|
||||
|
||||
.phpdocumentor-content {
|
||||
position: relative;
|
||||
display: flex;
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
.phpdocumentor-content > section:first-of-type {
|
||||
width: 75%;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
@media (min-width: 1900px) {
|
||||
.phpdocumentor-content > section:first-of-type {
|
||||
width: 100%;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.phpdocumentor .phpdocumentor-content__title {
|
||||
margin-top: 0;
|
||||
}
|
||||
.phpdocumentor-summary {
|
||||
font-style: italic;
|
||||
}
|
||||
.phpdocumentor-description {
|
||||
margin-bottom: var(--spacing-md);
|
||||
}
|
||||
.phpdocumentor-element {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.phpdocumentor-element .phpdocumentor-element {
|
||||
border: 1px solid var(--primary-color-lighten);
|
||||
margin-bottom: var(--spacing-md);
|
||||
padding: var(--spacing-xs);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.phpdocumentor-element.-deprecated .phpdocumentor-element__name {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
@media (min-width: 550px) {
|
||||
.phpdocumentor-element .phpdocumentor-element {
|
||||
margin-bottom: var(--spacing-lg);
|
||||
padding: var(--spacing-md);
|
||||
}
|
||||
}
|
||||
|
||||
.phpdocumentor-element__modifier {
|
||||
font-size: var(--text-xxs);
|
||||
padding: calc(var(--spacing-base-size) / 4) calc(var(--spacing-base-size) / 2);
|
||||
color: var(--text-color);
|
||||
background-color: var(--light-gray);
|
||||
border-radius: 3px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.phpdocumentor .phpdocumentor-elements__header {
|
||||
margin-top: var(--spacing-xxl);
|
||||
margin-bottom: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.phpdocumentor .phpdocumentor-element__name {
|
||||
line-height: 1;
|
||||
margin-top: 0;
|
||||
font-weight: 300;
|
||||
font-size: var(--text-lg);
|
||||
word-break: break-all;
|
||||
margin-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
@media (min-width: 550px) {
|
||||
.phpdocumentor .phpdocumentor-element__name {
|
||||
font-size: var(--text-xl);
|
||||
margin-bottom: var(--spacing-xs);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.phpdocumentor .phpdocumentor-element__name {
|
||||
margin-bottom: var(--spacing-md);
|
||||
}
|
||||
}
|
||||
|
||||
.phpdocumentor-element__package,
|
||||
.phpdocumentor-element__extends,
|
||||
.phpdocumentor-element__implements {
|
||||
display: block;
|
||||
font-size: var(--text-xxs);
|
||||
font-weight: normal;
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.phpdocumentor-element__package .phpdocumentor-breadcrumbs {
|
||||
display: inline;
|
||||
}
|
||||
.phpdocumentor .phpdocumentor-signature {
|
||||
display: block;
|
||||
font-size: var(--text-sm);
|
||||
border: 1px solid #f0f0f0;
|
||||
margin-bottom: calc(var(--spacing-sm));
|
||||
}
|
||||
|
||||
.phpdocumentor .phpdocumentor-signature.-deprecated .phpdocumentor-signature__name {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
@media (min-width: 550px) {
|
||||
.phpdocumentor .phpdocumentor-signature {
|
||||
margin-left: calc(var(--spacing-xl) * -1);
|
||||
width: calc(100% + var(--spacing-xl));
|
||||
}
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents {
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry {
|
||||
margin-bottom: var(--spacing-xxs);
|
||||
margin-left: 2rem;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > a {
|
||||
flex: 0 1 auto;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > a.-deprecated {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > span {
|
||||
flex: 1;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:after {
|
||||
content: '';
|
||||
height: 12px;
|
||||
width: 12px;
|
||||
left: 16px;
|
||||
position: absolute;
|
||||
}
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-private:after {
|
||||
background: url('data:image/svg+xml;utf8,<svg width="8" height="10" viewBox="0 0 8 10" fill="none" xmlns="http://www.w3.org/2000/svg"><rect y="4" width="8" height="6" rx="1.4" fill="%23EE6749"/><path d="M2 4C2 3 2.4 1 4 1C5.6 1 6 3 6 4" stroke="%23EE6749" stroke-width="1.4"/></svg>') no-repeat;
|
||||
}
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-protected:after {
|
||||
left: 13px;
|
||||
background: url('data:image/svg+xml;utf8,<svg width="11" height="9" viewBox="0 0 11 9" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="3" width="8" height="6" rx="1.4" fill="%23EE9949"/><path d="M5 4C5 3 4.6 1 3 1C1.4 1 1 3 1 4" stroke="%23EE9949" stroke-width="1.4"/></svg>') no-repeat;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:before {
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
line-height: 1.25rem;
|
||||
background: transparent url('data:image/svg+xml;utf8,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="10" fill="hsl( 96, 57%, 60%)"/></svg>') no-repeat center center;
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
border-radius: 50%;
|
||||
font-weight: 600;
|
||||
color: white;
|
||||
text-align: center;
|
||||
font-size: .75rem;
|
||||
margin-top: .2rem;
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-method:before {
|
||||
content: 'M';
|
||||
color: '';
|
||||
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="10" fill="hsl( 96, 57%, 60%)"/></svg>');
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-function:before {
|
||||
content: 'M';
|
||||
color: ' 96';
|
||||
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10" cy="10" r="10" fill="hsl( 96, 57%, 60%)"/></svg>');
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-property:before {
|
||||
content: 'P'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-constant:before {
|
||||
content: 'C';
|
||||
background-color: transparent;
|
||||
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="-3.05176e-05" y="9.99998" width="14.1422" height="14.1422" transform="rotate(-45 -3.05176e-05 9.99998)" fill="hsl( 96, 57%, 60%)"/></svg>');
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-class:before {
|
||||
content: 'C'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-interface:before {
|
||||
content: 'I'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-trait:before {
|
||||
content: 'T'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-namespace:before {
|
||||
content: 'N'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-package:before {
|
||||
content: 'P'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-enum:before {
|
||||
content: 'E'
|
||||
}
|
||||
|
||||
.phpdocumentor-table-of-contents dd {
|
||||
font-style: italic;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
.phpdocumentor-element-found-in {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (min-width: 550px) {
|
||||
.phpdocumentor-element-found-in {
|
||||
display: block;
|
||||
font-size: var(--text-sm);
|
||||
color: gray;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.phpdocumentor-element-found-in {
|
||||
position: absolute;
|
||||
top: var(--spacing-sm);
|
||||
right: var(--spacing-sm);
|
||||
font-size: var(--text-sm);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source {
|
||||
flex: 0 1 auto;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source:after {
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
line-height: 1.25rem;
|
||||
background: transparent url('data:image/svg+xml;utf8,<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="gray"><path d="M5.854 4.854a.5.5 0 1 0-.708-.708l-3.5 3.5a.5.5 0 0 0 0 .708l3.5 3.5a.5.5 0 0 0 .708-.708L2.707 8l3.147-3.146zm4.292 0a.5.5 0 0 1 .708-.708l3.5 3.5a.5.5 0 0 1 0 .708l-3.5 3.5a.5.5 0 0 1-.708-.708L13.293 8l-3.147-3.146z" stroke="gray" stroke-width="1.4"/></svg>') no-repeat center center;
|
||||
content: '';
|
||||
left: 0;
|
||||
border-radius: 50%;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
font-size: .75rem;
|
||||
margin-top: .2rem;
|
||||
}
|
||||
.phpdocumentor-class-graph {
|
||||
width: 100%; height: 600px; border:1px solid black; overflow: hidden
|
||||
}
|
||||
|
||||
.phpdocumentor-class-graph__graph {
|
||||
width: 100%;
|
||||
}
|
||||
.phpdocumentor-tag-list__definition {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.phpdocumentor-tag-link {
|
||||
margin-right: var(--spacing-sm);
|
||||
}
|
||||
.phpdocumentor-uml-diagram svg {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
280
docs/api/files/app-controllers-authcontroller.html
Normal file
280
docs/api/files/app-controllers-authcontroller.html
Normal file
@ -0,0 +1,280 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">AuthController.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-controllers-authcontroller.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-controllers-authcontroller.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-AuthController.html"><abbr title="\App\Controllers\AuthController">AuthController</abbr></a></dt><dd>Zuständig für alles rund um den Login:
|
||||
- Login-Formular anzeigen
|
||||
- Login-Daten verarbeiten (Authentifizierung gegen LDAP/AD)
|
||||
- Logout durchführen</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/AuthController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-controllers-authcontroller.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-controllers-authcontroller.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-controllers-dashboardcontroller.html
Normal file
277
docs/api/files/app-controllers-dashboardcontroller.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">DashboardController.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-controllers-dashboardcontroller.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-controllers-dashboardcontroller.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-DashboardController.html"><abbr title="\App\Controllers\DashboardController">DashboardController</abbr></a></dt><dd>Controller für das Dashboard.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/DashboardController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-controllers-dashboardcontroller.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-controllers-dashboardcontroller.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-controllers-usermanagementcontroller.html
Normal file
277
docs/api/files/app-controllers-usermanagementcontroller.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">UserManagementController.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-controllers-usermanagementcontroller.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-controllers-usermanagementcontroller.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-UserManagementController.html"><abbr title="\App\Controllers\UserManagementController">UserManagementController</abbr></a></dt><dd>Controller für die Benutzer- und Gruppenanzeige.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Controllers/UserManagementController.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-controllers-usermanagementcontroller.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-controllers-usermanagementcontroller.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-services-ldap-ldapauthservice.html
Normal file
277
docs/api/files/app-services-ldap-ldapauthservice.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">LdapAuthService.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-services-ldap-ldapauthservice.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-services-ldap-ldapauthservice.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapAuthService.html"><abbr title="\App\Services\Ldap\LdapAuthService">LdapAuthService</abbr></a></dt><dd>Service zur Authentifizierung von Benutzern gegen ein Active Directory per LDAP/LDAPS.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapAuthService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-services-ldap-ldapauthservice.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-services-ldap-ldapauthservice.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-services-ldap-ldapconnectionhelper.html
Normal file
277
docs/api/files/app-services-ldap-ldapconnectionhelper.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">LdapConnectionHelper.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-services-ldap-ldapconnectionhelper.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-services-ldap-ldapconnectionhelper.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a></dt><dd>Hilfsklasse zum Aufbau einer LDAP/LDAPS-Verbindung.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapConnectionHelper.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-services-ldap-ldapconnectionhelper.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-services-ldap-ldapconnectionhelper.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-services-ldap-ldapdirectoryservice.html
Normal file
277
docs/api/files/app-services-ldap-ldapdirectoryservice.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">LdapDirectoryService.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-services-ldap-ldapdirectoryservice.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-services-ldap-ldapdirectoryservice.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapDirectoryService.html"><abbr title="\App\Services\Ldap\LdapDirectoryService">LdapDirectoryService</abbr></a></dt><dd>Service zum Lesen von Objekten aus dem Active Directory.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Ldap/LdapDirectoryService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-services-ldap-ldapdirectoryservice.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-services-ldap-ldapdirectoryservice.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-services-logging-loggingservice.html
Normal file
277
docs/api/files/app-services-logging-loggingservice.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">LoggingService.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-services-logging-loggingservice.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-services-logging-loggingservice.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a></dt><dd>Einfacher File-Logger für die AdminTool-Anwendung.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Logging/LoggingService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-services-logging-loggingservice.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-services-logging-loggingservice.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
277
docs/api/files/app-services-snmp-snmpserverstatusservice.html
Normal file
277
docs/api/files/app-services-snmp-snmpserverstatusservice.html
Normal file
@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -file">
|
||||
<h2 class="phpdocumentor-content__title">SnmpServerStatusService.php</h2>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="files/app-services-snmp-snmpserverstatusservice.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="files/app-services-snmp-snmpserverstatusservice.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Snmp-SnmpServerStatusService.html"><abbr title="\App\Services\Snmp\SnmpServerStatusService">SnmpServerStatusService</abbr></a></dt><dd>Service zur Ermittlung des Serverstatus per SNMP.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="files/app/Services/Snmp/SnmpServerStatusService.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="files/app-services-snmp-snmpserverstatusservice.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="files/app-services-snmp-snmpserverstatusservice.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
120
docs/api/graphs/classes.html
Normal file
120
docs/api/graphs/classes.html
Normal file
@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<script src='https://unpkg.com/panzoom@8.7.3/dist/panzoom.min.js'></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<div class="phpdocumentor-class-graph">
|
||||
<img class="phpdocumentor-class-graph__graph" src="graphs/classes.svg" id="scene" />
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var element = document.querySelector('#scene');
|
||||
|
||||
// And pass it to panzoom
|
||||
panzoom(element, {
|
||||
smoothScroll: false
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="graphs/classes.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
163
docs/api/index.html
Normal file
163
docs/api/index.html
Normal file
@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="./">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<h2>Documentation</h2>
|
||||
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/default.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
<h4 id="packages">
|
||||
Packages
|
||||
<a href="namespaces/default.html#packages" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -package"><a href="packages/Application.html"><abbr title="\Application">Application</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
<h4 id="namespaces">
|
||||
Namespaces
|
||||
<a href="namespaces/default.html#namespaces" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app.html"><abbr title="\App">App</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="index.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
148
docs/api/indices/files.html
Normal file
148
docs/api/indices/files.html
Normal file
@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
|
||||
<h2 class="phpdocumentor-content__title">Files</h2>
|
||||
<h3>A</h3>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li><a href="files/app-controllers-authcontroller.html"><abbr title="app/Controllers/AuthController.php">AuthController.php</abbr></a></li>
|
||||
</ul>
|
||||
<h3>D</h3>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li><a href="files/app-controllers-dashboardcontroller.html"><abbr title="app/Controllers/DashboardController.php">DashboardController.php</abbr></a></li>
|
||||
</ul>
|
||||
<h3>L</h3>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li><a href="files/app-services-ldap-ldapauthservice.html"><abbr title="app/Services/Ldap/LdapAuthService.php">LdapAuthService.php</abbr></a></li>
|
||||
<li><a href="files/app-services-ldap-ldapconnectionhelper.html"><abbr title="app/Services/Ldap/LdapConnectionHelper.php">LdapConnectionHelper.php</abbr></a></li>
|
||||
<li><a href="files/app-services-ldap-ldapdirectoryservice.html"><abbr title="app/Services/Ldap/LdapDirectoryService.php">LdapDirectoryService.php</abbr></a></li>
|
||||
<li><a href="files/app-services-logging-loggingservice.html"><abbr title="app/Services/Logging/LoggingService.php">LoggingService.php</abbr></a></li>
|
||||
</ul>
|
||||
<h3>S</h3>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li><a href="files/app-services-snmp-snmpserverstatusservice.html"><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></a></li>
|
||||
</ul>
|
||||
<h3>U</h3>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li><a href="files/app-controllers-usermanagementcontroller.html"><abbr title="app/Controllers/UserManagementController.php">UserManagementController.php</abbr></a></li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="indices/files.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
173
docs/api/js/search.js
Normal file
173
docs/api/js/search.js
Normal file
@ -0,0 +1,173 @@
|
||||
// Search module for phpDocumentor
|
||||
//
|
||||
// This module is a wrapper around fuse.js that will use a given index and attach itself to a
|
||||
// search form and to a search results pane identified by the following data attributes:
|
||||
//
|
||||
// 1. data-search-form
|
||||
// 2. data-search-results
|
||||
//
|
||||
// The data-search-form is expected to have a single input element of type 'search' that will trigger searching for
|
||||
// a series of results, were the data-search-results pane is expected to have a direct UL child that will be populated
|
||||
// with rendered results.
|
||||
//
|
||||
// The search has various stages, upon loading this stage the data-search-form receives the CSS class
|
||||
// 'phpdocumentor-search--enabled'; this indicates that JS is allowed and indices are being loaded. It is recommended
|
||||
// to hide the form by default and show it when it receives this class to achieve progressive enhancement for this
|
||||
// feature.
|
||||
//
|
||||
// After loading this module, it is expected to load a search index asynchronously, for example:
|
||||
//
|
||||
// <script defer src="js/searchIndex.js"></script>
|
||||
//
|
||||
// In this script the generated index should attach itself to the search module using the `appendIndex` function. By
|
||||
// doing it like this the page will continue loading, unhindered by the loading of the search.
|
||||
//
|
||||
// After the page has fully loaded, and all these deferred indexes loaded, the initialization of the search module will
|
||||
// be called and the form will receive the class 'phpdocumentor-search--active', indicating search is ready. At this
|
||||
// point, the input field will also have it's 'disabled' attribute removed.
|
||||
var Search = (function () {
|
||||
var fuse;
|
||||
var index = [];
|
||||
var options = {
|
||||
shouldSort: true,
|
||||
threshold: 0.6,
|
||||
location: 0,
|
||||
distance: 100,
|
||||
maxPatternLength: 32,
|
||||
minMatchCharLength: 1,
|
||||
keys: [
|
||||
"fqsen",
|
||||
"name",
|
||||
"summary",
|
||||
"url"
|
||||
]
|
||||
};
|
||||
|
||||
// Credit David Walsh (https://davidwalsh.name/javascript-debounce-function)
|
||||
// Returns a function, that, as long as it continues to be invoked, will not
|
||||
// be triggered. The function will be called after it stops being called for
|
||||
// N milliseconds. If `immediate` is passed, trigger the function on the
|
||||
// leading edge, instead of the trailing.
|
||||
function debounce(func, wait, immediate) {
|
||||
var timeout;
|
||||
|
||||
return function executedFunction() {
|
||||
var context = this;
|
||||
var args = arguments;
|
||||
|
||||
var later = function () {
|
||||
timeout = null;
|
||||
if (!immediate) func.apply(context, args);
|
||||
};
|
||||
|
||||
var callNow = immediate && !timeout;
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(later, wait);
|
||||
if (callNow) func.apply(context, args);
|
||||
};
|
||||
}
|
||||
|
||||
function close() {
|
||||
// Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
|
||||
const scrollY = document.body.style.top;
|
||||
document.body.style.position = '';
|
||||
document.body.style.top = '';
|
||||
window.scrollTo(0, parseInt(scrollY || '0') * -1);
|
||||
// End scroll prevention
|
||||
|
||||
var form = document.querySelector('[data-search-form]');
|
||||
var searchResults = document.querySelector('[data-search-results]');
|
||||
|
||||
form.classList.toggle('phpdocumentor-search--has-results', false);
|
||||
searchResults.classList.add('phpdocumentor-search-results--hidden');
|
||||
var searchField = document.querySelector('[data-search-form] input[type="search"]');
|
||||
searchField.blur();
|
||||
}
|
||||
|
||||
function search(event) {
|
||||
// Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
|
||||
document.body.style.position = 'fixed';
|
||||
document.body.style.top = `-${window.scrollY}px`;
|
||||
// End scroll prevention
|
||||
|
||||
// prevent enter's from autosubmitting
|
||||
event.stopPropagation();
|
||||
|
||||
var form = document.querySelector('[data-search-form]');
|
||||
var searchResults = document.querySelector('[data-search-results]');
|
||||
var searchResultEntries = document.querySelector('[data-search-results] .phpdocumentor-search-results__entries');
|
||||
|
||||
searchResultEntries.innerHTML = '';
|
||||
|
||||
if (!event.target.value) {
|
||||
close();
|
||||
return;
|
||||
}
|
||||
|
||||
form.classList.toggle('phpdocumentor-search--has-results', true);
|
||||
searchResults.classList.remove('phpdocumentor-search-results--hidden');
|
||||
var results = fuse.search(event.target.value, {limit: 25});
|
||||
|
||||
results.forEach(function (result) {
|
||||
var entry = document.createElement("li");
|
||||
entry.classList.add("phpdocumentor-search-results__entry");
|
||||
entry.innerHTML += '<h3><a href="' + document.baseURI + result.url + '">' + result.name + "</a></h3>\n";
|
||||
entry.innerHTML += '<small>' + result.fqsen + "</small>\n";
|
||||
entry.innerHTML += '<div class="phpdocumentor-summary">' + result.summary + '</div>';
|
||||
searchResultEntries.appendChild(entry)
|
||||
});
|
||||
}
|
||||
|
||||
function appendIndex(added) {
|
||||
index = index.concat(added);
|
||||
|
||||
// re-initialize search engine when appending an index after initialisation
|
||||
if (typeof fuse !== 'undefined') {
|
||||
fuse = new Fuse(index, options);
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
fuse = new Fuse(index, options);
|
||||
|
||||
var form = document.querySelector('[data-search-form]');
|
||||
var searchField = document.querySelector('[data-search-form] input[type="search"]');
|
||||
|
||||
var closeButton = document.querySelector('.phpdocumentor-search-results__close');
|
||||
closeButton.addEventListener('click', function() { close() }.bind(this));
|
||||
|
||||
var searchResults = document.querySelector('[data-search-results]');
|
||||
searchResults.addEventListener('click', function() { close() }.bind(this));
|
||||
|
||||
form.classList.add('phpdocumentor-search--active');
|
||||
|
||||
searchField.setAttribute('placeholder', 'Search (Press "/" to focus)');
|
||||
searchField.removeAttribute('disabled');
|
||||
searchField.addEventListener('keyup', debounce(search, 300));
|
||||
|
||||
window.addEventListener('keyup', function (event) {
|
||||
if (event.key === '/') {
|
||||
searchField.focus();
|
||||
}
|
||||
if (event.code === 'Escape') {
|
||||
close();
|
||||
}
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
return {
|
||||
appendIndex,
|
||||
init
|
||||
}
|
||||
})();
|
||||
|
||||
window.addEventListener('DOMContentLoaded', function () {
|
||||
var form = document.querySelector('[data-search-form]');
|
||||
|
||||
// When JS is supported; show search box. Must be before including the search for it to take effect immediately
|
||||
form.classList.add('phpdocumentor-search--enabled');
|
||||
});
|
||||
|
||||
window.addEventListener('load', function () {
|
||||
Search.init();
|
||||
});
|
||||
284
docs/api/js/searchIndex.js
Normal file
284
docs/api/js/searchIndex.js
Normal file
@ -0,0 +1,284 @@
|
||||
Search.appendIndex(
|
||||
[
|
||||
{
|
||||
"fqsen": "\\App\\Controllers\\AuthController",
|
||||
"name": "AuthController",
|
||||
"summary": "Zust\u00E4ndig\u0020f\u00FCr\u0020alles\u0020rund\u0020um\u0020den\u0020Login\u003A\n\u002D\u0020Login\u002DFormular\u0020anzeigen\n\u002D\u0020Login\u002DDaten\u0020verarbeiten\u0020\u0028Authentifizierung\u0020gegen\u0020LDAP\/AD\u0029\n\u002D\u0020Logout\u0020durchf\u00FChren",
|
||||
"url": "classes/App-Controllers-AuthController.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "\u00DCbergibt\u0020die\u0020Konfiguration\u0020an\u0020den\u0020Controller\u0020und\u0020initialisiert\u0020den\u0020LDAP\u002DAuthentifizierungsservice.",
|
||||
"url": "classes/App-Controllers-AuthController.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003AshowLoginForm\u0028\u0029",
|
||||
"name": "showLoginForm",
|
||||
"summary": "Zeigt\u0020das\u0020Login\u002DFormular\u0020an.",
|
||||
"url": "classes/App-Controllers-AuthController.html#method_showLoginForm"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003AprocessLogin\u0028\u0029",
|
||||
"name": "processLogin",
|
||||
"summary": "Verarbeitet\u0020das\u0020Login\u002DFormular\u003A\n\u002D\u0020Liest\u0020Benutzername\u0020und\u0020Passwort\u0020aus\u0020\u0024_POST\n\u002D\u0020Ruft\u0020den\u0020LdapAuthService\u0020zur\u0020Authentifizierung\u0020auf\n\u002D\u0020Liefert\u0020bei\u0020Erfolg\u0020ein\u0020Redirect\u002DResult\u0020zum\u0020Dashboard\n\u002D\u0020Liefert\u0020bei\u0020Fehlern\u0020ein\u0020View\u002DResult\u0020f\u00FCr\u0020das\u0020Login\u002DFormular\u0020mit\u0020Fehlermeldung",
|
||||
"url": "classes/App-Controllers-AuthController.html#method_processLogin"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003Alogout\u0028\u0029",
|
||||
"name": "logout",
|
||||
"summary": "Meldet\u0020den\u0020aktuell\u0020eingeloggten\u0020Benutzer\u0020ab,\u0020indem\u0020der\u0020entsprechende\u0020Session\u002DEintrag\u0020entfernt\u0020wird,\nund\u0020liefert\u0020anschlie\u00DFend\u0020ein\u0020Redirect\u002DResult\u0020zur\u00FCck\u0020auf\u0020die\u0020Login\u002DSeite.",
|
||||
"url": "classes/App-Controllers-AuthController.html#method_logout"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-AuthController.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003A\u0024ldapAuthService",
|
||||
"name": "ldapAuthService",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-AuthController.html#property_ldapAuthService"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\AuthController\u003A\u003A\u0024logger",
|
||||
"name": "logger",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-AuthController.html#property_logger"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\DashboardController",
|
||||
"name": "DashboardController",
|
||||
"summary": "Controller\u0020f\u00FCr\u0020das\u0020Dashboard.",
|
||||
"url": "classes/App-Controllers-DashboardController.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\DashboardController\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-DashboardController.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\DashboardController\u003A\u003Ashow\u0028\u0029",
|
||||
"name": "show",
|
||||
"summary": "Zeigt\u0020das\u0020Dashboard\u0020an.",
|
||||
"url": "classes/App-Controllers-DashboardController.html#method_show"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\DashboardController\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-DashboardController.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\DashboardController\u003A\u003A\u0024snmpService",
|
||||
"name": "snmpService",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-DashboardController.html#property_snmpService"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController",
|
||||
"name": "UserManagementController",
|
||||
"summary": "Controller\u0020f\u00FCr\u0020die\u0020Benutzer\u002D\u0020und\u0020Gruppenanzeige.",
|
||||
"url": "classes/App-Controllers-UserManagementController.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003Ashow\u0028\u0029",
|
||||
"name": "show",
|
||||
"summary": "Zeigt\u0020Benutzer\u002D\u0020und\u0020Gruppenliste\u0020an.",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#method_show"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003Acreate\u0028\u0029",
|
||||
"name": "create",
|
||||
"summary": "Zeigt\u0020die\u0020Seite\u0020zum\u0020Erstellen\u0020von\u0020Benutzern\u0020\u0028Einzel\/CSV\u0029.",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#method_create"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003A\u0024directoryService",
|
||||
"name": "directoryService",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#property_directoryService"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers\\UserManagementController\u003A\u003A\u0024logger",
|
||||
"name": "logger",
|
||||
"summary": "",
|
||||
"url": "classes/App-Controllers-UserManagementController.html#property_logger"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapAuthService",
|
||||
"name": "LdapAuthService",
|
||||
"summary": "Service\u0020zur\u0020Authentifizierung\u0020von\u0020Benutzern\u0020gegen\u0020ein\u0020Active\u0020Directory\u0020per\u0020LDAP\/LDAPS.",
|
||||
"url": "classes/App-Services-Ldap-LdapAuthService.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapAuthService\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "Erwartet\u0020den\u0020Teilbereich\u0020\u0022ldap\u0022\u0020aus\u0020der\u0020allgemeinen\u0020Konfiguration\u0020\u0028config.php\u0029.",
|
||||
"url": "classes/App-Services-Ldap-LdapAuthService.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapAuthService\u003A\u003Aauthenticate\u0028\u0029",
|
||||
"name": "authenticate",
|
||||
"summary": "F\u00FChrt\u0020die\u0020eigentliche\u0020LDAP\/AD\u002DAuthentifizierung\u0020durch.",
|
||||
"url": "classes/App-Services-Ldap-LdapAuthService.html#method_authenticate"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapAuthService\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapAuthService.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapAuthService\u003A\u003A\u0024connectionHelper",
|
||||
"name": "connectionHelper",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapAuthService.html#property_connectionHelper"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapConnectionHelper",
|
||||
"name": "LdapConnectionHelper",
|
||||
"summary": "Hilfsklasse\u0020zum\u0020Aufbau\u0020einer\u0020LDAP\/LDAPS\u002DVerbindung.",
|
||||
"url": "classes/App-Services-Ldap-LdapConnectionHelper.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapConnectionHelper\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapConnectionHelper.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapConnectionHelper\u003A\u003AcreateConnection\u0028\u0029",
|
||||
"name": "createConnection",
|
||||
"summary": "Erstellt\u0020eine\u0020LDAP\u002DVerbindung\u0020mit\u0020gesetzten\u0020Optionen\u0020\u0028Protokollversion,\u0020Timeout\u0029,\naber\u0020ohne\u0020Bind.\u0020Den\u0020Bind\u0020f\u00FChren\u0020die\u0020aufrufenden\u0020Services\u0020durch.",
|
||||
"url": "classes/App-Services-Ldap-LdapConnectionHelper.html#method_createConnection"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapConnectionHelper\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapConnectionHelper.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService",
|
||||
"name": "LdapDirectoryService",
|
||||
"summary": "Service\u0020zum\u0020Lesen\u0020von\u0020Objekten\u0020aus\u0020dem\u0020Active\u0020Directory.",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003Aconnect\u0028\u0029",
|
||||
"name": "connect",
|
||||
"summary": "Stellt\u0020eine\u0020LDAP\u002DVerbindung\u0020her\u0020und\u0020bindet\u0020sich\u0020mit\u0020dem\u0020technischen\u0020Konto.",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#method_connect"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003AgetUsers\u0028\u0029",
|
||||
"name": "getUsers",
|
||||
"summary": "Liefert\u0020eine\u0020Liste\u0020von\u0020Benutzern\u0020aus\u0020dem\u0020AD.",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#method_getUsers"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003AgetGroups\u0028\u0029",
|
||||
"name": "getGroups",
|
||||
"summary": "Liefert\u0020eine\u0020Liste\u0020von\u0020Gruppen\u0020aus\u0020dem\u0020AD.",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#method_getGroups"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap\\LdapDirectoryService\u003A\u003A\u0024connectionHelper",
|
||||
"name": "connectionHelper",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Ldap-LdapDirectoryService.html#property_connectionHelper"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService",
|
||||
"name": "LoggingService",
|
||||
"summary": "Einfacher\u0020File\u002DLogger\u0020f\u00FCr\u0020die\u0020AdminTool\u002DAnwendung.",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003AensureLogDirectoryExists\u0028\u0029",
|
||||
"name": "ensureLogDirectoryExists",
|
||||
"summary": "Stellt\u0020sicher,\u0020dass\u0020das\u0020Log\u002DVerzeichnis\u0020existiert.",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#method_ensureLogDirectoryExists"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003Alog\u0028\u0029",
|
||||
"name": "log",
|
||||
"summary": "Allgemeiner\u0020Log\u002DEintrag.",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#method_log"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003AlogException\u0028\u0029",
|
||||
"name": "logException",
|
||||
"summary": "Komfortmethode,\u0020um\u0020Exceptions\u0020strukturiert\u0020zu\u0020loggen.",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#method_logException"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003ALEVEL_MAP",
|
||||
"name": "LEVEL_MAP",
|
||||
"summary": "Zuordnung\u0020der\u0020Log\u002DLevel\u0020zu\u0020numerischen\u0020Werten\u0020zur\u0020Filterung.",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#constant_LEVEL_MAP"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003A\u0024logDir",
|
||||
"name": "logDir",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#property_logDir"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003A\u0024logFile",
|
||||
"name": "logFile",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#property_logFile"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging\\LoggingService\u003A\u003A\u0024minLevel",
|
||||
"name": "minLevel",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Logging-LoggingService.html#property_minLevel"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Snmp\\SnmpServerStatusService",
|
||||
"name": "SnmpServerStatusService",
|
||||
"summary": "Service\u0020zur\u0020Ermittlung\u0020des\u0020Serverstatus\u0020per\u0020SNMP.",
|
||||
"url": "classes/App-Services-Snmp-SnmpServerStatusService.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Snmp\\SnmpServerStatusService\u003A\u003A__construct\u0028\u0029",
|
||||
"name": "__construct",
|
||||
"summary": "Erwartet\u0020den\u0020Teilbereich\u0020\u0022snmp\u0022\u0020aus\u0020der\u0020allgemeinen\u0020Konfiguration\u0020\u0028config.php\u0029.",
|
||||
"url": "classes/App-Services-Snmp-SnmpServerStatusService.html#method___construct"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Snmp\\SnmpServerStatusService\u003A\u003AgetServerStatus\u0028\u0029",
|
||||
"name": "getServerStatus",
|
||||
"summary": "Liefert\u0020den\u0020aktuellen\u0020Serverstatus\u0020zur\u00FCck.",
|
||||
"url": "classes/App-Services-Snmp-SnmpServerStatusService.html#method_getServerStatus"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Snmp\\SnmpServerStatusService\u003A\u003A\u0024config",
|
||||
"name": "config",
|
||||
"summary": "",
|
||||
"url": "classes/App-Services-Snmp-SnmpServerStatusService.html#property_config"
|
||||
}, {
|
||||
"fqsen": "\\",
|
||||
"name": "\\",
|
||||
"summary": "",
|
||||
"url": "namespaces/default.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Controllers",
|
||||
"name": "Controllers",
|
||||
"summary": "",
|
||||
"url": "namespaces/app-controllers.html"
|
||||
}, {
|
||||
"fqsen": "\\App",
|
||||
"name": "App",
|
||||
"summary": "",
|
||||
"url": "namespaces/app.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Ldap",
|
||||
"name": "Ldap",
|
||||
"summary": "",
|
||||
"url": "namespaces/app-services-ldap.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services",
|
||||
"name": "Services",
|
||||
"summary": "",
|
||||
"url": "namespaces/app-services.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Logging",
|
||||
"name": "Logging",
|
||||
"summary": "",
|
||||
"url": "namespaces/app-services-logging.html"
|
||||
}, {
|
||||
"fqsen": "\\App\\Services\\Snmp",
|
||||
"name": "Snmp",
|
||||
"summary": "",
|
||||
"url": "namespaces/app-services-snmp.html"
|
||||
} ]
|
||||
);
|
||||
34
docs/api/js/template.js
Normal file
34
docs/api/js/template.js
Normal file
@ -0,0 +1,34 @@
|
||||
(function(){
|
||||
window.addEventListener('load', () => {
|
||||
const el = document.querySelector('.phpdocumentor-on-this-page__content')
|
||||
if (!el) {
|
||||
return;
|
||||
}
|
||||
|
||||
const observer = new IntersectionObserver(
|
||||
([e]) => {
|
||||
e.target.classList.toggle("-stuck", e.intersectionRatio < 1);
|
||||
},
|
||||
{threshold: [1]}
|
||||
);
|
||||
|
||||
observer.observe(el);
|
||||
})
|
||||
})();
|
||||
function openSvg(svg) {
|
||||
// convert to a valid XML source
|
||||
const as_text = new XMLSerializer().serializeToString(svg);
|
||||
// store in a Blob
|
||||
const blob = new Blob([as_text], { type: "image/svg+xml" });
|
||||
// create an URI pointing to that blob
|
||||
const url = URL.createObjectURL(blob);
|
||||
const win = open(url);
|
||||
// so the Garbage Collector can collect the blob
|
||||
win.onload = (evt) => URL.revokeObjectURL(url);
|
||||
};
|
||||
|
||||
|
||||
var svgs = document.querySelectorAll(".phpdocumentor-uml-diagram svg");
|
||||
for( var i=0,il = svgs.length; i< il; i ++ ) {
|
||||
svgs[i].onclick = (evt) => openSvg(evt.target);
|
||||
}
|
||||
274
docs/api/namespaces/app-controllers.html
Normal file
274
docs/api/namespaces/app-controllers.html
Normal file
@ -0,0 +1,274 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="-active">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">Controllers</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app-controllers.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="namespaces/app-controllers.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-AuthController.html"><abbr title="\App\Controllers\AuthController">AuthController</abbr></a></dt><dd>Zuständig für alles rund um den Login:
|
||||
- Login-Formular anzeigen
|
||||
- Login-Daten verarbeiten (Authentifizierung gegen LDAP/AD)
|
||||
- Logout durchführen</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-DashboardController.html"><abbr title="\App\Controllers\DashboardController">DashboardController</abbr></a></dt><dd>Controller für das Dashboard.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-UserManagementController.html"><abbr title="\App\Controllers\UserManagementController">UserManagementController</abbr></a></dt><dd>Controller für die Benutzer- und Gruppenanzeige.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="namespaces/app-controllers.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app-controllers.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
272
docs/api/namespaces/app-services-ldap.html
Normal file
272
docs/api/namespaces/app-services-ldap.html
Normal file
@ -0,0 +1,272 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">Ldap</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app-services-ldap.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="namespaces/app-services-ldap.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapAuthService.html"><abbr title="\App\Services\Ldap\LdapAuthService">LdapAuthService</abbr></a></dt><dd>Service zur Authentifizierung von Benutzern gegen ein Active Directory per LDAP/LDAPS.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a></dt><dd>Hilfsklasse zum Aufbau einer LDAP/LDAPS-Verbindung.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapDirectoryService.html"><abbr title="\App\Services\Ldap\LdapDirectoryService">LdapDirectoryService</abbr></a></dt><dd>Service zum Lesen von Objekten aus dem Active Directory.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="namespaces/app-services-ldap.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app-services-ldap.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
272
docs/api/namespaces/app-services-logging.html
Normal file
272
docs/api/namespaces/app-services-logging.html
Normal file
@ -0,0 +1,272 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">Logging</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app-services-logging.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="namespaces/app-services-logging.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a></dt><dd>Einfacher File-Logger für die AdminTool-Anwendung.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="namespaces/app-services-logging.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app-services-logging.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
272
docs/api/namespaces/app-services-snmp.html
Normal file
272
docs/api/namespaces/app-services-snmp.html
Normal file
@ -0,0 +1,272 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app-services.html">Services</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">Snmp</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app-services-snmp.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="namespaces/app-services-snmp.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Snmp-SnmpServerStatusService.html"><abbr title="\App\Services\Snmp\SnmpServerStatusService">SnmpServerStatusService</abbr></a></dt><dd>Service zur Ermittlung des Serverstatus per SNMP.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="namespaces/app-services-snmp.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app-services-snmp.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
273
docs/api/namespaces/app-services.html
Normal file
273
docs/api/namespaces/app-services.html
Normal file
@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="-active">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li class="phpdocumentor-breadcrumb"><a href="namespaces/app.html">App</a></li>
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">Services</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app-services.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
<h4 id="namespaces">
|
||||
Namespaces
|
||||
<a href="namespaces/app-services.html#namespaces" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app-services-ldap.html"><abbr title="\App\Services\Ldap">Ldap</abbr></a></dt>
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app-services-logging.html"><abbr title="\App\Services\Logging">Logging</abbr></a></dt>
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app-services-snmp.html"><abbr title="\App\Services\Snmp">Snmp</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app-services.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
271
docs/api/namespaces/app.html
Normal file
271
docs/api/namespaces/app.html
Normal file
@ -0,0 +1,271 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="-active">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">App</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/app.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
<h4 id="namespaces">
|
||||
Namespaces
|
||||
<a href="namespaces/app.html#namespaces" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app-controllers.html"><abbr title="\App\Controllers">Controllers</abbr></a></dt>
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app-services.html"><abbr title="\App\Services">Services</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/app.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
270
docs/api/namespaces/default.html
Normal file
270
docs/api/namespaces/default.html
Normal file
@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -namespace">
|
||||
<h2 class="phpdocumentor-content__title">API Documentation</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="namespaces/default.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
<h4 id="namespaces">
|
||||
Namespaces
|
||||
<a href="namespaces/default.html#namespaces" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -namespace"><a href="namespaces/app.html"><abbr title="\App">App</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="namespaces/default.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
273
docs/api/packages/Application.html
Normal file
273
docs/api/packages/Application.html
Normal file
@ -0,0 +1,273 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="-active">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -package">
|
||||
<h2 class="phpdocumentor-content__title">Application</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="packages/Application.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 id="toc-classes">
|
||||
Classes
|
||||
<a href="packages/Application.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-AuthController.html"><abbr title="\App\Controllers\AuthController">AuthController</abbr></a></dt><dd>Zuständig für alles rund um den Login:
|
||||
- Login-Formular anzeigen
|
||||
- Login-Daten verarbeiten (Authentifizierung gegen LDAP/AD)
|
||||
- Logout durchführen</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-DashboardController.html"><abbr title="\App\Controllers\DashboardController">DashboardController</abbr></a></dt><dd>Controller für das Dashboard.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Controllers-UserManagementController.html"><abbr title="\App\Controllers\UserManagementController">UserManagementController</abbr></a></dt><dd>Controller für die Benutzer- und Gruppenanzeige.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapAuthService.html"><abbr title="\App\Services\Ldap\LdapAuthService">LdapAuthService</abbr></a></dt><dd>Service zur Authentifizierung von Benutzern gegen ein Active Directory per LDAP/LDAPS.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapConnectionHelper.html"><abbr title="\App\Services\Ldap\LdapConnectionHelper">LdapConnectionHelper</abbr></a></dt><dd>Hilfsklasse zum Aufbau einer LDAP/LDAPS-Verbindung.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Ldap-LdapDirectoryService.html"><abbr title="\App\Services\Ldap\LdapDirectoryService">LdapDirectoryService</abbr></a></dt><dd>Service zum Lesen von Objekten aus dem Active Directory.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Logging-LoggingService.html"><abbr title="\App\Services\Logging\LoggingService">LoggingService</abbr></a></dt><dd>Einfacher File-Logger für die AdminTool-Anwendung.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/App-Services-Snmp-SnmpServerStatusService.html"><abbr title="\App\Services\Snmp\SnmpServerStatusService">SnmpServerStatusService</abbr></a></dt><dd>Service zur Ermittlung des Serverstatus per SNMP.</dd> </dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li><a href="packages/Application.html#toc-classes">Classes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="packages/Application.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
270
docs/api/packages/default.html
Normal file
270
docs/api/packages/default.html
Normal file
@ -0,0 +1,270 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Documentation</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
</ul>
|
||||
|
||||
<article class="phpdocumentor-element -package">
|
||||
<h2 class="phpdocumentor-content__title">API Documentation</h2>
|
||||
|
||||
|
||||
<h3 id="toc">
|
||||
Table of Contents
|
||||
<a href="packages/default.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h3>
|
||||
|
||||
<h4 id="packages">
|
||||
Packages
|
||||
<a href="packages/default.html#packages" class="headerlink"><i class="fas fa-link"></i></a>
|
||||
|
||||
</h4>
|
||||
<dl class="phpdocumentor-table-of-contents">
|
||||
<dt class="phpdocumentor-table-of-contents__entry -package"><a href="packages/Application.html"><abbr title="\Application">Application</abbr></a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="phpdocumentor-modal" id="source-view">
|
||||
<div class="phpdocumentor-modal-bg" data-exit-button></div>
|
||||
<div class="phpdocumentor-modal-container">
|
||||
<div class="phpdocumentor-modal-content">
|
||||
<pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
|
||||
</div>
|
||||
<button data-exit-button class="phpdocumentor-modal__close">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function () {
|
||||
function loadExternalCodeSnippet(el, url, line) {
|
||||
Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
|
||||
const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
|
||||
const language = 'php';
|
||||
|
||||
const code = document.createElement('code');
|
||||
code.className = 'language-' + language;
|
||||
pre.textContent = '';
|
||||
pre.setAttribute('data-line', line)
|
||||
code.textContent = 'Loading…';
|
||||
pre.appendChild(code);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', src, true);
|
||||
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status < 400 && xhr.responseText) {
|
||||
code.textContent = xhr.responseText;
|
||||
Prism.highlightElement(code);
|
||||
d=document.getElementsByClassName("line-numbers");
|
||||
d[0].scrollTop = d[0].children[1].offsetTop;
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status === 404) {
|
||||
code.textContent = '✖ Error: File could not be found';
|
||||
return;
|
||||
}
|
||||
|
||||
if (xhr.status >= 400) {
|
||||
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
||||
return;
|
||||
}
|
||||
|
||||
code.textContent = '✖ Error: An unknown error occurred';
|
||||
};
|
||||
|
||||
xhr.send(null);
|
||||
});
|
||||
}
|
||||
|
||||
const modalButtons = document.querySelectorAll("[data-modal]");
|
||||
const openedAsLocalFile = window.location.protocol === 'file:';
|
||||
if (modalButtons.length > 0 && openedAsLocalFile) {
|
||||
console.warn(
|
||||
'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
|
||||
'browsers block XHR requests when a page is opened this way'
|
||||
);
|
||||
}
|
||||
|
||||
modalButtons.forEach(function (trigger) {
|
||||
if (openedAsLocalFile) {
|
||||
trigger.setAttribute("hidden", "hidden");
|
||||
}
|
||||
|
||||
trigger.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
const modal = document.getElementById(trigger.dataset.modal);
|
||||
if (!modal) {
|
||||
console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
|
||||
return;
|
||||
}
|
||||
modal.classList.add("phpdocumentor-modal__open");
|
||||
|
||||
loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
|
||||
const exits = modal.querySelectorAll("[data-exit-button]");
|
||||
exits.forEach(function (exit) {
|
||||
exit.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
modal.classList.remove("phpdocumentor-modal__open");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section class="phpdocumentor-on-this-page__sidebar">
|
||||
|
||||
<section class="phpdocumentor-on-this-page__content">
|
||||
<strong class="phpdocumentor-on-this-page__title">On this page</strong>
|
||||
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
<li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
|
||||
<li>
|
||||
<ul class="phpdocumentor-list -clean">
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="packages/default.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
136
docs/api/reports/deprecated.html
Normal file
136
docs/api/reports/deprecated.html
Normal file
@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> Documentation » Deprecated elements
|
||||
</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li><a href="">Home</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="phpdocumentor-row">
|
||||
<h2 class="phpdocumentor-content__title">Deprecated</h2>
|
||||
|
||||
|
||||
<div class="phpdocumentor-admonition phpdocumentor-admonition--success">
|
||||
No deprecated elements have been found in this project.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="reports/deprecated.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
135
docs/api/reports/errors.html
Normal file
135
docs/api/reports/errors.html
Normal file
@ -0,0 +1,135 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> Documentation » Compilation errors
|
||||
</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li><a href="">Home</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="phpdocumentor-row">
|
||||
<h2 class="phpdocumentor-content__title">Errors</h2>
|
||||
|
||||
|
||||
<div class="phpdocumentor-admonition phpdocumentor-admonition--success">No errors have been found in this project.</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="reports/errors.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
158
docs/api/reports/markers.html
Normal file
158
docs/api/reports/markers.html
Normal file
@ -0,0 +1,158 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> Documentation » Markers
|
||||
</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<base href="../">
|
||||
<link rel="icon" href="images/favicon.ico"/>
|
||||
<link rel="stylesheet" href="css/normalize.css">
|
||||
<link rel="stylesheet" href="css/base.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/template.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
|
||||
<script src="js/template.js"></script>
|
||||
<script src="js/search.js"></script>
|
||||
<script defer src="js/searchIndex.js"></script>
|
||||
</head>
|
||||
<body id="top">
|
||||
<header class="phpdocumentor-header phpdocumentor-section">
|
||||
<h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
|
||||
<input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
|
||||
<label class="phpdocumentor-header__menu-icon" for="menu-button">
|
||||
<i class="fas fa-bars"></i>
|
||||
</label>
|
||||
<section data-search-form class="phpdocumentor-search">
|
||||
<label>
|
||||
<span class="visually-hidden">Search for</span>
|
||||
<svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
|
||||
<line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
|
||||
</svg>
|
||||
<input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
|
||||
</label>
|
||||
</section>
|
||||
|
||||
<nav class="phpdocumentor-topnav">
|
||||
<ul class="phpdocumentor-topnav__menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="phpdocumentor">
|
||||
<div class="phpdocumentor-section">
|
||||
<input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
|
||||
<label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
|
||||
Menu
|
||||
</label>
|
||||
<aside class="phpdocumentor-column -three phpdocumentor-sidebar">
|
||||
<section class="phpdocumentor-sidebar__category -namespaces">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="namespaces/app.html" class="">App</a>
|
||||
</h4>
|
||||
<ul class="phpdocumentor-list">
|
||||
<li>
|
||||
<a href="namespaces/app-controllers.html" class="">Controllers</a>
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<a href="namespaces/app-services.html" class="">Services</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section class="phpdocumentor-sidebar__category -packages">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
|
||||
<h4 class="phpdocumentor-sidebar__root-namespace">
|
||||
<a href="packages/Application.html" class="">Application</a>
|
||||
</h4>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -reports">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
|
||||
</section>
|
||||
|
||||
<section class="phpdocumentor-sidebar__category -indices">
|
||||
<h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
|
||||
<h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
|
||||
</section>
|
||||
</aside>
|
||||
|
||||
<div class="phpdocumentor-column -nine phpdocumentor-content">
|
||||
<section>
|
||||
<ul class="phpdocumentor-breadcrumbs">
|
||||
<li><a href="">Home</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="phpdocumentor-row">
|
||||
<h2 class="phpdocumentor-content__title">Markers</h2>
|
||||
|
||||
<h3>Table of Contents</h3>
|
||||
<table class="phpdocumentor-table_of_contents">
|
||||
<tr>
|
||||
<td class="phpdocumentor-cell"><a href="reports/markers.html#app/Services/Snmp/SnmpServerStatusService.php">app/Services/Snmp/SnmpServerStatusService.php</a></td>
|
||||
<td class="phpdocumentor-cell">1</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<a id="app/Services/Snmp/SnmpServerStatusService.php"></a>
|
||||
<h3><abbr title="app/Services/Snmp/SnmpServerStatusService.php">SnmpServerStatusService.php</abbr></h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="phpdocumentor-heading">Type</th>
|
||||
<th class="phpdocumentor-heading">Line</th>
|
||||
<th class="phpdocumentor-heading">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="phpdocumentor-cell">TODO</td>
|
||||
<td class="phpdocumentor-cell">223</td>
|
||||
<td class="phpdocumentor-cell">OS dynamisch per SNMP abfragen (OID 1.3.6.1.2.1.1.1.0)
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
|
||||
<section class="phpdocumentor-search-results__dialog">
|
||||
<header class="phpdocumentor-search-results__header">
|
||||
<h2 class="phpdocumentor-search-results__title">Search results</h2>
|
||||
<button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
|
||||
</header>
|
||||
<section class="phpdocumentor-search-results__body">
|
||||
<ul class="phpdocumentor-search-results__entries"></ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
<a href="reports/markers.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
|
||||
|
||||
</main>
|
||||
|
||||
<script>
|
||||
cssVars({});
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
164
public/api/create_user.php
Normal file
164
public/api/create_user.php
Normal file
@ -0,0 +1,164 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
session_start();
|
||||
|
||||
// Load config
|
||||
$config = require __DIR__ . '/../../config/config.php';
|
||||
|
||||
// Simple login check (same as index.php)
|
||||
$sessionKey = $config['security']['session_key_user'] ?? 'admin_user';
|
||||
if (!isset($_SESSION[$sessionKey])) {
|
||||
header('Location: ../index.php?route=login');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Only accept POST
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Basic input validation
|
||||
$sam = trim((string)($_POST['samaccountname'] ?? ''));
|
||||
$display = trim((string)($_POST['displayname'] ?? ''));
|
||||
$mail = trim((string)($_POST['mail'] ?? ''));
|
||||
$pass = (string)($_POST['password'] ?? '');
|
||||
$ou = trim((string)($_POST['ou'] ?? ''));
|
||||
$groups = trim((string)($_POST['groups'] ?? ''));
|
||||
|
||||
if ($sam === '' || $pass === '') {
|
||||
$_SESSION['flash_error'] = 'Anmeldename und Passwort sind erforderlich.';
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Server-side password validation (same rules as CSV script)
|
||||
$passwordHint = "Das Passwort muss mindestens 7 Zeichen lang sein, darf keine größeren Teile des Benutzernamens enthalten und muss Zeichen aus mindestens 3 von 4 Kategorien enthalten: Großbuchstaben, Kleinbuchstaben, Ziffern, Sonderzeichen.";
|
||||
function validate_password_php(string $password, string $sam): array {
|
||||
$errors = [];
|
||||
if ($password === '' || mb_strlen($password) < 7) {
|
||||
$errors[] = 'Passwort muss mindestens 7 Zeichen lang sein.';
|
||||
}
|
||||
$categories = 0;
|
||||
if (preg_match('/[A-Z]/u', $password)) $categories++;
|
||||
if (preg_match('/[a-z]/u', $password)) $categories++;
|
||||
if (preg_match('/\d/', $password)) $categories++;
|
||||
if (preg_match('/[^A-Za-z0-9]/u', $password)) $categories++;
|
||||
if ($categories < 3) {
|
||||
$errors[] = 'Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten.';
|
||||
}
|
||||
$samLower = mb_strtolower($sam);
|
||||
$pwLower = mb_strtolower($password);
|
||||
if ($samLower !== '' && mb_strpos($pwLower, $samLower) !== false) {
|
||||
$errors[] = 'Passwort darf den Benutzernamen nicht enthalten.';
|
||||
} else {
|
||||
$minLen = 4;
|
||||
if (mb_strlen($samLower) >= $minLen) {
|
||||
$samLen = mb_strlen($samLower);
|
||||
for ($len = $minLen; $len <= $samLen; $len++) {
|
||||
for ($start = 0; $start <= $samLen - $len; $start++) {
|
||||
$sub = mb_substr($samLower, $start, $len);
|
||||
if (mb_strpos($pwLower, $sub) !== false) {
|
||||
$errors[] = 'Passwort darf keine größeren Teile des Benutzernamens enthalten.';
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $errors;
|
||||
}
|
||||
|
||||
$pwErrors = validate_password_php($pass, $sam);
|
||||
if (count($pwErrors) > 0) {
|
||||
$_SESSION['flash_error'] = 'Ungültiges Passwort: ' . implode(' | ', $pwErrors) . "\n\nHinweis: $passwordHint";
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($ou === '') {
|
||||
$defaultOu = (string)($config['powershell']['default_ou'] ?? '');
|
||||
if ($defaultOu !== '') {
|
||||
$ou = $defaultOu;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Build payload
|
||||
$payload = [
|
||||
'samaccountname' => $sam,
|
||||
'displayname' => $display,
|
||||
'mail' => $mail,
|
||||
'password' => $pass,
|
||||
'ou' => $ou,
|
||||
'groups' => $groups,
|
||||
'dry_run' => (bool)($config['powershell']['dry_run'] ?? false),
|
||||
];
|
||||
|
||||
// Write payload to temp file
|
||||
$tmpFile = tempnam(sys_get_temp_dir(), 'create_user_') . '.json';
|
||||
file_put_contents($tmpFile, json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
|
||||
// Build PS script path
|
||||
$scriptDir = $config['powershell']['script_dir'] ?? __DIR__ . '/../../scripts/powershell';
|
||||
$script = $scriptDir . DIRECTORY_SEPARATOR . 'create_user.ps1';
|
||||
|
||||
$exe = $config['powershell']['exe'] ?? 'powershell';
|
||||
$executionPolicy = $config['powershell']['execution_policy'] ?? 'Bypass';
|
||||
|
||||
$cmd = sprintf(
|
||||
'%s -NoProfile -NonInteractive -ExecutionPolicy %s -File "%s" -InputFile "%s"',
|
||||
$exe,
|
||||
$executionPolicy,
|
||||
$script,
|
||||
$tmpFile
|
||||
);
|
||||
|
||||
// Execute and capture output and exit code
|
||||
$output = [];
|
||||
$returnVar = null;
|
||||
if (!file_exists($script)) {
|
||||
$_SESSION['flash_error'] = 'PowerShell-Skript nicht gefunden: ' . $script;
|
||||
@unlink($tmpFile);
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Try to locate the PowerShell executable
|
||||
$exePathCheck = shell_exec(sprintf('where %s 2>NUL', escapeshellarg($exe)));
|
||||
if ($exePathCheck === null) {
|
||||
// 'where' returns null when command fails; continue anyways, exec will fail if not found
|
||||
}
|
||||
|
||||
exec($cmd . ' 2>&1', $output, $returnVar);
|
||||
$json = implode("\n", $output);
|
||||
|
||||
// Optional: write raw output into logs for debugging
|
||||
@file_put_contents(__DIR__ . '/../logs/create_user_output.log', date('Y-m-d H:i:s') . ' CMD: ' . $cmd . "\n" . $json . "\n\n", FILE_APPEND | LOCK_EX);
|
||||
|
||||
@unlink($tmpFile);
|
||||
|
||||
// Try to parse JSON output
|
||||
$result = null;
|
||||
if ($json !== '') {
|
||||
$decoded = json_decode($json, true);
|
||||
if (is_array($decoded)) {
|
||||
$result = $decoded;
|
||||
}
|
||||
}
|
||||
|
||||
if ($result === null) {
|
||||
$_SESSION['flash_error'] = 'Unbekannter Fehler beim Ausführen des PowerShell-Skripts: ' . ($json ?: 'Keine Ausgabe');
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!empty($result['success'])) {
|
||||
$_SESSION['flash_success'] = $result['message'] ?? 'Benutzer erfolgreich erstellt.';
|
||||
} else {
|
||||
$_SESSION['flash_error'] = $result['message'] ?? 'Fehler beim Erstellen des Benutzers.';
|
||||
}
|
||||
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
111
public/api/create_users_csv.php
Normal file
111
public/api/create_users_csv.php
Normal file
@ -0,0 +1,111 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
session_start();
|
||||
|
||||
// Load config
|
||||
$config = require __DIR__ . '/../../config/config.php';
|
||||
|
||||
// Simple login check (same as index.php)
|
||||
$sessionKey = $config['security']['session_key_user'] ?? 'admin_user';
|
||||
if (!isset($_SESSION[$sessionKey])) {
|
||||
header('Location: ../index.php?route=login');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
$delimiter = (string)($_POST['csvdelimiter'] ?? ',');
|
||||
$hasHeader = (string)($_POST['hasHeader'] ?? '1');
|
||||
|
||||
// Two sources: uploaded file or csvcontent textarea
|
||||
$csvContent = '';
|
||||
if (!empty($_FILES['csvfile']['tmp_name']) && is_uploaded_file($_FILES['csvfile']['tmp_name'])) {
|
||||
$csvContent = file_get_contents($_FILES['csvfile']['tmp_name']);
|
||||
} else {
|
||||
$csvContent = (string)($_POST['csvcontent'] ?? '');
|
||||
}
|
||||
|
||||
if (trim($csvContent) === '') {
|
||||
$_SESSION['flash_error'] = 'CSV ist leer. Bitte Datei auswählen oder Inhalt einfügen.';
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Write CSV to temp file
|
||||
$tmpFile = tempnam(sys_get_temp_dir(), 'create_users_') . '.csv';
|
||||
file_put_contents($tmpFile, $csvContent);
|
||||
|
||||
// Build payload with options
|
||||
$payload = [
|
||||
'input_file' => $tmpFile,
|
||||
'delimiter' => $delimiter,
|
||||
'has_header' => (bool)((int)$hasHeader),
|
||||
'dry_run' => (bool)($config['powershell']['dry_run'] ?? false),
|
||||
'default_ou' => (string)($config['powershell']['default_ou'] ?? ''),
|
||||
];
|
||||
|
||||
// Save options as JSON as the input to the PS script
|
||||
$metaFile = tempnam(sys_get_temp_dir(), 'create_users_meta_') . '.json';
|
||||
file_put_contents($metaFile, json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
|
||||
$scriptDir = $config['powershell']['script_dir'] ?? __DIR__ . '/../../scripts/powershell';
|
||||
$script = $scriptDir . DIRECTORY_SEPARATOR . 'create_users_csv.ps1';
|
||||
$exe = $config['powershell']['exe'] ?? 'powershell';
|
||||
$executionPolicy = $config['powershell']['execution_policy'] ?? 'Bypass';
|
||||
|
||||
$cmd = sprintf(
|
||||
'%s -NoProfile -NonInteractive -ExecutionPolicy %s -File "%s" -InputFile "%s"',
|
||||
$exe,
|
||||
$executionPolicy,
|
||||
$script,
|
||||
$metaFile
|
||||
);
|
||||
|
||||
$output = [];
|
||||
$returnVar = null;
|
||||
if (!file_exists($script)) {
|
||||
$_SESSION['flash_error'] = 'PowerShell-Skript nicht gefunden: ' . $script;
|
||||
@unlink($tmpFile);
|
||||
@unlink($metaFile);
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
exec($cmd . ' 2>&1', $output, $returnVar);
|
||||
$json = implode("\n", $output);
|
||||
|
||||
@unlink($tmpFile);
|
||||
@unlink($metaFile);
|
||||
|
||||
// Optional: log the CSV script command and raw output to help debugging
|
||||
@file_put_contents(__DIR__ . '/../logs/create_users_csv_output.log', date('Y-m-d H:i:s') . ' CMD: ' . $cmd . "\n" . $json . "\n\n", FILE_APPEND | LOCK_EX);
|
||||
|
||||
$result = null;
|
||||
if ($json !== '') {
|
||||
$decoded = json_decode($json, true);
|
||||
if (is_array($decoded)) {
|
||||
$result = $decoded;
|
||||
}
|
||||
}
|
||||
|
||||
if ($result === null) {
|
||||
$_SESSION['flash_error'] = 'Unbekannter Fehler beim Ausführen des PowerShell-Skripts: ' . ($json ?: 'Keine Ausgabe');
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!empty($result['success'])) {
|
||||
$_SESSION['flash_success'] = $result['message'] ?? 'CSV verarbeitet.';
|
||||
if (!empty($result['details'])) {
|
||||
$_SESSION['csv_details'] = $result['details'];
|
||||
}
|
||||
} else {
|
||||
$_SESSION['flash_error'] = $result['message'] ?? 'Fehler beim Verarbeiten der CSV.';
|
||||
}
|
||||
|
||||
header('Location: ../index.php?route=createuser');
|
||||
exit;
|
||||
45
public/api/powershell_check.php
Normal file
45
public/api/powershell_check.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
session_start();
|
||||
|
||||
// Load config
|
||||
$config = require __DIR__ . '/../../config/config.php';
|
||||
|
||||
// Simple login check (same as index.php)
|
||||
$sessionKey = $config['security']['session_key_user'] ?? 'admin_user';
|
||||
if (!isset($_SESSION[$sessionKey])) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'Not authenticated']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$scriptDir = $config['powershell']['script_dir'] ?? __DIR__ . '/../../scripts/powershell';
|
||||
$script = $scriptDir . DIRECTORY_SEPARATOR . 'check_environment.ps1';
|
||||
$exe = $config['powershell']['exe'] ?? 'powershell';
|
||||
$executionPolicy = $config['powershell']['execution_policy'] ?? 'Bypass';
|
||||
|
||||
if (!file_exists($script)) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'Script not found: ' . $script]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$cmd = sprintf('%s -NoProfile -NonInteractive -ExecutionPolicy %s -File "%s"', $exe, $executionPolicy, $script);
|
||||
|
||||
$output = [];
|
||||
$returnVar = null;
|
||||
exec($cmd . ' 2>&1', $output, $returnVar);
|
||||
$json = implode("\n", $output);
|
||||
|
||||
// Attempt to parse JSON
|
||||
$decoded = json_decode($json, true);
|
||||
if ($decoded === null) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'Invalid JSON output', 'raw' => $json]);
|
||||
exit;
|
||||
}
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($decoded);
|
||||
exit;
|
||||
@ -6,16 +6,12 @@ declare(strict_types=1);
|
||||
*
|
||||
* Nur authentifizierte Admins dürfen auf diesen Endpunkt zugreifen.
|
||||
* Wird alle 5s vom JavaScript im Dashboard aufgerufen.
|
||||
*
|
||||
* Sicherheit: Session-Validierung + Admin-Rollenprüfung.
|
||||
* Performance: Datei-basiertes Caching (10 Sekunden) um SNMP-Last zu reduzieren.
|
||||
* Logging: Alle Fehler und wichtigen Daten werden in `public/logs/snmp_api.log` geschrieben.
|
||||
*/
|
||||
|
||||
session_start();
|
||||
|
||||
// === Authentifizierung + Autorisierung ===
|
||||
$sessionKeyUser = 'admin_user'; // aus config
|
||||
$sessionKeyUser = 'admin_user';
|
||||
if (!isset($_SESSION[$sessionKeyUser])) {
|
||||
http_response_code(401);
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
@ -40,19 +36,15 @@ function log_msg(string $msg): void {
|
||||
|
||||
function rotate_log_if_needed(): void {
|
||||
global $logFile;
|
||||
$maxSize = 500 * 1024; // 500 KB (anpassbar)
|
||||
|
||||
$maxSize = 500 * 1024; // 500 KB
|
||||
if (file_exists($logFile) && filesize($logFile) > $maxSize) {
|
||||
$backupFile = $logFile . '.old';
|
||||
@rename($logFile, $backupFile);
|
||||
log_msg('=== Log rotiert (alte Datei: .old) ===');
|
||||
@rename($logFile, $logFile . '.old');
|
||||
log_msg('=== Log rotiert ===');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$configPath = __DIR__ . '/../../config/config.php';
|
||||
if (!is_readable($configPath)) {
|
||||
log_msg('ERROR: config.php nicht lesbar');
|
||||
echo json_encode(['error' => 'config_not_found']);
|
||||
exit;
|
||||
}
|
||||
@ -62,10 +54,7 @@ $snmp = $config['snmp'] ?? [];
|
||||
|
||||
rotate_log_if_needed();
|
||||
|
||||
log_msg('--- SNMP-Abfrage gestartet ---');
|
||||
|
||||
// === Cache-Logik (Datei) ===
|
||||
// Cache-Datei wird nach 10 Sekunden als ungültig betrachtet
|
||||
$cacheDir = sys_get_temp_dir();
|
||||
$cacheFile = $cacheDir . DIRECTORY_SEPARATOR . 'snmp_status_cache.json';
|
||||
$cacheTTL = 10; // Sekunden
|
||||
@ -73,53 +62,54 @@ $cacheTTL = 10; // Sekunden
|
||||
if (file_exists($cacheFile)) {
|
||||
$cacheAge = time() - filemtime($cacheFile);
|
||||
if ($cacheAge < $cacheTTL) {
|
||||
// Cache ist noch gültig
|
||||
$cached = file_get_contents($cacheFile);
|
||||
if ($cached !== false) {
|
||||
log_msg("Cache HIT (Alter: {$cacheAge}s)");
|
||||
echo $cached;
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
log_msg("Cache abgelaufen (Alter: {$cacheAge}s), neue Abfrage");
|
||||
}
|
||||
}
|
||||
|
||||
// === SNMP Setup ===
|
||||
$host = $snmp['host'] ?? '127.0.0.1';
|
||||
$community = $snmp['community'] ?? 'public';
|
||||
$timeout = (int)($snmp['timeout'] ?? 2);
|
||||
|
||||
// Timeout von Sekunden in Mikrosekunden umrechnen (wichtig für PHP snmp Funktionen)
|
||||
$timeoutSec = (int)($snmp['timeout'] ?? 2);
|
||||
$timeoutMicro = $timeoutSec * 1_000_000;
|
||||
$retries = (int)($snmp['retries'] ?? 1);
|
||||
|
||||
log_msg("SNMP-Host: $host, Community: $community, Timeout: {$timeout}s");
|
||||
|
||||
if (!function_exists('snmpget')) {
|
||||
log_msg('ERROR: SNMP-Erweiterung nicht installiert');
|
||||
echo json_encode(['error' => 'snmp_extension_missing']);
|
||||
exit;
|
||||
}
|
||||
|
||||
snmp_set_quick_print(true);
|
||||
// Grundeinstellungen
|
||||
snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC);
|
||||
|
||||
// Hilfsfunktion: sichere snmpget-Rückgabe (numeric oder null)
|
||||
function sget(string $host, string $community, string $oid, int $timeout, int $retries)
|
||||
{
|
||||
// Hilfsfunktion: sichere snmpget-Rückgabe
|
||||
function sget(string $host, string $community, string $oid, int $timeout, int $retries) {
|
||||
$v = @snmpget($host, $community, $oid, $timeout, $retries);
|
||||
if ($v === false || $v === null) return null;
|
||||
return is_string($v) ? trim($v) : $v;
|
||||
}
|
||||
|
||||
// System-Uptime (TimeTicks)
|
||||
// --- 1. Uptime ---
|
||||
// Wir deaktivieren quick_print, damit wir das Format "Timeticks: (12345) 1 day..." erhalten.
|
||||
// Nur so können wir die echten Ticks in der Klammer zuverlässig parsen.
|
||||
snmp_set_quick_print(false);
|
||||
|
||||
$uptimeOid = $snmp['oids']['uptime'] ?? '1.3.6.1.2.1.1.3.0';
|
||||
$upticksRaw = @sget($host, $community, $uptimeOid, $timeout, $retries);
|
||||
$upticks = $upticksRaw !== null ? (int)preg_replace('/[^0-9]/', '', (string)$upticksRaw) : null;
|
||||
$uptimeRaw = @sget($host, $community, $uptimeOid, $timeoutMicro, $retries);
|
||||
$upticks = null;
|
||||
|
||||
log_msg("Uptime OID: $uptimeOid, Raw: " . ($upticksRaw ?? 'null'));
|
||||
// Regex sucht nach Zahl in Klammern: (12345678)
|
||||
if ($uptimeRaw && preg_match('/\((.*?)\)/', (string)$uptimeRaw, $matches)) {
|
||||
$upticks = (int)$matches[1];
|
||||
}
|
||||
|
||||
function format_uptime(?int $ticks): ?string
|
||||
{
|
||||
function format_uptime(?int $ticks): ?string {
|
||||
if ($ticks === null) return null;
|
||||
// ticks sind Hundertstel-Sekunden
|
||||
$seconds = (int)floor($ticks / 100);
|
||||
$days = intdiv($seconds, 86400);
|
||||
$seconds -= $days * 86400;
|
||||
@ -127,166 +117,131 @@ function format_uptime(?int $ticks): ?string
|
||||
$seconds -= $hours * 3600;
|
||||
$minutes = intdiv($seconds, 60);
|
||||
$seconds -= $minutes * 60;
|
||||
|
||||
$parts = [];
|
||||
if ($days) $parts[] = $days . ' Tage';
|
||||
if ($hours) $parts[] = $hours . ' Std';
|
||||
if ($minutes) $parts[] = $minutes . ' Min';
|
||||
$parts[] = $seconds . ' Sek';
|
||||
return implode(' ', $parts);
|
||||
$parts[] = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
|
||||
return implode(', ', $parts);
|
||||
}
|
||||
|
||||
$uptimeStr = format_uptime($upticks);
|
||||
|
||||
// CPU: ersten Eintrag aus der CPU-Tabelle lesen
|
||||
// Für den Rest aktivieren wir quick_print wieder, um "saubere" Werte zu bekommen
|
||||
snmp_set_quick_print(true);
|
||||
|
||||
|
||||
// --- 2. CPU (Walk über alle Kerne) ---
|
||||
$cpuTable = $snmp['oids']['cpu_table'] ?? '1.3.6.1.2.1.25.3.3.1.2';
|
||||
$cpuOid = $cpuTable . '.1';
|
||||
$cpuRaw = @sget($host, $community, $cpuOid, $timeout, $retries);
|
||||
$cpu = $cpuRaw !== null ? (float)preg_replace('/[^0-9.]/', '', (string)$cpuRaw) : null;
|
||||
$cpuValues = @snmpwalk($host, $community, $cpuTable, $timeoutMicro, $retries);
|
||||
|
||||
log_msg("CPU OID: $cpuOid, Raw: " . ($cpuRaw ?? 'null') . ", Parsed: " . ($cpu ?? 'null'));
|
||||
$cpuUsage = 0;
|
||||
if (is_array($cpuValues) && count($cpuValues) > 0) {
|
||||
$totalLoad = 0;
|
||||
$coreCount = 0;
|
||||
foreach ($cpuValues as $val) {
|
||||
$v = (int)filter_var($val, FILTER_SANITIZE_NUMBER_INT);
|
||||
$totalLoad += $v;
|
||||
$coreCount++;
|
||||
}
|
||||
if ($coreCount > 0) {
|
||||
$cpuUsage = round($totalLoad / $coreCount, 2);
|
||||
}
|
||||
}
|
||||
|
||||
// Storage-Tabellen: Versuche, C: (Windows) oder Root ("/") zu finden
|
||||
|
||||
// --- 3. Storage (Disk & RAM) ---
|
||||
$descrOid = $snmp['oids']['storage_descr'] ?? '1.3.6.1.2.1.25.2.3.1.3';
|
||||
$unitsOid = $snmp['oids']['storage_units'] ?? '1.3.6.1.2.1.25.2.3.1.4';
|
||||
$sizeOid = $snmp['oids']['storage_size'] ?? '1.3.6.1.2.1.25.2.3.1.5';
|
||||
$usedOid = $snmp['oids']['storage_used'] ?? '1.3.6.1.2.1.25.2.3.1.6';
|
||||
$sizeOid = $snmp['oids']['storage_size'] ?? '1.3.6.1.2.1.25.2.3.1.5';
|
||||
$usedOid = $snmp['oids']['storage_used'] ?? '1.3.6.1.2.1.25.2.3.1.6';
|
||||
|
||||
log_msg("Starte Storage-Walk - Descr: $descrOid, Units: $unitsOid, Size: $sizeOid, Used: $usedOid");
|
||||
|
||||
$descrWalk = @snmprealwalk($host, $community, $descrOid);
|
||||
$unitsWalk = @snmprealwalk($host, $community, $unitsOid);
|
||||
$sizeWalk = @snmprealwalk($host, $community, $sizeOid);
|
||||
$usedWalk = @snmprealwalk($host, $community, $usedOid);
|
||||
|
||||
if (!is_array($descrWalk)) {
|
||||
log_msg('WARNING: snmprealwalk für Beschreibungen fehlgeschlagen');
|
||||
$descrWalk = [];
|
||||
}
|
||||
if (!is_array($unitsWalk)) {
|
||||
log_msg('WARNING: snmprealwalk für Units fehlgeschlagen');
|
||||
$unitsWalk = [];
|
||||
}
|
||||
if (!is_array($sizeWalk)) {
|
||||
log_msg('WARNING: snmprealwalk für Größe fehlgeschlagen');
|
||||
$sizeWalk = [];
|
||||
}
|
||||
if (!is_array($usedWalk)) {
|
||||
log_msg('WARNING: snmprealwalk für Used fehlgeschlagen');
|
||||
$usedWalk = [];
|
||||
}
|
||||
|
||||
log_msg('Storage-Einträge gefunden: ' . count($descrWalk));
|
||||
$descrWalk = @snmprealwalk($host, $community, $descrOid, $timeoutMicro, $retries);
|
||||
$unitsWalk = @snmprealwalk($host, $community, $unitsOid, $timeoutMicro, $retries);
|
||||
$sizeWalk = @snmprealwalk($host, $community, $sizeOid, $timeoutMicro, $retries);
|
||||
$usedWalk = @snmprealwalk($host, $community, $usedOid, $timeoutMicro, $retries);
|
||||
|
||||
$diskPercent = null;
|
||||
$memPercent = null;
|
||||
$storageEntries = [];
|
||||
$storageEntries = []; // Fallback-Liste
|
||||
|
||||
// Sammeln aller Storage-Einträge für Debug-Logging
|
||||
if (is_array($descrWalk) && count($descrWalk) > 0) {
|
||||
if (is_array($descrWalk)) {
|
||||
foreach ($descrWalk as $descrOidFull => $descrRaw) {
|
||||
// Index extrahieren
|
||||
if (!preg_match('/\.(\d+)$/', $descrOidFull, $m)) continue;
|
||||
$idx = $m[1];
|
||||
$descr = trim((string)$descrRaw, ' "');
|
||||
|
||||
// Suche nach passenden Einträgen in anderen Walks mit gleichem Index
|
||||
$units = null;
|
||||
$size = null;
|
||||
$used = null;
|
||||
// Bereinigen
|
||||
$descr = trim(str_ireplace('STRING:', '', (string)$descrRaw), ' "');
|
||||
|
||||
foreach ($unitsWalk as $oid => $val) {
|
||||
if (preg_match('/\.(\d+)$/', $oid, $m2) && $m2[1] === $idx) {
|
||||
$units = (int)preg_replace('/[^0-9]/', '', (string)$val);
|
||||
break;
|
||||
// Helper zum Finden der Werte
|
||||
$findVal = function($walkArr, $idx) {
|
||||
if(!is_array($walkArr)) return null;
|
||||
foreach ($walkArr as $oid => $val) {
|
||||
if (preg_match('/\.(\d+)$/', $oid, $m2) && $m2[1] === $idx) {
|
||||
return (int)filter_var($val, FILTER_SANITIZE_NUMBER_INT);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
foreach ($sizeWalk as $oid => $val) {
|
||||
if (preg_match('/\.(\d+)$/', $oid, $m2) && $m2[1] === $idx) {
|
||||
$size = (int)preg_replace('/[^0-9]/', '', (string)$val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$units = $findVal($unitsWalk, $idx);
|
||||
$size = $findVal($sizeWalk, $idx);
|
||||
$used = $findVal($usedWalk, $idx);
|
||||
|
||||
foreach ($usedWalk as $oid => $val) {
|
||||
if (preg_match('/\.(\d+)$/', $oid, $m2) && $m2[1] === $idx) {
|
||||
$used = (int)preg_replace('/[^0-9]/', '', (string)$val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
log_msg("Storage[$idx]: Desc='$descr', Size=$size, Used=$used, Units=$units");
|
||||
|
||||
if ($size === null || $units === null || $used === null || $size === 0 || $units === 0) {
|
||||
log_msg("Storage[$idx]: SKIP (fehlende oder ungültige Daten)");
|
||||
continue;
|
||||
}
|
||||
if ($size === null || $units === null || $used === null || $size === 0) continue;
|
||||
|
||||
$totalBytes = $size * $units;
|
||||
$usedBytes = $used * $units;
|
||||
$percent = $totalBytes > 0 ? ($usedBytes / $totalBytes) * 100 : 0;
|
||||
$percent = ($totalBytes > 0) ? ($usedBytes / $totalBytes) * 100 : 0;
|
||||
|
||||
$storageEntries[] = [
|
||||
'idx' => $idx,
|
||||
'descr' => $descr,
|
||||
'percent' => $percent,
|
||||
'totalGB' => $totalBytes / (1024 ** 3),
|
||||
'usedGB' => $usedBytes / (1024 ** 3),
|
||||
];
|
||||
$storageEntries[] = ['idx' => $idx, 'descr' => $descr, 'percent' => $percent, 'totalGB' => $totalBytes / (1024**3)];
|
||||
|
||||
// Heuristik 1: Suche nach C: oder Root
|
||||
$lower = strtolower($descr);
|
||||
if ($diskPercent === null && (strpos($lower, 'c:') !== false || strpos($lower, 'c:\\') !== false || strpos($lower, 'c:/') !== false || $lower === '/' || strpos($lower, 'root') !== false)) {
|
||||
$diskPercent = $percent;
|
||||
log_msg("Datenträger erkannt (Index $idx): $descr → $percent%");
|
||||
|
||||
// DISK C: oder Root
|
||||
if ($diskPercent === null) {
|
||||
if (str_starts_with($lower, 'c:') || str_starts_with($lower, 'c:\\') || $lower === '/' || str_contains($lower, 'root')) {
|
||||
$diskPercent = $percent;
|
||||
}
|
||||
}
|
||||
|
||||
// Heuristik 2: Suche nach Physical Memory
|
||||
if ($memPercent === null && ((strpos($lower, 'physical') !== false && strpos($lower, 'memory') !== false) || strpos($lower, 'ram') !== false || strpos($lower, 'physical memory') !== false)) {
|
||||
$memPercent = $percent;
|
||||
log_msg("Speicher erkannt (Index $idx): $descr → $percent%");
|
||||
// RAM
|
||||
if ($memPercent === null) {
|
||||
if (str_contains($lower, 'physical memory') || str_contains($lower, 'ram')) {
|
||||
$memPercent = $percent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback 1: Wenn keine Disk gefunden, nimm den größten Storage-Eintrag > 1GB
|
||||
// Fallback Disk: Größter Speicher > 5GB
|
||||
if ($diskPercent === null && count($storageEntries) > 0) {
|
||||
log_msg('Fallback: Suche Disk (größter Eintrag > 1GB)');
|
||||
usort($storageEntries, fn($a, $b) => $b['totalGB'] <=> $a['totalGB']);
|
||||
foreach ($storageEntries as $entry) {
|
||||
if ($entry['totalGB'] > 1) {
|
||||
foreach($storageEntries as $entry) {
|
||||
if ($entry['totalGB'] > 5) {
|
||||
$diskPercent = $entry['percent'];
|
||||
log_msg('Fallback Disk gefunden (Index ' . $entry['idx'] . '): ' . $entry['descr'] . ' → ' . $diskPercent . '%');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback 2: Wenn kein Speicher gefunden, nimm den kleinsten Eintrag (meist Physical Memory)
|
||||
if ($memPercent === null && count($storageEntries) > 0) {
|
||||
log_msg('Fallback: Suche Memory (kleinster Eintrag)');
|
||||
usort($storageEntries, fn($a, $b) => $a['totalGB'] <=> $b['totalGB']);
|
||||
$memPercent = $storageEntries[0]['percent'];
|
||||
log_msg('Fallback Memory gefunden (Index ' . $storageEntries[0]['idx'] . '): ' . $storageEntries[0]['descr'] . ' → ' . $memPercent . '%');
|
||||
}
|
||||
// --- 4. Hostname ---
|
||||
$hostnameOid = '1.3.6.1.2.1.1.5.0';
|
||||
$hostname = @sget($host, $community, $hostnameOid, $timeoutMicro, $retries);
|
||||
if($hostname) $hostname = trim(str_ireplace('STRING:', '', $hostname), ' "');
|
||||
|
||||
// --- Ergebnis ---
|
||||
$result = [
|
||||
'hostname' => @sget($host, $community, '1.3.6.1.2.1.1.5.0', $timeout, $retries) ?? null,
|
||||
'uptime' => $uptimeStr,
|
||||
'upticks' => $upticks,
|
||||
'cpu_usage' => $cpu,
|
||||
'memory_usage' => $memPercent !== null ? round($memPercent, 2) : null,
|
||||
'disk_usage_c' => $diskPercent !== null ? round($diskPercent, 2) : null,
|
||||
'last_update' => time(),
|
||||
'hostname' => $hostname ?? 'n/a',
|
||||
'uptime' => $uptimeStr,
|
||||
'upticks' => $upticks,
|
||||
'cpu_usage' => $cpuUsage,
|
||||
'memory_usage' => $memPercent !== null ? round($memPercent, 2) : 0,
|
||||
'disk_usage_c' => $diskPercent !== null ? round($diskPercent, 2) : 0,
|
||||
'last_update' => time(),
|
||||
];
|
||||
|
||||
log_msg('RESULT: CPU=' . $result['cpu_usage'] . ', Mem=' . $result['memory_usage'] . ', Disk=' . $result['disk_usage_c']);
|
||||
log_msg('RESULT: UptimeRaw='.($uptimeRaw??'null').' CPU=' . $result['cpu_usage'] . ' Mem=' . $result['memory_usage']);
|
||||
|
||||
$resultJson = json_encode($result);
|
||||
|
||||
// === Cache schreiben ===
|
||||
@file_put_contents($cacheFile, $resultJson);
|
||||
log_msg('Cache geschrieben, TTL: ' . $cacheTTL . 's');
|
||||
|
||||
echo $resultJson;
|
||||
exit;
|
||||
|
||||
@ -11,27 +11,27 @@
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root {
|
||||
--blue: #4e73df;
|
||||
--indigo: #6610f2;
|
||||
--purple: #6f42c1;
|
||||
--pink: #e83e8c;
|
||||
--red: #e74a3b;
|
||||
--orange: #fd7e14;
|
||||
--yellow: #f6c23e;
|
||||
--green: #1cc88a;
|
||||
--teal: #20c9a6;
|
||||
--cyan: #36b9cc;
|
||||
--blue: #3b82f6;
|
||||
--indigo: #6366f1;
|
||||
--purple: #8b5cf6;
|
||||
--pink: #ec4899;
|
||||
--red: #ef4444;
|
||||
--orange: #f97316;
|
||||
--yellow: #f59e0b;
|
||||
--green: #10b981;
|
||||
--teal: #14b8a6;
|
||||
--cyan: #06b6d4;
|
||||
--white: #fff;
|
||||
--gray: #858796;
|
||||
--gray-dark: #5a5c69;
|
||||
--primary: #4e73df;
|
||||
--secondary: #858796;
|
||||
--success: #1cc88a;
|
||||
--info: #36b9cc;
|
||||
--warning: #f6c23e;
|
||||
--danger: #e74a3b;
|
||||
--light: #f8f9fc;
|
||||
--dark: #5a5c69;
|
||||
--gray: #9ca3af;
|
||||
--gray-dark: #374151;
|
||||
--primary: #3b82f6;
|
||||
--secondary: #6b7280;
|
||||
--success: #10b981;
|
||||
--info: #06b6d4;
|
||||
--warning: #f59e0b;
|
||||
--danger: #ef4444;
|
||||
--light: #1f2937;
|
||||
--dark: #111827;
|
||||
--breakpoint-xs: 0;
|
||||
--breakpoint-sm: 576px;
|
||||
--breakpoint-md: 768px;
|
||||
@ -64,9 +64,9 @@ body {
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #858796;
|
||||
color: #ffffff;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
background-color: #0f172a;
|
||||
}
|
||||
|
||||
[tabindex="-1"]:focus:not(:focus-visible) {
|
||||
@ -159,13 +159,13 @@ sup {
|
||||
}
|
||||
|
||||
a {
|
||||
color: #4e73df;
|
||||
color: #60a5fa;
|
||||
text-decoration: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #224abe;
|
||||
color: #3b82f6;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@ -364,6 +364,7 @@ h1, h2, h3, h4, h5, h6,
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.2;
|
||||
color: #f8fafc;
|
||||
}
|
||||
|
||||
h1, .h1 {
|
||||
@ -1485,23 +1486,23 @@ pre code {
|
||||
.table {
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
color: #858796;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.table th,
|
||||
.table td {
|
||||
padding: 0.75rem;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid #e3e6f0;
|
||||
border-top: 1px solid #334155;
|
||||
}
|
||||
|
||||
.table thead th {
|
||||
vertical-align: bottom;
|
||||
border-bottom: 2px solid #e3e6f0;
|
||||
border-bottom: 2px solid #334155;
|
||||
}
|
||||
|
||||
.table tbody + tbody {
|
||||
border-top: 2px solid #e3e6f0;
|
||||
border-top: 2px solid #334155;
|
||||
}
|
||||
|
||||
.table-sm th,
|
||||
@ -1510,12 +1511,12 @@ pre code {
|
||||
}
|
||||
|
||||
.table-bordered {
|
||||
border: 1px solid #e3e6f0;
|
||||
border: 1px solid #334155;
|
||||
}
|
||||
|
||||
.table-bordered th,
|
||||
.table-bordered td {
|
||||
border: 1px solid #e3e6f0;
|
||||
border: 1px solid #334155;
|
||||
}
|
||||
|
||||
.table-bordered thead th,
|
||||
@ -1531,12 +1532,12 @@ pre code {
|
||||
}
|
||||
|
||||
.table-striped tbody tr:nth-of-type(odd) {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.table-hover tbody tr:hover {
|
||||
color: #858796;
|
||||
background-color: rgba(0, 0, 0, 0.075);
|
||||
color: #ffffff;
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.table-primary,
|
||||
@ -1737,9 +1738,9 @@ pre code {
|
||||
}
|
||||
|
||||
.table .thead-light th {
|
||||
color: #6e707e;
|
||||
background-color: #eaecf4;
|
||||
border-color: #e3e6f0;
|
||||
color: #e2e8f0;
|
||||
background-color: #1e293b;
|
||||
border-color: #334155;
|
||||
}
|
||||
|
||||
.table-dark {
|
||||
@ -1833,10 +1834,10 @@ pre code {
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #6e707e;
|
||||
background-color: #fff;
|
||||
color: #ffffff;
|
||||
background-color: #1e293b;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #d1d3e2;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 0.35rem;
|
||||
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
||||
}
|
||||
@ -1858,15 +1859,15 @@ pre code {
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
color: #6e707e;
|
||||
background-color: #fff;
|
||||
border-color: #bac8f3;
|
||||
color: #ffffff;
|
||||
background-color: #1e293b;
|
||||
border-color: #3b82f6;
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
|
||||
box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.25);
|
||||
}
|
||||
|
||||
.form-control::-webkit-input-placeholder {
|
||||
color: #858796;
|
||||
color: #64748b;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@ -3024,12 +3025,12 @@ input[type="button"].btn-block {
|
||||
padding: 0.5rem 0;
|
||||
margin: 0.125rem 0 0;
|
||||
font-size: 0.85rem;
|
||||
color: #858796;
|
||||
color: #f8fafc;
|
||||
text-align: left;
|
||||
list-style: none;
|
||||
background-color: #fff;
|
||||
background-color: #1e293b;
|
||||
background-clip: padding-box;
|
||||
border: 1px solid #e3e6f0;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 0.35rem;
|
||||
}
|
||||
|
||||
@ -3182,7 +3183,7 @@ input[type="button"].btn-block {
|
||||
height: 0;
|
||||
margin: 0.5rem 0;
|
||||
overflow: hidden;
|
||||
border-top: 1px solid #eaecf4;
|
||||
border-top: 1px solid #334155;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
@ -3191,7 +3192,7 @@ input[type="button"].btn-block {
|
||||
padding: 0.25rem 1.5rem;
|
||||
clear: both;
|
||||
font-weight: 400;
|
||||
color: #3a3b45;
|
||||
color: #e2e8f0;
|
||||
text-align: inherit;
|
||||
white-space: nowrap;
|
||||
background-color: transparent;
|
||||
@ -3199,19 +3200,19 @@ input[type="button"].btn-block {
|
||||
}
|
||||
|
||||
.dropdown-item:hover, .dropdown-item:focus {
|
||||
color: #2e2f37;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #eaecf4;
|
||||
background-color: #334155;
|
||||
}
|
||||
|
||||
.dropdown-item.active, .dropdown-item:active {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
background-color: #4e73df;
|
||||
background-color: #3b82f6;
|
||||
}
|
||||
|
||||
.dropdown-item.disabled, .dropdown-item:disabled {
|
||||
color: #b7b9cc;
|
||||
color: #94a3b8;
|
||||
pointer-events: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
@ -4489,9 +4490,9 @@ input[type="button"].btn-block {
|
||||
flex-direction: column;
|
||||
min-width: 0;
|
||||
word-wrap: break-word;
|
||||
background-color: #fff;
|
||||
background-color: #1e293b;
|
||||
background-clip: border-box;
|
||||
border: 1px solid #e3e6f0;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 0.35rem;
|
||||
}
|
||||
|
||||
@ -4552,8 +4553,8 @@ input[type="button"].btn-block {
|
||||
.card-header {
|
||||
padding: 0.75rem 1.25rem;
|
||||
margin-bottom: 0;
|
||||
background-color: #f8f9fc;
|
||||
border-bottom: 1px solid #e3e6f0;
|
||||
background-color: #0f172a;
|
||||
border-bottom: 1px solid #334155;
|
||||
}
|
||||
|
||||
.card-header:first-child {
|
||||
@ -4562,8 +4563,8 @@ input[type="button"].btn-block {
|
||||
|
||||
.card-footer {
|
||||
padding: 0.75rem 1.25rem;
|
||||
background-color: #f8f9fc;
|
||||
border-top: 1px solid #e3e6f0;
|
||||
background-color: #0f172a;
|
||||
border-top: 1px solid #334155;
|
||||
}
|
||||
|
||||
.card-footer:last-child {
|
||||
@ -6491,7 +6492,7 @@ button.bg-dark:focus {
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #fff !important;
|
||||
background-color: #1e293b !important;
|
||||
}
|
||||
|
||||
.bg-transparent {
|
||||
@ -6499,15 +6500,15 @@ button.bg-dark:focus {
|
||||
}
|
||||
|
||||
.border {
|
||||
border: 1px solid #e3e6f0 !important;
|
||||
border: 1px solid #334155 !important;
|
||||
}
|
||||
|
||||
.border-top {
|
||||
border-top: 1px solid #e3e6f0 !important;
|
||||
border-top: 1px solid #334155 !important;
|
||||
}
|
||||
|
||||
.border-right {
|
||||
border-right: 1px solid #e3e6f0 !important;
|
||||
border-right: 1px solid #334155 !important;
|
||||
}
|
||||
|
||||
.border-bottom {
|
||||
@ -9660,7 +9661,7 @@ a.text-dark:hover, a.text-dark:focus {
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
color: #858796 !important;
|
||||
color: #cbd5e1 !important;
|
||||
}
|
||||
|
||||
.text-black-50 {
|
||||
@ -9797,7 +9798,7 @@ a:focus {
|
||||
}
|
||||
|
||||
#wrapper #content-wrapper {
|
||||
background-color: #f8f9fc;
|
||||
background-color: #0f172a;
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
@ -9900,8 +9901,8 @@ a:focus {
|
||||
}
|
||||
|
||||
.bg-gradient-primary {
|
||||
background-color: #4e73df;
|
||||
background-image: linear-gradient(180deg, #4e73df 10%, #224abe 100%);
|
||||
background-color: #1e3a8a;
|
||||
background-image: linear-gradient(180deg, #1e40af 0%, #1e3a8a 50%, #172554 100%);
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
@ -9996,39 +9997,39 @@ a:focus {
|
||||
}
|
||||
|
||||
.text-gray-100 {
|
||||
color: #f8f9fc !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.text-gray-200 {
|
||||
color: #eaecf4 !important;
|
||||
color: #f8fafc !important;
|
||||
}
|
||||
|
||||
.text-gray-300 {
|
||||
color: #dddfeb !important;
|
||||
color: #f1f5f9 !important;
|
||||
}
|
||||
|
||||
.text-gray-400 {
|
||||
color: #d1d3e2 !important;
|
||||
color: #e2e8f0 !important;
|
||||
}
|
||||
|
||||
.text-gray-500 {
|
||||
color: #b7b9cc !important;
|
||||
color: #cbd5e1 !important;
|
||||
}
|
||||
|
||||
.text-gray-600 {
|
||||
color: #858796 !important;
|
||||
color: #cbd5e1 !important;
|
||||
}
|
||||
|
||||
.text-gray-700 {
|
||||
color: #6e707e !important;
|
||||
color: #e2e8f0 !important;
|
||||
}
|
||||
|
||||
.text-gray-800 {
|
||||
color: #5a5c69 !important;
|
||||
color: #f1f5f9 !important;
|
||||
}
|
||||
|
||||
.text-gray-900 {
|
||||
color: #3a3b45 !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.icon-circle {
|
||||
@ -10169,6 +10170,8 @@ a:focus {
|
||||
|
||||
.topbar {
|
||||
height: 4.375rem;
|
||||
background-color: #1e293b;
|
||||
border-bottom: 1px solid #334155;
|
||||
}
|
||||
|
||||
.topbar #sidebarToggleTop {
|
||||
@ -10388,7 +10391,7 @@ a:focus {
|
||||
padding: 0.5rem 1rem;
|
||||
margin: 0 0.5rem;
|
||||
display: block;
|
||||
color: #3a3b45;
|
||||
color: #cbd5e1;
|
||||
text-decoration: none;
|
||||
border-radius: 0.35rem;
|
||||
white-space: nowrap;
|
||||
@ -10396,17 +10399,17 @@ a:focus {
|
||||
|
||||
.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,
|
||||
.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover {
|
||||
background-color: #eaecf4;
|
||||
background-color: #334155;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .collapse .collapse-inner .collapse-item:active,
|
||||
.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active {
|
||||
background-color: #dddfeb;
|
||||
background-color: #475569;
|
||||
}
|
||||
|
||||
.sidebar .nav-item .collapse .collapse-inner .collapse-item.active,
|
||||
.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active {
|
||||
color: #4e73df;
|
||||
color: #3b82f6;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
@ -11269,11 +11272,13 @@ form.user .btn-user {
|
||||
footer.sticky-footer {
|
||||
padding: 2rem 0;
|
||||
flex-shrink: 0;
|
||||
background-color: #0f172a;
|
||||
}
|
||||
|
||||
footer.sticky-footer .copyright {
|
||||
line-height: 1;
|
||||
font-size: 0.8rem;
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
body.sidebar-toggled footer.sticky-footer {
|
||||
|
||||
@ -74,6 +74,8 @@ use App\Controllers\AuthController;
|
||||
use App\Controllers\DashboardController;
|
||||
use App\Controllers\UserManagementController;
|
||||
use App\Services\Logging\LoggingService;
|
||||
use App\Controllers\LogViewerController;
|
||||
|
||||
|
||||
// Globalen Logger initialisieren, damit auch Fehler außerhalb der Controller
|
||||
// (z. B. in index.php selbst) sauber protokolliert werden.
|
||||
@ -199,6 +201,8 @@ function handleResult(?array $result): void
|
||||
$authController = new AuthController($config);
|
||||
$dashboardController = new DashboardController($config);
|
||||
$userManagementController = new UserManagementController($config);
|
||||
$logViewerController = new LogViewerController($config);
|
||||
|
||||
|
||||
// Route aus dem Query-Parameter lesen. Standardroute ist "login",
|
||||
// sodass nicht angemeldete Benutzer automatisch auf die Login-Seite geführt werden.
|
||||
@ -240,6 +244,18 @@ switch ($route) {
|
||||
handleResult($result);
|
||||
break;
|
||||
|
||||
case 'createuser':
|
||||
requireLogin($config);
|
||||
$result = $userManagementController->create();
|
||||
handleResult($result);
|
||||
break;
|
||||
|
||||
case 'logs':
|
||||
requireLogin($config);
|
||||
$result = $logViewerController->show();
|
||||
handleResult($result);
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(404);
|
||||
echo 'Route nicht gefunden.';
|
||||
|
||||
496
public/views/createuser.php
Normal file
496
public/views/createuser.php
Normal file
@ -0,0 +1,496 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* View-Template zur Erstellung von Active-Directory-Benutzern.
|
||||
*
|
||||
* Funktionen:
|
||||
* - Formular zum Anlegen eines einzelnen Benutzers (sAMAccountName, Anzeigename, E-Mail, Passwort, OU, Gruppen).
|
||||
* - Formular zum Hochladen einer CSV-Datei zum Anlegen mehrerer Benutzer.
|
||||
* - Vorschau-Textbox, in der die CSV-Datei angezeigt und bearbeitet werden kann, bevor sie abgesendet wird.
|
||||
* - Gibt optionalen Erfolg / Fehler aus.
|
||||
*
|
||||
* Erwartete View-Daten:
|
||||
* - string|null $error Fehlermeldung
|
||||
* - string|null $success Erfolgsmeldung
|
||||
*/
|
||||
|
||||
/**
|
||||
* @var string|null $error
|
||||
* @var string|null $success
|
||||
*/
|
||||
?>
|
||||
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
||||
<h1 class="h3 mb-0 text-gray-800">Benutzer erstellen</h1>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($error)): ?>
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<?php echo htmlspecialchars((string)$error, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($success)): ?>
|
||||
<div class="alert alert-success" role="alert">
|
||||
<?php echo htmlspecialchars((string)$success, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($powershellDryRun) && $powershellDryRun === true): ?>
|
||||
<div class="alert alert-warning" role="alert">
|
||||
Die Anwendung ist im <strong>Dry-Run</strong>-Modus konfiguriert; PowerShell-Befehle werden nicht ausgeführt.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<p class="mb-4">Hier können Sie einzelne Active-Directory-Benutzer anlegen oder eine CSV-Datei hochladen, um mehrere Benutzer gleichzeitig zu erstellen. Sie können die CSV in der Vorschau bearbeiten bevor Sie die Erstellung auslösen.</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Einzelner Benutzer</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post" action="/api/create_user.php">
|
||||
<div class="form-group">
|
||||
<label for="samaccountname">Anmeldename (sAMAccountName)</label>
|
||||
<input type="text" class="form-control" id="samaccountname" name="samaccountname" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="displayname">Anzeigename</label>
|
||||
<input type="text" class="form-control" id="displayname" name="displayname">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="mail">E-Mail</label>
|
||||
<input type="email" class="form-control" id="mail" name="mail">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="password">Passwort</label>
|
||||
<input type="password" class="form-control" id="password" name="password" required>
|
||||
<small class="form-text text-muted">Das Passwort muss mindestens 7 Zeichen lang sein, darf keine größeren Teile des Benutzernamens enthalten und muss Zeichen aus mindestens 3 von 4 Kategorien enthalten: Großbuchstaben, Kleinbuchstaben, Ziffern, Sonderzeichen.</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="groups">Gruppen (kommagetrennt, optional)</label>
|
||||
<input type="text" class="form-control" id="groups" name="groups" placeholder="Domain Users,IT-Staff">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">Benutzer erstellen</button>
|
||||
</form>
|
||||
<script>
|
||||
(function () {
|
||||
const form = document.querySelector('form[action="/api/create_user.php"]');
|
||||
if (!form) return;
|
||||
function validatePassword(password, sam) {
|
||||
const errors = [];
|
||||
if (!password || password.length < 7) errors.push('Passwort muss mindestens 7 Zeichen lang sein.');
|
||||
let categories = 0;
|
||||
if (/[A-Z]/.test(password)) categories++;
|
||||
if (/[a-z]/.test(password)) categories++;
|
||||
if (/\d/.test(password)) categories++;
|
||||
if (/[^A-Za-z0-9]/.test(password)) categories++;
|
||||
if (categories < 3) errors.push('Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten.');
|
||||
if (sam) {
|
||||
const pwLower = password.toLowerCase();
|
||||
const samLower = sam.toLowerCase();
|
||||
if (pwLower.includes(samLower)) errors.push('Passwort darf den Benutzernamen nicht enthalten.');
|
||||
else {
|
||||
const minLen = 4;
|
||||
if (samLower.length >= minLen) {
|
||||
outer: for (let len = minLen; len <= samLower.length; len++) {
|
||||
for (let s = 0; s <= samLower.length - len; s++) {
|
||||
const sub = samLower.substr(s, len);
|
||||
if (pwLower.includes(sub)) { errors.push('Passwort darf keine größeren Teile des Benutzernamens enthalten.'); break outer; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
||||
form.addEventListener('submit', function (e) {
|
||||
const sam = document.getElementById('samaccountname').value.trim();
|
||||
const password = document.getElementById('password').value;
|
||||
const errs = validatePassword(password, sam);
|
||||
if (errs.length > 0) {
|
||||
e.preventDefault();
|
||||
alert('Passwort ungültig:\n' + errs.join('\n'));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Mehrere Benutzer via CSV</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="small text-muted">Die CSV-Datei sollte eine Kopfzeile mit folgenden Spalten enthalten: <code>samaccountname,displayname,mail,password,groups</code>. Gruppen können komma-getrennt sein. Nach dem Hochladen erscheint der Inhalt in der Vorschau, dort kann er vor dem Absenden editiert werden.</p>
|
||||
|
||||
<form id="csvUploadForm" method="post" action="/api/create_users_csv.php" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label for="csvfile">CSV-Datei</label>
|
||||
<input type="file" class="form-control-file" id="csvfile" name="csvfile" accept=".csv">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="csvdelimiter">Trennzeichen</label>
|
||||
<select class="form-control" id="csvdelimiter" name="csvdelimiter">
|
||||
<option value="," selected>Komma (,)</option>
|
||||
<option value=";">Semikolon (;)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="hasHeader">Kopfzeile vorhanden?</label>
|
||||
<select class="form-control" id="hasHeader" name="hasHeader">
|
||||
<option value="1" selected>Ja</option>
|
||||
<option value="0">Nein</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="csvpreview">CSV-Vorschau (editierbar)</label>
|
||||
<textarea id="csvpreview" name="csvcontent" rows="12" class="form-control" placeholder="CSV-Inhalt wird hier angezeigt, nachdem Sie eine Datei ausgewählt haben. Sie können den Text bearbeiten, bevor Sie ihn absenden."></textarea>
|
||||
</div>
|
||||
|
||||
<!-- CSV preview table and validation info -->
|
||||
<div id="csvPreviewArea" style="display:none; margin-top:1rem;">
|
||||
<div id="csvPreviewInfo" class="small text-muted mb-2">CSV-Vorschau geladen. Passwörter werden geprüft.</div>
|
||||
<div style="overflow-x:auto; max-height:260px;">
|
||||
<table id="csvPreviewTable" class="table table-sm table-bordered" style="width:100%; border-collapse:collapse;"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
/* Make the CSV action buttons equal width and aligned */
|
||||
.csv-btn-row { display:flex; gap:0.5rem; align-items:center; }
|
||||
.csv-btn-row .btn-equal { flex: 0 0 150px; width: 150px; display:inline-flex; justify-content:center; align-items:center; box-sizing:border-box; white-space:nowrap; }
|
||||
.csv-preview-hint { margin-top:0.6rem; font-size:0.9rem; color:#6c757d; }
|
||||
</style>
|
||||
<div class="form-group">
|
||||
<div class="csv-btn-row">
|
||||
<button type="button" id="loadPreviewBtn" class="btn btn-secondary btn-equal" title="Hinweis: Beim Laden der Vorschau werden Änderungen in der Vorschau verworfen und mit der Originaldatei ersetzt.">In Vorschau laden</button>
|
||||
<button type="submit" class="btn btn-primary btn-equal">CSV verarbeiten</button>
|
||||
<button type="button" id="clearPreviewBtn" class="btn btn-light btn-equal">Vorschau löschen</button>
|
||||
</div>
|
||||
<div class="csv-preview-hint">Beim Laden werden Änderungen in der Vorschau verworfen und die Originaldatei neu eingelesen.</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<small class="form-text text-muted mt-2">Tipp: Wenn Sie die CSV im Textfeld bearbeiten, wird der bearbeitete Text an den Server gesendet.</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($csvDetails) && is_array($csvDetails)): ?>
|
||||
<div class="row mt-4">
|
||||
<div class="col-12">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-secondary">CSV Verarbeitungsergebnisse</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Anmeldename</th>
|
||||
<th>Status</th>
|
||||
<th>Hinweis</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($csvDetails as $detail): ?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars((string)($detail['sam'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></td>
|
||||
<td><?php echo (!empty($detail['success'])) ? 'OK' : 'FEHLER'; ?></td>
|
||||
<td><?php echo htmlspecialchars((string)($detail['message'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-secondary">Hinweise</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul>
|
||||
<li>Die tatsächliche Erstellung von AD-Benutzern wird serverseitig durchgeführt. Diese View sendet Daten an die Endpunkte <code>/api/create_user.php</code> und <code>/api/create_users_csv.php</code>.</li>
|
||||
<li>Stellen Sie sicher, dass der Webserver die nötigen Rechte hat und die LDAP/AD-Verbindung korrekt konfiguriert ist.</li>
|
||||
<li>Für Sicherheit: prüfen Sie bitte CSRF-Schutz und Validierung auf der Serverseite.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
const fileInput = document.getElementById('csvfile');
|
||||
const preview = document.getElementById('csvpreview');
|
||||
const loadBtn = document.getElementById('loadPreviewBtn');
|
||||
const clearBtn = document.getElementById('clearPreviewBtn');
|
||||
const form = document.getElementById('csvUploadForm');
|
||||
|
||||
function readFileToPreview(file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
preview.value = e.target.result || '';
|
||||
};
|
||||
reader.onerror = function () {
|
||||
alert('Fehler beim Lesen der Datei.');
|
||||
};
|
||||
reader.readAsText(file, 'utf-8');
|
||||
}
|
||||
|
||||
if (loadBtn) {
|
||||
loadBtn.addEventListener('click', function () {
|
||||
const file = fileInput.files && fileInput.files[0];
|
||||
if (!file) {
|
||||
// Wenn keine Datei ausgewählt ist, laden wir nichts, behalten aber vorhandenen Text.
|
||||
alert('Bitte wählen Sie zuerst eine CSV-Datei aus oder fügen Sie CSV-Text direkt in das Feld ein.');
|
||||
return;
|
||||
}
|
||||
readFileToPreview(file);
|
||||
});
|
||||
}
|
||||
|
||||
if (clearBtn) {
|
||||
clearBtn.addEventListener('click', function () {
|
||||
preview.value = '';
|
||||
fileInput.value = '';
|
||||
});
|
||||
}
|
||||
|
||||
// Falls der Benutzer direkt die Datei auswählt, füllen wir die Vorschau automatisch.
|
||||
if (fileInput) {
|
||||
fileInput.addEventListener('change', function () {
|
||||
const file = fileInput.files && fileInput.files[0];
|
||||
if (file) {
|
||||
readFileToPreview(file);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// CSV utilities and validation for passwords in preview
|
||||
function parseCsvText(text, delimiter) {
|
||||
const lines = text.split(/\r?\n/).map(l => l.trim()).filter(l => l !== '');
|
||||
if (lines.length === 0) return { headers: [], rows: [] };
|
||||
const headers = lines[0].split(delimiter).map(h => h.trim().replace(/^"|"$/g, ''));
|
||||
const rows = lines.slice(1).map(l => l.split(delimiter).map(c => c.trim().replace(/^"|"$/g, '')));
|
||||
return { headers, rows };
|
||||
}
|
||||
|
||||
function validatePasswordJS(password, sam) {
|
||||
const errors = [];
|
||||
if (!password || password.length < 7) {
|
||||
errors.push('Passwort muss mindestens 7 Zeichen lang sein.');
|
||||
}
|
||||
let categories = 0;
|
||||
if (/[A-Z]/.test(password)) categories++;
|
||||
if (/[a-z]/.test(password)) categories++;
|
||||
if (/\d/.test(password)) categories++;
|
||||
if (/[^A-Za-z0-9]/.test(password)) categories++;
|
||||
if (categories < 3) {
|
||||
errors.push('Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten.');
|
||||
}
|
||||
if (sam) {
|
||||
const pwLower = password.toLowerCase();
|
||||
const samLower = sam.toLowerCase();
|
||||
if (pwLower.includes(samLower)) {
|
||||
errors.push('Passwort darf den Benutzernamen nicht enthalten.');
|
||||
} else {
|
||||
const minLen = 4;
|
||||
if (samLower.length >= minLen) {
|
||||
outer: for (let len = minLen; len <= samLower.length; len++) {
|
||||
for (let s = 0; s <= samLower.length - len; s++) {
|
||||
const sub = samLower.substr(s, len);
|
||||
if (pwLower.includes(sub)) { errors.push('Passwort darf keine größeren Teile des Benutzernamens enthalten.'); break outer; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
||||
function renderCsvPreview(text, delimiter) {
|
||||
const parsed = parseCsvText(text, delimiter);
|
||||
const headers = parsed.headers;
|
||||
const rows = parsed.rows;
|
||||
const previewArea = document.getElementById('csvPreviewArea');
|
||||
const previewInfo = document.getElementById('csvPreviewInfo');
|
||||
const table = document.getElementById('csvPreviewTable');
|
||||
table.innerHTML = '';
|
||||
if (headers.length === 0) {
|
||||
previewArea.style.display = 'none';
|
||||
return { invalidCount: 0 };
|
||||
}
|
||||
|
||||
// build header
|
||||
const thead = document.createElement('thead');
|
||||
const trh = document.createElement('tr');
|
||||
headers.forEach(h => { const th = document.createElement('th'); th.textContent = h; trh.appendChild(th); });
|
||||
thead.appendChild(trh);
|
||||
table.appendChild(thead);
|
||||
|
||||
// find indexes
|
||||
const pwdIdx = headers.findIndex(h => /pass(word)?/i.test(h));
|
||||
const samIdx = headers.findIndex(h => /(sam(accountname)?)|samaccountname/i.test(h));
|
||||
|
||||
const tbody = document.createElement('tbody');
|
||||
let invalidCount = 0;
|
||||
rows.forEach((rowArr, rowIndex) => {
|
||||
const tr = document.createElement('tr');
|
||||
rowArr.forEach((cell, colIndex) => {
|
||||
const td = document.createElement('td');
|
||||
const input = document.createElement('input');
|
||||
input.type = 'text';
|
||||
input.value = cell;
|
||||
input.className = 'form-control form-control-sm';
|
||||
input.addEventListener('input', function () {
|
||||
// re-validate this row when edited
|
||||
const currentPwd = (pwdIdx >= 0) ? tr.querySelectorAll('input')[pwdIdx].value : '';
|
||||
const currentSam = (samIdx >= 0) ? tr.querySelectorAll('input')[samIdx].value : '';
|
||||
const errs = validatePasswordJS(currentPwd, currentSam);
|
||||
if (errs.length > 0) {
|
||||
tr.classList.add('table-danger');
|
||||
} else {
|
||||
tr.classList.remove('table-danger');
|
||||
}
|
||||
});
|
||||
td.appendChild(input);
|
||||
tr.appendChild(td);
|
||||
});
|
||||
|
||||
// validate password for this row if applicable
|
||||
if (pwdIdx >= 0) {
|
||||
const pwd = rowArr[pwdIdx] || '';
|
||||
const sam = (samIdx >= 0) ? (rowArr[samIdx] || '') : '';
|
||||
const errs = validatePasswordJS(pwd, sam);
|
||||
if (errs.length > 0) {
|
||||
tr.classList.add('table-danger');
|
||||
invalidCount++;
|
||||
}
|
||||
}
|
||||
|
||||
tbody.appendChild(tr);
|
||||
});
|
||||
table.appendChild(tbody);
|
||||
previewArea.style.display = 'block';
|
||||
previewInfo.textContent = (invalidCount > 0)
|
||||
? `${invalidCount} Zeile(n) haben ungültige Passwörter. Bitte korrigieren Sie diese in der Tabelle bevor Sie die CSV verarbeiten.`
|
||||
: 'CSV-Vorschau geladen. Alle Passwörter entsprechen den Anforderungen.';
|
||||
return { invalidCount };
|
||||
}
|
||||
|
||||
if (loadBtn) {
|
||||
loadBtn.addEventListener('click', function () {
|
||||
const file = fileInput.files && fileInput.files[0];
|
||||
const delim = document.getElementById('csvdelimiter').value || ',';
|
||||
if (file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
preview.value = e.target.result || '';
|
||||
renderCsvPreview(preview.value, delim);
|
||||
};
|
||||
reader.readAsText(file, 'utf-8');
|
||||
return;
|
||||
}
|
||||
if (preview.value.trim() === '') {
|
||||
alert('Bitte wählen Sie zuerst eine CSV-Datei aus oder fügen Sie CSV-Text direkt in das Feld ein.');
|
||||
return;
|
||||
}
|
||||
renderCsvPreview(preview.value, delim);
|
||||
});
|
||||
}
|
||||
|
||||
if (clearBtn) {
|
||||
clearBtn.addEventListener('click', function () {
|
||||
preview.value = '';
|
||||
fileInput.value = '';
|
||||
document.getElementById('csvPreviewArea').style.display = 'none';
|
||||
});
|
||||
}
|
||||
|
||||
if (fileInput) {
|
||||
fileInput.addEventListener('change', function () {
|
||||
// auto-load content into preview textarea (but do not auto-validate until user clicks 'In Vorschau laden')
|
||||
const file = fileInput.files && fileInput.files[0];
|
||||
if (file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (e) {
|
||||
preview.value = e.target.result || '';
|
||||
};
|
||||
reader.readAsText(file, 'utf-8');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Intercept submit: read file if needed, validate preview passwords, then submit
|
||||
function handleCsvSubmit(e) {
|
||||
e.preventDefault();
|
||||
const delim = document.getElementById('csvdelimiter').value || ',';
|
||||
const file = fileInput.files && fileInput.files[0];
|
||||
|
||||
const proceedWithText = function (text) {
|
||||
const res = renderCsvPreview(text, delim);
|
||||
if (res.invalidCount > 0) {
|
||||
alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.');
|
||||
return;
|
||||
}
|
||||
// ensure preview textarea contains the text we'll submit
|
||||
preview.value = text;
|
||||
// Remove handler to avoid re-validation loop and submit the form
|
||||
form.removeEventListener('submit', handleCsvSubmit);
|
||||
form.submit();
|
||||
};
|
||||
|
||||
if (preview.value.trim() === '') {
|
||||
if (file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function (ev) {
|
||||
const text = ev.target.result || '';
|
||||
proceedWithText(text);
|
||||
};
|
||||
reader.onerror = function () {
|
||||
alert('Fehler beim Lesen der Datei. Bitte versuchen Sie es erneut.');
|
||||
};
|
||||
reader.readAsText(file, 'utf-8');
|
||||
return;
|
||||
}
|
||||
alert('Die CSV-Vorschau ist leer. Bitte wählen Sie eine Datei oder fügen Sie CSV-Inhalt ein.');
|
||||
return;
|
||||
}
|
||||
|
||||
proceedWithText(preview.value);
|
||||
}
|
||||
|
||||
form.addEventListener('submit', handleCsvSubmit);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<?php // Ende der View ?>
|
||||
@ -12,6 +12,22 @@ declare(strict_types=1);
|
||||
/** @var array<string, mixed> $serverStatus */
|
||||
?>
|
||||
|
||||
<style>
|
||||
/* Custom Farben für Dashboard-Karten */
|
||||
.border-left-purple {
|
||||
border-left: 0.25rem solid #6f42c1 !important;
|
||||
}
|
||||
.text-purple {
|
||||
color: #6f42c1 !important;
|
||||
}
|
||||
.border-left-amber {
|
||||
border-left: 0.25rem solid #ff9800 !important;
|
||||
}
|
||||
.text-amber {
|
||||
color: #ff9800 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- Content Row -->
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
||||
<h1 class="h3 mb-0 text-gray-800">Server-Dashboard</h1>
|
||||
@ -106,11 +122,11 @@ declare(strict_types=1);
|
||||
<div class="row">
|
||||
<!-- Disk C: / Root -->
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card border-left-secondary shadow h-100 py-2">
|
||||
<div class="card border-left-purple shadow h-100 py-2">
|
||||
<div class="card-body">
|
||||
<div class="row no-gutters align-items-center">
|
||||
<div class="col mr-2">
|
||||
<div class="text-xs font-weight-bold text-secondary text-uppercase mb-1">
|
||||
<div class="text-xs font-weight-bold text-purple text-uppercase mb-1">
|
||||
Datenträger C: / Root
|
||||
</div>
|
||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
||||
@ -127,11 +143,11 @@ declare(strict_types=1);
|
||||
|
||||
<!-- Uptime -->
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card border-left-dark shadow h-100 py-2">
|
||||
<div class="card border-left-amber shadow h-100 py-2">
|
||||
<div class="card-body">
|
||||
<div class="row no-gutters align-items-center">
|
||||
<div class="col mr-2">
|
||||
<div class="text-xs font-weight-bold text-dark text-uppercase mb-1">
|
||||
<div class="text-xs font-weight-bold text-amber text-uppercase mb-1">
|
||||
System Uptime
|
||||
</div>
|
||||
<div class="h5 mb-0 font-weight-bold text-gray-800">
|
||||
@ -153,6 +169,7 @@ declare(strict_types=1);
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function(){
|
||||
const hostnameEl = document.querySelector('.col-xl-3:first-child .h5.mb-0'); // Hostname card (first card)
|
||||
const diskEl = document.getElementById('disk_usage_text');
|
||||
const uptimeEl = document.getElementById('uptime_text');
|
||||
const cpuEl = document.getElementById('cpu_card_value');
|
||||
@ -161,6 +178,7 @@ document.addEventListener('DOMContentLoaded', function(){
|
||||
|
||||
function updateUI(data){
|
||||
if(!data) return;
|
||||
if(hostnameEl) hostnameEl.textContent = data.hostname || 'n/a';
|
||||
if(diskEl) diskEl.textContent = (data.disk_usage_c !== null && data.disk_usage_c !== undefined) ? Math.round(data.disk_usage_c) : 'n/a';
|
||||
if(uptimeEl) uptimeEl.textContent = data.uptime || 'n/a';
|
||||
if(cpuEl) cpuEl.textContent = (data.cpu_usage !== null && data.cpu_usage !== undefined) ? Math.round(data.cpu_usage) : 0;
|
||||
|
||||
163
public/views/logs.php
Normal file
163
public/views/logs.php
Normal file
@ -0,0 +1,163 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Log Viewer (Ansicht).
|
||||
*
|
||||
* Erwartete Variablen:
|
||||
* @var array<int, array{name:string, size:int, mtime:int}> $files
|
||||
* @var string $selectedFile
|
||||
* @var array{name:string, size:int, mtime:int}|null $fileMeta
|
||||
* @var array<int, array{ts:string|null, level:string|null, message:string, context:array<string,mixed>|null, raw:string}> $entries
|
||||
* @var string $filterLevel
|
||||
* @var string $searchQuery
|
||||
* @var int $lines
|
||||
* @var string|null $error
|
||||
*/
|
||||
?>
|
||||
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
||||
<h1 class="h3 mb-0 text-gray-800">Log Viewer</h1>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($error)) : ?>
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<?php echo htmlspecialchars((string)$error, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Filter</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="get" action="../index.php">
|
||||
<input type="hidden" name="route" value="logs">
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-4">
|
||||
<label for="file">Log-Datei</label>
|
||||
<select class="form-control" id="file" name="file">
|
||||
<?php foreach (($files ?? []) as $f) : ?>
|
||||
<?php $name = (string)($f['name'] ?? ''); ?>
|
||||
<option value="<?php echo htmlspecialchars($name, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>"
|
||||
<?php echo ($name === (string)$selectedFile) ? 'selected' : ''; ?>>
|
||||
<?php echo htmlspecialchars($name, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-2">
|
||||
<label for="level">Level</label>
|
||||
<select class="form-control" id="level" name="level">
|
||||
<?php
|
||||
$levels = ['', 'ERROR', 'WARNING', 'INFO', 'DEBUG'];
|
||||
foreach ($levels as $lvl) :
|
||||
$label = ($lvl === '') ? 'Alle' : $lvl;
|
||||
?>
|
||||
<option value="<?php echo htmlspecialchars($lvl, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>"
|
||||
<?php echo ((string)$filterLevel === (string)$lvl) ? 'selected' : ''; ?>>
|
||||
<?php echo htmlspecialchars($label, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-3">
|
||||
<label for="q">Suche</label>
|
||||
<input type="text" class="form-control" id="q" name="q"
|
||||
value="<?php echo htmlspecialchars((string)$searchQuery, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>"
|
||||
placeholder="Text in message/context">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-2">
|
||||
<label for="lines">Zeilen</label>
|
||||
<input type="number" class="form-control" id="lines" name="lines"
|
||||
value="<?php echo (int)$lines; ?>" min="1" max="2000">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-1 d-flex align-items-end">
|
||||
<button type="submit" class="btn btn-primary btn-block">
|
||||
Anzeigen
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if (is_array($fileMeta)) : ?>
|
||||
<div class="small text-gray-600">
|
||||
Datei: <strong><?php echo htmlspecialchars((string)$fileMeta['name'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></strong>
|
||||
· Größe: <?php echo number_format((int)$fileMeta['size'], 0, ',', '.'); ?> Bytes
|
||||
· Stand: <?php echo ($fileMeta['mtime'] ?? 0) > 0 ? date('d.m.Y H:i:s', (int)$fileMeta['mtime']) : 'n/a'; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3 d-flex align-items-center justify-content-between">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Einträge (neueste unten)</h6>
|
||||
<a class="btn btn-sm btn-outline-secondary"
|
||||
href="../index.php?route=logs&file=<?php echo urlencode((string)$selectedFile); ?>&level=<?php echo urlencode((string)$filterLevel); ?>&q=<?php echo urlencode((string)$searchQuery); ?>&lines=<?php echo (int)$lines; ?>">
|
||||
Refresh
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<?php if (empty($entries)) : ?>
|
||||
<div class="text-gray-600">Keine Einträge gefunden.</div>
|
||||
<?php else : ?>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-sm" width="100%" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 170px;">Zeit</th>
|
||||
<th style="width: 110px;">Level</th>
|
||||
<th>Message</th>
|
||||
<th style="width: 35%;">Context</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($entries as $e) : ?>
|
||||
<?php
|
||||
$lvl = strtoupper((string)($e['level'] ?? ''));
|
||||
$badge = 'badge-secondary';
|
||||
if ($lvl === 'ERROR') { $badge = 'badge-danger'; }
|
||||
if ($lvl === 'WARNING') { $badge = 'badge-warning'; }
|
||||
if ($lvl === 'INFO') { $badge = 'badge-info'; }
|
||||
if ($lvl === 'DEBUG') { $badge = 'badge-light'; }
|
||||
|
||||
$ctx = $e['context'] ?? null;
|
||||
$ctxPretty = '';
|
||||
if (is_array($ctx)) {
|
||||
$ctxPretty = (string)json_encode($ctx, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
}
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo htmlspecialchars((string)($e['ts'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></td>
|
||||
<td>
|
||||
<span class="badge <?php echo $badge; ?>">
|
||||
<?php echo htmlspecialchars($lvl, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?>
|
||||
</span>
|
||||
</td>
|
||||
<td><?php echo htmlspecialchars((string)($e['message'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></td>
|
||||
<td>
|
||||
<?php if ($ctxPretty !== '') : ?>
|
||||
<pre class="mb-0" style="white-space: pre-wrap;"><?php echo htmlspecialchars($ctxPretty, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></pre>
|
||||
<?php else : ?>
|
||||
<span class="text-gray-600">-</span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="small text-gray-600">
|
||||
Hinweis: Dieser Viewer lädt bewusst nur die letzten Zeilen (Tail), damit große Logfiles die Oberfläche nicht killen.
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@ -19,12 +19,12 @@
|
||||
<title>AD Admin Tool<?= isset($pageTitle) ? ' – ' . htmlspecialchars($pageTitle, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') : '' ?></title>
|
||||
|
||||
<!-- Custom fonts for this template-->
|
||||
<link href="../../vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<!-- Google Fonts oder lokal, je nach Setup -->
|
||||
<link href="../../css/sb-admin-2.min.css" rel="stylesheet">
|
||||
<link href="/css/sb-admin-2.css" rel="stylesheet">
|
||||
|
||||
<!-- DataTables CSS (falls benötigt) -->
|
||||
<link href="../../vendor/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
|
||||
<link href="/vendor/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
|
||||
|
||||
@ -21,23 +21,23 @@
|
||||
</a>
|
||||
|
||||
<!-- Bootstrap core JavaScript-->
|
||||
<script src="../../vendor/jquery/jquery.min.js"></script>
|
||||
<script src="../../vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
<script src="/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Core plugin JavaScript-->
|
||||
<script src="../../vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
<script src="/vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
<script src="../../js/sb-admin-2.min.js"></script>
|
||||
<script src="/js/sb-admin-2.min.js"></script>
|
||||
|
||||
<!-- Page level plugins -->
|
||||
<script src="../../vendor/chart.js/Chart.min.js"></script>
|
||||
<script src="../../vendor/datatables/jquery.dataTables.min.js"></script>
|
||||
<script src="../../vendor/datatables/dataTables.bootstrap4.min.js"></script>
|
||||
<script src="/vendor/chart.js/Chart.min.js"></script>
|
||||
<script src="/vendor/datatables/jquery.dataTables.min.js"></script>
|
||||
<script src="/vendor/datatables/dataTables.bootstrap4.min.js"></script>
|
||||
|
||||
<!-- Page level custom scripts -->
|
||||
<script src="../../js/demo/datatables-demo.js"></script>
|
||||
<script src="../../js/demo/chart-area-demo.js"></script>
|
||||
<script src="../../js/demo/chart-pie-demo.js"></script>
|
||||
<script src="/js/demo/datatables-demo.js"></script>
|
||||
<script src="/js/demo/chart-area-demo.js"></script>
|
||||
<script src="/js/demo/chart-pie-demo.js"></script>
|
||||
|
||||
|
||||
|
||||
@ -49,6 +49,24 @@
|
||||
<span>Benutzer & Gruppen</span></a>
|
||||
</li>
|
||||
|
||||
<!-- Nav Item - Benutzer erstellen -->
|
||||
<li class="nav-item<?= (isset($activeMenu) && $activeMenu === 'createuser') ? ' active' : '' ?>">
|
||||
<a class="nav-link" href="../../index.php?route=createuser">
|
||||
<i class="fas fa-fw fa-user-plus"></i>
|
||||
<span>Benutzer erstellen</span></a>
|
||||
</li>
|
||||
|
||||
<!-- Divider -->
|
||||
<hr class="sidebar-divider d-none d-md-block">
|
||||
|
||||
<!-- Nav Item - Logs -->
|
||||
<li class="nav-item<?= (isset($activeMenu) && $activeMenu === 'logs') ? ' active' : '' ?>">
|
||||
<a class="nav-link" href="../../index.php?route=logs">
|
||||
<i class="fas fa-fw fa-file-alt"></i>
|
||||
<span>Logs</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<!-- Divider -->
|
||||
<hr class="sidebar-divider d-none d-md-block">
|
||||
|
||||
|
||||
@ -25,6 +25,10 @@ declare(strict_types=1);
|
||||
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-4">
|
||||
<h1 class="h3 mb-0 text-gray-800">Benutzer & Gruppen</h1>
|
||||
<a href="index.php?route=createuser" class="d-none d-sm-inline-block btn btn-sm btn-primary shadow-sm">
|
||||
<i class="fas fa-user-plus fa-sm text-white-50"></i>
|
||||
Benutzer erstellen
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<?php if ($error !== null): ?>
|
||||
|
||||
42
scripts/powershell/README.md
Normal file
42
scripts/powershell/README.md
Normal file
@ -0,0 +1,42 @@
|
||||
This directory contains PowerShell scripts used by the PHP AdminTool for Active Directory user creation.
|
||||
|
||||
Usage (single user):
|
||||
1. Create a JSON payload file (for example `payload.json`) with contents:
|
||||
```
|
||||
{
|
||||
"samaccountname": "testuser",
|
||||
"displayname": "Test User",
|
||||
"mail": "testuser@example.local",
|
||||
"password": "P@ssw0rd1234",
|
||||
"ou": "OU=Users,DC=example,DC=local",
|
||||
"groups": "Users,IT-Staff",
|
||||
"dry_run": true
|
||||
}
|
||||
```
|
||||
2. Run the script from PowerShell as a user with permission to create AD users (or use `dry_run` true to test):
|
||||
|
||||
```
|
||||
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\create_user.ps1 -InputFile C:\temp\payload.json
|
||||
```
|
||||
|
||||
Usage (CSV):
|
||||
1. Create a CSV file with header `samaccountname,displayname,mail,password,ou,groups` (or no header and set `has_header: false` in meta JSON).
|
||||
2. Create a meta JSON file containing the CSV path and options:
|
||||
```
|
||||
{
|
||||
"input_file": "C:\temp\users.csv",
|
||||
"delimiter": ",",
|
||||
"has_header": true,
|
||||
"dry_run": true
|
||||
}
|
||||
```
|
||||
3. Run the CSV script:
|
||||
```
|
||||
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\create_users_csv.ps1 -InputFile C:\temp\meta.json
|
||||
```
|
||||
|
||||
Notes:
|
||||
- Ensure the `ActiveDirectory` PowerShell module is installed on the host system (RSAT).
|
||||
- Test with `dry_run` set to `true` first to verify results without modifying AD.
|
||||
- The scripts return a compact JSON object on stdout which the PHP backend expects.
|
||||
- Run the webserver (IIS) as a user that has sufficient rights to run the `New-ADUser` and `Add-ADGroupMember` commands when `dry_run` is disabled.
|
||||
17
scripts/powershell/check_environment.ps1
Normal file
17
scripts/powershell/check_environment.ps1
Normal file
@ -0,0 +1,17 @@
|
||||
# Returns JSON with information about the environment and AD module availability
|
||||
Try {
|
||||
$actor = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
|
||||
} Catch {
|
||||
$actor = $null
|
||||
}
|
||||
|
||||
# Does the ActiveDirectory module exist?
|
||||
$module = Get-Module -ListAvailable -Name ActiveDirectory -ErrorAction SilentlyContinue
|
||||
$hasModule = $module -ne $null
|
||||
|
||||
# Is New-ADUser available?
|
||||
$canNewAdUser = (Get-Command New-ADUser -ErrorAction SilentlyContinue) -ne $null
|
||||
|
||||
$output = @{ success = $true; actor = $actor; module_installed = $hasModule; can_new_aduser = $canNewAdUser }
|
||||
Write-Output ($output | ConvertTo-Json -Compress)
|
||||
exit 0
|
||||
153
scripts/powershell/create_user.ps1
Normal file
153
scripts/powershell/create_user.ps1
Normal file
@ -0,0 +1,153 @@
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$InputFile
|
||||
)
|
||||
|
||||
# Read input JSON
|
||||
try {
|
||||
$json = Get-Content -Raw -Path $InputFile -ErrorAction Stop
|
||||
$payload = $json | ConvertFrom-Json
|
||||
} catch {
|
||||
$err = $_.Exception.Message
|
||||
Write-Output (@{ success = $false; message = "Failed to read/parse input JSON: $err" } | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Default result
|
||||
$actor = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
|
||||
$result = @{ success = $false; message = "Unspecified error"; actor = $actor }
|
||||
|
||||
# Validate
|
||||
if (-not $payload.samaccountname -or -not $payload.password) {
|
||||
$result.message = "Required fields: samaccountname and password"
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Convert to strings
|
||||
$sam = [string]$payload.samaccountname
|
||||
$display = [string]($payload.displayname)
|
||||
$mail = [string]($payload.mail)
|
||||
$pass = [string]$payload.password
|
||||
$ou = [string]($payload.ou)
|
||||
$groups = [string]($payload.groups)
|
||||
$dryRun = [bool]($payload.dry_run -as [bool])
|
||||
# Password hint and validation helper (German)
|
||||
$passwordHint = @"
|
||||
Das sollten die Anforderungen an das Passwort sein:
|
||||
|
||||
- mindestens 7 Zeichen
|
||||
- darf den Benutzer-/Accountnamen nicht enthalten (bzw. keine zu großen Teile davon)
|
||||
- muss Zeichen aus mindestens 3 von 4 Kategorien enthalten:
|
||||
1) Großbuchstaben (A–Z)
|
||||
2) Kleinbuchstaben (a–z)
|
||||
3) Ziffern (0–9)
|
||||
4) Sonderzeichen (alles, was kein Buchstabe/Zahl ist, z. B. ! ? # _ - . , usw.)
|
||||
"@
|
||||
|
||||
function Test-PasswordRequirements {
|
||||
param(
|
||||
[string]$Password,
|
||||
[string]$SamAccountName
|
||||
)
|
||||
|
||||
$errors = @()
|
||||
|
||||
if ([string]::IsNullOrEmpty($Password) -or $Password.Length -lt 7) {
|
||||
$errors += 'Passwort muss mindestens 7 Zeichen lang sein.'
|
||||
}
|
||||
|
||||
$categories = 0
|
||||
if ($Password -match '[A-Z]') { $categories++ }
|
||||
if ($Password -match '[a-z]') { $categories++ }
|
||||
if ($Password -match '\d') { $categories++ }
|
||||
if ($Password -match '[^A-Za-z0-9]') { $categories++ }
|
||||
if ($categories -lt 3) {
|
||||
$errors += 'Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten (Groß, Klein, Ziffern, Sonderzeichen).'
|
||||
}
|
||||
|
||||
if (-not [string]::IsNullOrEmpty($SamAccountName)) {
|
||||
$pwLower = $Password.ToLowerInvariant()
|
||||
$samLower = $SamAccountName.ToLowerInvariant()
|
||||
|
||||
if ($pwLower -like "*${samLower}*") {
|
||||
$errors += 'Passwort darf den Benutzernamen nicht enthalten.'
|
||||
} else {
|
||||
$minLen = 4
|
||||
if ($samLower.Length -ge $minLen) {
|
||||
for ($len = $minLen; $len -le $samLower.Length; $len++) {
|
||||
for ($start = 0; $start -le $samLower.Length - $len; $start++) {
|
||||
$sub = $samLower.Substring($start, $len)
|
||||
if ($pwLower -like "*${sub}*") {
|
||||
$errors += 'Passwort darf keine größeren Teile des Benutzernamens enthalten.'
|
||||
break 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $errors
|
||||
}
|
||||
# Ensure ActiveDirectory module available
|
||||
try {
|
||||
Import-Module ActiveDirectory -ErrorAction Stop
|
||||
} catch {
|
||||
$result.message = "ActiveDirectory PowerShell module not available: $($_.Exception.Message)"
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Build New-ADUser parameters
|
||||
$props = @{
|
||||
Name = if ($display -and $display -ne '') { $display } else { $sam }
|
||||
SamAccountName = $sam
|
||||
Enabled = $true
|
||||
}
|
||||
|
||||
if ($mail -and $mail -ne '') { $props['EmailAddress'] = $mail }
|
||||
if ($ou -and $ou -ne '') { $props['Path'] = $ou }
|
||||
|
||||
# Validate password before continuing
|
||||
$pwErrors = Test-PasswordRequirements -Password $pass -SamAccountName $sam
|
||||
if ($pwErrors.Count -gt 0) {
|
||||
$result.message = 'Invalid password: ' + ($pwErrors -join ' | ')
|
||||
$result.hint = $passwordHint
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Build secure password
|
||||
$securePass = ConvertTo-SecureString $pass -AsPlainText -Force
|
||||
$props['AccountPassword'] = $securePass
|
||||
|
||||
# Execute
|
||||
if ($dryRun) {
|
||||
$result.success = $true
|
||||
$result.message = "DRY RUN: would create user $($sam)"
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 0
|
||||
}
|
||||
|
||||
try {
|
||||
# Create the AD user
|
||||
New-ADUser @props -ErrorAction Stop
|
||||
|
||||
# Add to groups, if provided
|
||||
if ($groups -and $groups -ne '') {
|
||||
$groupList = $groups -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
|
||||
foreach ($g in $groupList) {
|
||||
Add-ADGroupMember -Identity $g -Members $sam -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
|
||||
$result.success = $true
|
||||
$result.message = "User $($sam) created successfully"
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 0
|
||||
} catch {
|
||||
$result.message = "Error creating user $($sam): $($_.Exception.Message)"
|
||||
Write-Output ($result | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
176
scripts/powershell/create_users_csv.ps1
Normal file
176
scripts/powershell/create_users_csv.ps1
Normal file
@ -0,0 +1,176 @@
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$InputFile
|
||||
)
|
||||
|
||||
# Read meta JSON
|
||||
try {
|
||||
$json = Get-Content -Raw -Path $InputFile -ErrorAction Stop
|
||||
$meta = $json | ConvertFrom-Json
|
||||
} catch {
|
||||
Write-Output (@{ success = $false; message = "Failed to read/parse meta JSON: $($_.Exception.Message)" } | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
$csvFile = [string]$meta.input_file
|
||||
# PowerShell 5.1 doesn't support the null-coalescing operator '??'.
|
||||
# Use an explicit check here to set the default delimiter.
|
||||
$delimiter = [string]$meta.delimiter
|
||||
if ([string]::IsNullOrWhiteSpace($delimiter)) { $delimiter = ',' }
|
||||
$hasHeader = [bool]($meta.has_header -as [bool])
|
||||
$dryRun = [bool]($meta.dry_run -as [bool])
|
||||
$defaultOu = [string]$meta.default_ou
|
||||
|
||||
|
||||
if (-not (Test-Path -Path $csvFile)) {
|
||||
Write-Output (@{ success = $false; message = "CSV file not found: $csvFile" } | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Ensure ActiveDirectory module is available
|
||||
try {
|
||||
Import-Module ActiveDirectory -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Output (@{ success = $false; message = "ActiveDirectory PowerShell module not available: $($_.Exception.Message)" } | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Read CSV
|
||||
try {
|
||||
if ($hasHeader) {
|
||||
$items = Import-Csv -Path $csvFile -Delimiter $delimiter -ErrorAction Stop
|
||||
} else {
|
||||
# Use default headers
|
||||
$headers = 'samaccountname','displayname','mail','password','groups'
|
||||
$items = Import-Csv -Path $csvFile -Delimiter $delimiter -Header $headers -ErrorAction Stop
|
||||
}
|
||||
} catch {
|
||||
Write-Output (@{ success = $false; message = "Failed to parse CSV: $($_.Exception.Message)" } | ConvertTo-Json -Compress)
|
||||
exit 1
|
||||
}
|
||||
|
||||
$actor = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
|
||||
$results = @()
|
||||
$successCount = 0
|
||||
$failCount = 0
|
||||
|
||||
foreach ($row in $items) {
|
||||
$sam = $row.samaccountname
|
||||
$display = $row.displayname
|
||||
$mail = $row.mail
|
||||
$pass = $row.password
|
||||
$groups = $row.groups
|
||||
|
||||
if ([string]::IsNullOrWhiteSpace($ou) -and -not [string]::IsNullOrWhiteSpace($defaultOu)) {
|
||||
$ou = $defaultOu
|
||||
}
|
||||
|
||||
# Password hint text (German)
|
||||
$passwordHint = @"
|
||||
Das sollten die Anforderungen an das Passwort sein:
|
||||
|
||||
- mindestens 7 Zeichen
|
||||
- darf den Benutzer-/Accountnamen nicht enthalten (bzw. keine zu großen Teile davon)
|
||||
- muss Zeichen aus mindestens 3 von 4 Kategorien enthalten:
|
||||
1) Großbuchstaben (A–Z)
|
||||
2) Kleinbuchstaben (a–z)
|
||||
3) Ziffern (0–9)
|
||||
4) Sonderzeichen (alles, was kein Buchstabe/Zahl ist, z. B. ! ? # _ - . , usw.)
|
||||
"@
|
||||
|
||||
function Test-PasswordRequirements {
|
||||
param(
|
||||
[string]$Password,
|
||||
[string]$SamAccountName
|
||||
)
|
||||
|
||||
$errors = @()
|
||||
|
||||
if ([string]::IsNullOrEmpty($Password) -or $Password.Length -lt 7) {
|
||||
$errors += 'Passwort muss mindestens 7 Zeichen lang sein.'
|
||||
}
|
||||
|
||||
# Categories: uppercase, lowercase, digit, special
|
||||
$categories = 0
|
||||
if ($Password -match '[A-Z]') { $categories++ }
|
||||
if ($Password -match '[a-z]') { $categories++ }
|
||||
if ($Password -match '\d') { $categories++ }
|
||||
if ($Password -match '[^A-Za-z0-9]') { $categories++ }
|
||||
if ($categories -lt 3) {
|
||||
$errors += 'Passwort muss Zeichen aus mindestens 3 von 4 Kategorien enthalten (Groß, Klein, Ziffern, Sonderzeichen).'
|
||||
}
|
||||
|
||||
# Check for username inclusion or large parts of it (case-insensitive)
|
||||
if (-not [string]::IsNullOrEmpty($SamAccountName)) {
|
||||
$pwLower = $Password.ToLowerInvariant()
|
||||
$samLower = $SamAccountName.ToLowerInvariant()
|
||||
|
||||
if ($pwLower -like "*${samLower}*") {
|
||||
$errors += 'Passwort darf den Benutzernamen nicht enthalten.'
|
||||
} else {
|
||||
# Check for substrings of username of length >= 4
|
||||
$minLen = 4
|
||||
if ($samLower.Length -ge $minLen) {
|
||||
for ($len = $minLen; $len -le $samLower.Length; $len++) {
|
||||
for ($start = 0; $start -le $samLower.Length - $len; $start++) {
|
||||
$sub = $samLower.Substring($start, $len)
|
||||
if ($pwLower -like "*${sub}*") {
|
||||
$errors += 'Passwort darf keine größeren Teile des Benutzernamens enthalten.'
|
||||
break 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $errors
|
||||
}
|
||||
|
||||
if ([string]::IsNullOrWhiteSpace($sam) -or [string]::IsNullOrWhiteSpace($pass)) {
|
||||
$results += @{ sam = $sam; success = $false; message = 'Missing samaccountname or password' }
|
||||
$failCount++
|
||||
continue
|
||||
}
|
||||
|
||||
# Validate password according to requirements, also during dry run so issues are visible early
|
||||
$pwErrors = Test-PasswordRequirements -Password $pass -SamAccountName $sam
|
||||
if ($pwErrors.Count -gt 0) {
|
||||
$results += @{ sam = $sam; success = $false; message = ('Invalid password: ' + ($pwErrors -join ' | ')); hint = $passwordHint }
|
||||
$failCount++
|
||||
continue
|
||||
}
|
||||
|
||||
if ($dryRun) {
|
||||
$results += @{ sam = $sam; success = $true; message = 'DRY RUN: would create (password validated)' }
|
||||
$successCount++
|
||||
continue
|
||||
}
|
||||
|
||||
try {
|
||||
$props = @{ Name = if ($display -and $display -ne '') { $display } else { $sam }; SamAccountName = $sam; Enabled = $true }
|
||||
if ($mail -and $mail -ne '') { $props['EmailAddress'] = $mail }
|
||||
if ($ou -and $ou -ne '') { $props['Path'] = $ou }
|
||||
$securePass = ConvertTo-SecureString $pass -AsPlainText -Force
|
||||
$props['AccountPassword'] = $securePass
|
||||
|
||||
New-ADUser @props -ErrorAction Stop
|
||||
|
||||
if ($groups -and $groups -ne '') {
|
||||
$groupList = $groups -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' }
|
||||
foreach ($g in $groupList) {
|
||||
Add-ADGroupMember -Identity $g -Members $sam -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
|
||||
$results += @{ sam = $sam; success = $true; message = 'Created' }
|
||||
$successCount++
|
||||
} catch {
|
||||
$results += @{ sam = $sam; success = $false; message = $_.Exception.Message }
|
||||
$failCount++
|
||||
}
|
||||
}
|
||||
|
||||
$output = @{ success = $failCount -eq 0; message = "Created $successCount users, $failCount failures"; details = $results; actor = $actor }
|
||||
Write-Output ($output | ConvertTo-Json -Compress)
|
||||
exit 0
|
||||
Loading…
Reference in New Issue
Block a user