From: Dan Brown Date: Sat, 16 Nov 2019 12:42:45 +0000 (+0000) Subject: Merge branch 'feature/saml' of git://github.com/Xiphoseer/BookStack into Xiphoseer... X-Git-Tag: v0.28.0~1^2~47^2~8 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/bb1f43cbd882b51550007020f72667fd0fb10171 Merge branch 'feature/saml' of git://github.com/Xiphoseer/BookStack into Xiphoseer-feature/saml --- bb1f43cbd882b51550007020f72667fd0fb10171 diff --cc app/Config/app.php index 0d06a9b21,23025a6c4..9dae697da --- a/app/Config/app.php +++ b/app/Config/app.php @@@ -105,7 -106,9 +105,8 @@@ return 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, diff --cc app/Config/services.php index 923015f6e,b3dc9f087..0f80a9fc1 --- a/app/Config/services.php +++ b/app/Config/services.php @@@ -126,10 -143,23 +126,23 @@@ return '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), ] ]; diff --cc composer.json index a8b9456a1,457ce5093..1d952a0c5 --- a/composer.json +++ b/composer.json @@@ -5,42 -5,43 +5,43 @@@ "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": [ diff --cc resources/lang/de_informal/errors.php index 9b5b5166b,420c35c8d..e62350156 --- a/resources/lang/de_informal/errors.php +++ b/resources/lang/de_informal/errors.php @@@ -9,25 -7,13 +9,20 @@@ return '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.', diff --cc resources/views/users/form.blade.php index 32b717ec8,7a3d44935..6c08cad44 --- a/resources/views/users/form.blade.php +++ b/resources/views/users/form.blade.php @@@ -48,40 -48,23 +48,40 @@@ @endif @if($authMethod === 'standard') -
+
-

{{ trans('settings.users_password_desc') }}

- @if(isset($model)) + + @if(!isset($model))

- {{ trans('settings.users_password_warning') }} + {{ trans('settings.users_send_invite_text') }}

+ + @include('components.toggle-switch', [ + 'name' => 'send_invite', + 'value' => old('send_invite', 'true') === 'true', + 'label' => trans('settings.users_send_invite_option') + ]) + @endif -
-
- - @include('form.password', ['name' => 'password']) -
-
- - @include('form.password', ['name' => 'password-confirm']) + + +
- @endif + @endif