Intervention\Image\ImageServiceProvider::class,
Barryvdh\DomPDF\ServiceProvider::class,
Barryvdh\Snappy\ServiceProvider::class,
+ Aacotroneo\Saml2\Saml2ServiceProvider::class,
-
// BookStack replacement service providers (Extends Laravel)
BookStack\Providers\PaginationServiceProvider::class,
BookStack\Providers\TranslationServiceProvider::class,
'email_attribute' => env('LDAP_EMAIL_ATTRIBUTE', 'mail'),
'display_name_attribute' => env('LDAP_DISPLAY_NAME_ATTRIBUTE', 'cn'),
'follow_referrals' => env('LDAP_FOLLOW_REFERRALS', false),
- 'user_to_groups' => env('LDAP_USER_TO_GROUPS',false),
+ 'user_to_groups' => env('LDAP_USER_TO_GROUPS', false),
'group_attribute' => env('LDAP_GROUP_ATTRIBUTE', 'memberOf'),
- 'remove_from_groups' => env('LDAP_REMOVE_FROM_GROUPS',false),
+ 'remove_from_groups' => env('LDAP_REMOVE_FROM_GROUPS', false),
'tls_insecure' => env('LDAP_TLS_INSECURE', false),
+ ],
+
+ 'saml' => [
+ 'name' => env('SAML_NAME', 'SSO'),
+ 'enabled' => env('SAML2_ENABLED', false),
+ 'auto_register' => env('SAML_AUTO_REGISTER', false),
+ 'email_attribute' => env('SAML_EMAIL_ATTRIBUTE', 'email'),
+ 'display_name_attribute' => explode('|', env('SAML_DISPLAY_NAME_ATTRIBUTE', 'username')),
+ 'user_name_attribute' => env('SAML_USER_NAME_ATTRIBUTE', null),
+ 'group_attribute' => env('SAML_GROUP_ATTRIBUTE', 'group'),
+ 'remove_from_groups' => env('SAML_REMOVE_FROM_GROUPS',false),
+ 'user_to_groups' => env('SAML_USER_TO_GROUPS', false),
+ 'id_is_user_name' => env('SAML_ID_IS_USER_NAME', true),
]
];
"license": "MIT",
"type": "project",
"require": {
- "php": ">=7.0.5",
+ "php": "^7.2",
+ "ext-curl": "*",
+ "ext-dom": "*",
+ "ext-gd": "*",
"ext-json": "*",
+ "ext-mbstring": "*",
"ext-tidy": "*",
- "ext-dom": "*",
"ext-xml": "*",
- "ext-mbstring": "*",
- "ext-gd": "*",
- "ext-curl": "*",
- "laravel/framework": "~5.5.44",
- "fideloper/proxy": "~3.3",
- "intervention/image": "^2.4",
- "laravel/socialite": "3.0.x-dev",
+ "barryvdh/laravel-dompdf": "^0.8.5",
+ "barryvdh/laravel-snappy": "^0.4.5",
+ "doctrine/dbal": "^2.9",
+ "fideloper/proxy": "^4.0",
+ "gathercontent/htmldiff": "^0.2.1",
+ "intervention/image": "^2.5",
+ "laravel/framework": "^6.0",
+ "laravel/socialite": "^4.2",
"league/flysystem-aws-s3-v3": "^1.0",
- "barryvdh/laravel-dompdf": "^0.8.1",
"predis/predis": "^1.1",
- "gathercontent/htmldiff": "^0.2.1",
- "barryvdh/laravel-snappy": "^0.4.0",
- "socialiteproviders/slack": "^3.0",
+ "socialiteproviders/discord": "^2.0",
+ "socialiteproviders/gitlab": "^3.0",
"socialiteproviders/microsoft-azure": "^3.0",
"socialiteproviders/okta": "^1.0",
- "socialiteproviders/gitlab": "^3.0",
- "socialiteproviders/twitch": "^3.0",
- "socialiteproviders/discord": "^2.0",
- "doctrine/dbal": "^2.5",
+ "socialiteproviders/slack": "^3.0",
- "socialiteproviders/twitch": "^5.0"
++ "socialiteproviders/twitch": "^5.0",
+ "aacotroneo/laravel-saml2": "^1.0"
},
"require-dev": {
- "filp/whoops": "~2.0",
- "fzaninotto/faker": "~1.4",
- "mockery/mockery": "~1.0",
- "phpunit/phpunit": "~6.0",
- "symfony/css-selector": "3.1.*",
- "symfony/dom-crawler": "3.1.*",
- "laravel/browser-kit-testing": "^2.0",
- "barryvdh/laravel-ide-helper": "^2.4.1",
- "barryvdh/laravel-debugbar": "^3.1.0",
- "squizlabs/php_codesniffer": "^3.2"
+ "barryvdh/laravel-debugbar": "^3.2.8",
+ "barryvdh/laravel-ide-helper": "^2.6.4",
+ "facade/ignition": "^1.4",
+ "fzaninotto/faker": "^1.4",
+ "laravel/browser-kit-testing": "^5.1",
+ "mockery/mockery": "^1.0",
+ "nunomaduro/collision": "^3.0",
+ "phpunit/phpunit": "^8.0",
+ "squizlabs/php_codesniffer": "^3.4",
+ "wnx/laravel-stats": "^2.0"
},
"autoload": {
"classmap": [
'permissionJson' => 'Du hast keine Berechtigung, die angeforderte Aktion auszuführen.',
// Auth
++ 'saml_already_logged_in' => 'Du bist bereits angemeldet',
+ 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.',
'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melde dich an.',
'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registriere dich erneut.',
- 'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
- 'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlafgen',
- 'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
- 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.',
- 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
- 'social_no_action_defined' => 'Es ist keine Aktion definiert',
- 'social_login_bad_response' => "Fehler bei der :socialAccount-Anmeldung: \n:error",
- 'saml_already_logged_in' => 'Du bist bereits angemeldet',
++
'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melde dich mit dem :socialAccount-Konto an.',
'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Du bereits registriert bist, kannst Du Dein :socialAccount-Konto in Deinen Profil-Einstellungen verknüpfen.',
+ 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.',
+ 'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.',
'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Du kannst das in Deinen Profil-Einstellungen tun.',
'social_account_register_instructions' => 'Wenn Du bisher kein Social-Media Konto besitzt, kannst Du ein solches Konto mit der :socialAccount Option anlegen.',
+ 'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden',
+ 'social_driver_not_configured' => 'Ihr :socialAccount-Konto ist nicht korrekt konfiguriert.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
// System
'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stelle sicher, dass dieser Ordner auf dem Server beschreibbar ist.',
@endif
@if($authMethod === 'standard')
- <div>
+ <div new-user-password>
<label class="setting-list-label">{{ trans('settings.users_password') }}</label>
- <p class="small">{{ trans('settings.users_password_desc') }}</p>
- @if(isset($model))
+
+ @if(!isset($model))
<p class="small">
- {{ trans('settings.users_password_warning') }}
+ {{ trans('settings.users_send_invite_text') }}
</p>
+
+ @include('components.toggle-switch', [
+ 'name' => 'send_invite',
+ 'value' => old('send_invite', 'true') === 'true',
+ 'label' => trans('settings.users_send_invite_option')
+ ])
+
@endif
- <div class="grid half mt-m gap-xl">
- <div>
- <label for="password">{{ trans('auth.password') }}</label>
- @include('form.password', ['name' => 'password'])
- </div>
- <div>
- <label for="password-confirm">{{ trans('auth.password_confirm') }}</label>
- @include('form.password', ['name' => 'password-confirm'])
+
+ <div id="password-input-container" @if(!isset($model)) style="display: none;" @endif>
+ <p class="small">{{ trans('settings.users_password_desc') }}</p>
+ @if(isset($model))
+ <p class="small">
+ {{ trans('settings.users_password_warning') }}
+ </p>
+ @endif
+ <div class="grid half mt-m gap-xl">
+ <div>
+ <label for="password">{{ trans('auth.password') }}</label>
+ @include('form.password', ['name' => 'password'])
+ </div>
+ <div>
+ <label for="password-confirm">{{ trans('auth.password_confirm') }}</label>
+ @include('form.password', ['name' => 'password-confirm'])
+ </div>
</div>
</div>
+
</div>
- @endif
+ @endif