Files
ADconsle/lang/pl/config.php
T
kzbkowskiandClaude Sonnet 5 b313c126ce
CI / PHP 8.2 (push) Failing after 1m40s
CI / PHP 8.3 (push) Failing after 55s
CI / PHP 8.4 (push) Failing after 1m11s
Release image / image (push) Successful in 2m33s
ADconsole v1.1.0
Config backup, a Docker dev/prod split, and a Gitea-built release image.

Added
- /settings -> General -> "Configuration backup": JSON export/import of the
  panel's general settings + attribute definitions
  (App\Services\ConfigBackupService); audited as config.export / config.import.
  Export can leave out the attribute-encryption key. No AD data included.
- docker/compose.dev.yaml: live-reload dev stack that bind-mounts the working
  tree. docker/php/Dockerfile is now multi-stage (base -> dev / prod).
- .github/workflows/release.yml: on every vX.Y.Z tag, builds the prod image and
  pushes gitea.kzbikowski.pl/kzbkowski/adconsole:{X.Y.Z,X.Y,latest}.

Changed
- docker/compose.yaml: self-contained prod image (app code + composer install
  --no-dev baked in via COPY); persistent state in docker/data/{app_storage,db};
  defaults to the released image (ADCONSOLE_VERSION pins a tag, ADCONSOLE_IMAGE
  replaces the ref). Apache now honours public/.htaccess (AllowOverride All).
  Run from the repo root with --env-file .env.
- Repo root now holds only README.md; CHANGELOG / CONTRIBUTING / SECURITY /
  CODE_OF_CONDUCT moved under docs/.

Upgrade notes: docs/upgrading.md#v110--docker-layout. Full log: docs/CHANGELOG.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JKT9p3bfP8RZesExdYCS52
2026-09-10 09:13:04 +02:00

105 lines
6.8 KiB
PHP

<?php
return [
'title' => 'Konfiguracja',
'heading' => 'Konfiguracja',
'subtitle' => 'Ustawienia samej aplikacji (nie danych w Active Directory) - zapisywane lokalnie, bez bazy danych.',
'tab_general' => 'Ogólne',
'tab_attributes' => 'Atrybuty',
'general' => [
'reset_defaults_heading' => 'Domyślne zaznaczenia przy resecie hasła',
'default_must_change' => 'Domyślnie zaznacz "Użytkownik musi zmienić hasło przy logowaniu"',
'default_unlock' => 'Domyślnie zaznacz "Odblokuj konto"',
'password_policy_heading' => 'Polityka haseł',
'max_age_label' => 'Maksymalny wiek hasła (dni)',
'max_age_help' => 'Na tej podstawie panel wylicza datę wygaśnięcia hasła (domyślnie <strong>42</strong>). Konta z ustawieniem „hasło nigdy nie wygasa" są pomijane. <code>0</code> = nie wyliczaj.',
'generator_heading' => 'Generator haseł (tylko panel)',
'generator_length' => 'Długość generowanego hasła',
'generator_symbols' => 'Znaki specjalne',
'generator_help' => 'Używane przez przycisk „kostki" przy polach hasła (dodawanie / reset). <strong>Nie zmienia</strong> polityki haseł w Active Directory.',
'encryption_heading' => 'Szyfrowanie atrybutów',
'encryption_key' => 'Klucz szyfrujący',
'encryption_help' => 'Używany do odszyfrowania i zaszyfrowania atrybutów, którym w zakładce <strong>Atrybuty</strong> ustawiono typ „Tekst szyfrowany" (domyślnie <code>msDS-cloudExtensionAttribute1/2</code>). Format zgodny z Laravel Crypt (AES-CBC + MAC). Możesz wpisać dowolne hasło (klucz = SHA-256 z tekstu) albo wkleić klucz w formacie <code>base64:…</code> — jeśli atrybuty były już szyfrowane wartością <code>APP_KEY</code>, wklej tutaj tę wartość. Pusty = szyfrowanie wyłączone.',
'columns_note' => 'Kolumny listy użytkowników (w tym status konta i wygasanie hasła) - ich widoczność i kolejność ustawisz w zakładce <strong>Atrybuty</strong>.',
'audit_heading' => 'Dziennik zmian',
'require_reason' => 'Wymagaj podania powodu przy akcjach niszczących',
'require_reason_help' => 'Dotyczy wyłączenia konta, usunięcia, przeniesienia do OU oraz offboardingu. Wpis w dzienniku powstaje zawsze, niezależnie od tego ustawienia.',
'save' => 'Zapisz Konfigurację',
'system_heading' => 'Ustawienia Systemu',
'ldap_from_env' => 'Połączenie LDAP w .env',
'ou_defs_env' => 'Definicje OU w .env',
'env_notice' => 'Zmiana parametrów połączenia LDAP oraz grupy logowania (<code>AD_LOGIN_GROUP</code>) odbywa się przez plik <code>.env</code> (nie przez ten formularz).',
],
'attributes' => [
'heading' => 'Atrybuty Active Directory w panelu',
'intro' => 'Definiuje, które atrybuty AD panel pobiera i pokazuje. <strong>Kolumna</strong> = pokaż wartość jako dodatkową kolumnę listy użytkowników. <strong>Kategoria</strong> = zakładka w oknie „Podgląd / Edycja", na której atrybut się pojawia. <strong>Typ</strong> decyduje o polu w oknie edycji: <em>tekst</em>, <em>liczba</em>, <em>data</em> lub <em>tekst szyfrowany</em> (wartość w AD szyfrowana kluczem z zakładki „Ogólne"). Typy <em>systemowy</em>, <em>status konta</em> i <em>wygaśnięcie hasła</em> mają pozycje wbudowane - są tylko do odczytu.',
'add' => 'Dodaj atrybut',
'th_order' => 'Kolej.',
'th_key' => 'Klucz',
'th_label' => 'Etykieta',
'th_ldap' => 'Atrybut AD',
'th_category' => 'Kategoria',
'th_column' => 'Kolumna',
'th_type' => 'Typ',
'move_up' => 'W górę',
'move_down' => 'W dół',
'badge_computed' => 'wyliczana',
'badge_system' => 'systemowy',
'badge_fixed' => 'na stałe',
'optgroup_editable' => 'Edytowalne',
'optgroup_non_editable' => 'Nieedytowalne',
'remove' => 'Usuń atrybut',
'detail_toggle' => 'Reguły walidacji',
'detail_regex' => 'Wzorzec (regex z ogranicznikami)',
'detail_regex_placeholder' => '/^[A-Z]{2}\d{4}$/',
'detail_required' => 'Pole wymagane',
'detail_help' => 'Tekst pomocy pod polem',
'footer_help' => 'Wybierasz <strong>typ</strong> atrybutu, a panel dobiera pole i walidację. <strong>sAMAccountName</strong>, <strong>Ścieżka (DN)</strong> (typ <em>systemowy</em>) oraz kolumny wyliczane (<em>status konta</em>, <em>wygaśnięcie hasła</em>) są „na stałe" - typu, klucza i atrybutu AD nie da się zmienić, nie można ich też usunąć. <strong>Wygasanie konta</strong> (accountExpires) ma stały typ <em>data</em>, ale można mu przypisać kategorię (w oknie „Podgląd / Edycja" pojawi się pole daty; puste = konto nie wygasa). Pozostałe pozycje są w pełni konfigurowalne.',
'save' => 'Zapisz Atrybuty',
'tpl_key_placeholder' => 'np. mojAtrybut',
'tpl_label_placeholder' => 'Etykieta w panelu',
'tpl_ldap_placeholder' => 'np. extensionAttribute5',
],
'backup' => [
'heading' => 'Kopia zapasowa konfiguracji',
'intro' => 'Pobierz całą konfigurację panelu (ustawienia z zakładki <strong>Ogólne</strong> oraz definicje atrybutów) do pliku JSON albo wczytaj ją z wcześniej pobranego pliku. Kopia nie obejmuje danych z Active Directory ani dziennika zmian.',
'export_heading' => 'Eksport (pobierz plik)',
'export_btn' => 'Pobierz kopię',
'exclude_key' => 'Pomiń w pliku klucz szyfrujący atrybuty',
'import_heading' => 'Import (wczytaj plik)',
'import_btn' => 'Wczytaj i nadpisz',
'import_confirm' => 'Wczytanie pliku nadpisze bieżącą konfigurację panelu oraz listę atrybutów. Kontynuować?',
'warning' => 'Plik kopii zawiera pełną konfigurację panelu — <strong>w tym klucz szyfrujący atrybuty</strong>, o ile nie zaznaczysz opcji jego pominięcia. Przechowuj go w bezpiecznym miejscu.',
'flash_imported' => 'Konfigurację wczytano z pliku kopii zapasowej.',
'error_not_json' => 'Nie udało się odczytać pliku — to nie jest poprawny JSON.',
'error_bad_format' => 'Ten plik nie jest kopią zapasową konfiguracji ADconsole.',
'error_bad_version' => 'Plik kopii pochodzi z nowszej wersji panelu i nie może zostać wczytany.',
'error_empty' => 'Plik kopii nie zawiera żadnych ustawień ani atrybutów.',
],
'flash' => [
'saved' => 'Konfiguracja panelu została zapisana.',
'attributes_saved' => 'Konfiguracja atrybutów została zapisana.',
],
'validation' => [
'key_regex' => 'Klucz atrybutu może zawierać tylko litery, cyfry, myślnik i podkreślenie.',
'ldap_regex' => 'Nazwa atrybutu AD może zawierać tylko litery, cyfry i myślnik.',
'regex_invalid' => 'Wzorzec walidacji jest niepoprawnym wyrażeniem regularnym (pamiętaj o ogranicznikach, np. /.../).',
],
];