Files
kzbkowskiandClaude Sonnet 5 1126d96271
CI / PHP 8.2 (push) Failing after 2m46s
CI / PHP 8.3 (push) Failing after 59s
CI / PHP 8.4 (push) Failing after 1m7s
ADconsole v1.0.0
First public release.

- docs: document the audit log, user offboarding, CSV export and the
  "require a reason for destructive actions" setting across README, docs/
  and CLAUDE/AGENTS.md; note retention for panel_audit
- docs: fill the publishing placeholders (repo URL, security contact,
  issue-template links) and add a semantic-versioning policy
- move agent/contributor context into CLAUDE/ (AGENTS.md + a README);
  root CLAUDE.md is now a thin @-import pointer
- add a favicon (shield-lock, matching the login screen) to the login
  page and the app layout
- CHANGELOG: promote [Unreleased] to [1.0.0]; keep the earlier internal
  build as [0.1.0]

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UfuvfwexztdS7LDpGuKsuK
2026-09-08 23:14:39 +02:00

148 lines
5.5 KiB
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| Default LDAP Connection Name
|--------------------------------------------------------------------------
*/
'default' => env('LDAP_CONNECTION', 'default'),
/*
|--------------------------------------------------------------------------
| Logowanie administratora do panelu
|--------------------------------------------------------------------------
|
| Do panelu logujemy się kontem Active Directory (LdapRecord "plain bind",
| bez lokalnej tabeli users). Dostęp mają wyłącznie członkowie grupy
| wskazanej w AD_LOGIN_GROUP - pełny DN grupy (zalecane) albo sama nazwa
| (CN). Uwzględniane jest członkostwo zagnieżdżone (grupa w grupie) oraz
| grupa podstawowa. Pusta wartość => nikt nie może się zalogować.
|
*/
'auth' => [
'login_group' => env('AD_LOGIN_GROUP'),
],
/*
|--------------------------------------------------------------------------
| LDAP Connections
|--------------------------------------------------------------------------
|
| Konto z LDAP_USERNAME / LDAP_PASSWORD to konto serwisowe aplikacji -
| używane wyłącznie do odpytywania i modyfikowania obiektów w AD. Panel
| NIE prowadzi lokalnej tabeli kont administratorów - logują się oni
| własnym kontem domenowym (guard 'ldap', patrz sekcja 'auth' powyżej).
|
| Szyfrowanie połączenia:
| - LDAP_SSL=true -> LDAPS na porcie 636 (zalecane produkcyjnie),
| - LDAP_TLS=true -> STARTTLS na porcie 389,
| - oba false -> połączenie nieszyfrowane (tylko lab; reset hasła
| i inne zapisy AD wtedy NIE zadziałają).
|
*/
'connections' => [
'default' => [
'hosts' => explode(',', env('LDAP_HOSTS', env('LDAP_HOST', '127.0.0.1'))),
'username' => env('LDAP_USERNAME'),
'password' => env('LDAP_PASSWORD'),
'port' => (int) env('LDAP_PORT', 636),
'base_dn' => env('LDAP_BASE_DN'),
'timeout' => (int) env('LDAP_TIMEOUT', 5),
// LdapRecord v4: `use_tls` = LDAPS (ldaps://, zwykle port 636),
// `use_starttls` = STARTTLS na zwykłym porcie 389. Włącz dokładnie jedno.
'use_tls' => filter_var(env('LDAP_SSL', true), FILTER_VALIDATE_BOOL),
'use_starttls' => filter_var(env('LDAP_TLS', false), FILTER_VALIDATE_BOOL),
'version' => 3,
'follow_referrals' => false,
'options' => [
// Dla LDAPS z certyfikatem DC niezaufanym przez serwer (self-signed
// / wewnętrzne CA) można wyłączyć weryfikację: LDAP_TLS_VERIFY=false.
LDAP_OPT_X_TLS_REQUIRE_CERT => filter_var(env('LDAP_TLS_VERIFY', false), FILTER_VALIDATE_BOOL)
? 2 // LDAP_OPT_X_TLS_DEMAND
: 0, // LDAP_OPT_X_TLS_NEVER
],
],
],
/*
|--------------------------------------------------------------------------
| Logging
|--------------------------------------------------------------------------
*/
'logging' => env('LDAP_LOGGING', true),
/*
|--------------------------------------------------------------------------
| Cache
|--------------------------------------------------------------------------
*/
'cache' => [
'enabled' => env('LDAP_CACHE', false),
'driver' => env('LDAP_CACHE_DRIVER', 'file'),
],
/*
|--------------------------------------------------------------------------
| Domyślne kontenery (OU) używane przy tworzeniu nowych obiektów
|--------------------------------------------------------------------------
*/
'defaults' => [
'user_ou' => env('LDAP_DEFAULT_USER_OU'),
'computer_ou' => env('LDAP_DEFAULT_COMPUTER_OU'),
'groups_ou' => env('LDAP_DEFAULT_GROUPS_OU'),
'domain_label' => env('AD_DOMAIN_LABEL', env('LDAP_BASE_DN')),
],
/*
|--------------------------------------------------------------------------
| Mapowanie atrybutów AD -> profil w sesji
|--------------------------------------------------------------------------
|
| Po zalogowaniu profil administratora budowany jest na podstawie tego
| mapowania (App\Ldap\User::toPanelProfile()) i trzymany w sesji pod
| kluczem 'ad_admin'. Zestaw atrybutów widocznych w module "Użytkownicy"
| konfiguruje się osobno w panelu (/settings -> zakładka "Atrybuty").
|
*/
'attributes' => [
'user' => [
'login' => 'samaccountname',
'first_name' => 'givenname',
'last_name' => 'sn',
'display_name' => 'displayname',
'mail' => 'mail',
'distinguished_name' => 'distinguishedname',
'title' => 'title',
'department' => 'department',
'company' => 'company',
'telephone' => 'telephonenumber',
'mobile' => 'mobile',
'country' => 'c',
'state' => 'st',
'city' => 'l',
'postal_code' => 'postalcode',
'street_address' => 'streetaddress',
'room_number' => 'roomnumber',
'phisical_delivery_office_name' => 'physicaldeliveryofficename',
'employee_id' => 'employeeid',
'employee_number' => 'employeenumber',
'memberof' => 'memberof',
],
'group' => [
'name' => 'cn',
],
],
];