PHPackages                             sti-bayern/sti-auth - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. sti-bayern/sti-auth

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

sti-bayern/sti-auth
===================

Anmelde-Paket für BVV-Web-Apps

0.2.0(5mo ago)08MITPHP

Since Dec 2Pushed 5mo agoCompare

[ Source](https://github.com/sti-bayern/sti-auth)[ Packagist](https://packagist.org/packages/sti-bayern/sti-auth)[ RSS](/packages/sti-bayern-sti-auth/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (2)Versions (5)Used By (0)

STI Auth -- Zentrales Login über Remote-Laravel-Auth
====================================================

[](#sti-auth----zentrales-login-über-remote-laravel-auth)

Ein Laravel-Package zur Anmeldung gegen einen zentralen Auth-Server (z. B. BVV-Adressverwaltung") über einen Remote-Token-Mechanismus.

Dieses Package ersetzt das lokale Login der Client-Anwendung und nutzt stattdessen eine externe Laravel-App zur Authentifizierung.
Die Session des Clients enthält anschließend ein Remote-Token, das regelmäßig über `/api/validate` geprüft wird.

Installation
------------

[](#installation)

### Package installieren

[](#package-installieren)

```
composer require sti-bayern/sti-auth

```

Bei lokaler Entwicklung:

```
"repositories": [
    {
        "type": "path",
        "url": "packages/sti-auth"
    }
]
```

```
composer require sti/sti-auth:* --dev

```

Konfiguration
-------------

[](#konfiguration)

### Setzen der Env-Variablen

[](#setzen-der-env-variablen)

In der `.env` können optional folgende Variablen gesetzt werden: (die Beispielwerte entsprechen den Standardwerten)

```
AUTH_BASE_URL=https://adressen.ldbv.bybn.de     # Url des Anmeldedienstes
AUTH_API_VIEW=sti-auth::login                   # View-Name des Login-Templates
AUTH_API_ROUTE_LOGIN=/login                     # Route-Name des Login-Formulars
AUTH_API_ROUTE_LOGout=/logout                   # Route-Name des Logout-Formulars
AUTH_API_TOKEN=auth_token                       # Name des intern verwendeten Session-Tokens

```

### optional Config veröffentlichen

[](#optional-config-veröffentlichen)

Optional läßt sich die config auch veröffentlichen. Im Normalfall ist das nicht notwendig, die Konfiguration über die .env-Variablen reicht aus.

```
php artisan vendor:publish --provider="Sti\StiAuth\StiAuthServiceProvider" --tag=config

```

Es entsteht:

```
config/sti-auth.php

```

Remote Auth Guard einrichten (Laravel 12)
-----------------------------------------

[](#remote-auth-guard-einrichten-laravel-12)

`config/auth.php` öffnen und ergänzen:

```
'guards' => [
    'web' => [
        'driver'   => 'remote',
        'provider' => 'remote-users',
    ],
],

'providers' => [
    'remote-users' => [
        'driver' => 'remote',
    ],
],
```

Damit verwendet Laravel automatisch den Remote-Guard.

`Auth::user()` gibt die Infos des angemeldeten Benutzer aus.

ggf. Routen des Packages anpassen
---------------------------------

[](#ggf-routen-des-packages-anpassen)

Standardmäßig läuft das Login über die Route `/login`.

Das kann entweder über die entsprechenden Variablen in der .env-Datei geändert werden, oder man veröffentlich die route-File des Pakets und passt diese an.

```
php artisan vendor:publish --provider="Sti\StiAuth\StiAuthServiceProvider" --tag=route

```

Optionale Synchronisierung in eine lokale User-Tabelle
------------------------------------------------------

[](#optionale-synchronisierung-in-eine-lokale-user-tabelle)

Standardmäßig gibt `Auth::user()` einen `RemoteUser` zurück, der nur die vom Authentifizierungsserver bereitgestellten Daten enthält. Es ist jedoch möglich, diese Daten bei jeder Anmeldung automatisch in eine lokale Datenbanktabelle zu synchronisieren. Dies ermöglicht es Ihnen, Beziehungen zu anderen Modellen in Ihrer Anwendung zu definieren und die Benutzerdaten lokal zu erweitern.

### 1. Migration veröffentlichen und ausführen

[](#1-migration-veröffentlichen-und-ausführen)

Zuerst müssen Sie die Migrationsdatei veröffentlichen, die eine Standard-Benutzertabelle erstellt:

```
php artisan vendor:publish --provider="Sti\StiAuth\StiAuthServiceProvider" --tag=migrations
php artisan migrate

```

### 2. Konfiguration anpassen

[](#2-konfiguration-anpassen)

Öffnen Sie die Konfigurationsdatei `config/sti-auth.php` (veröffentlichen Sie sie, falls noch nicht geschehen) und passen Sie den Abschnitt `local_user` an.

```
// config/sti-auth.php

'local_user' => [
    // Geben Sie hier Ihr lokales Benutzermodell an.
    'model' => App\Models\User::class,

    // Der Name der Datenbanktabelle (optional, Standard ist 'users').
    'table' => 'users',

    // Mappen Sie hier die Attribute des Remote-Users auf Ihre lokalen Datenbankspalten.
    'sync_attributes' => [
        'id'    => 'id',
        'name'  => 'name',
        'email' => 'email',
        'login' => 'login',
    ],
],
```

Wenn `local_user.model` auf ein gültiges Eloquent-Modell gesetzt ist, wird die Synchronisierung aktiviert. Bei jeder Anmeldung wird der Benutzer in der lokalen Tabelle über die `id` gesucht und aktualisiert (`updateOrCreate`). `Auth::user()` gibt dann eine Instanz Ihres lokalen Modells anstelle des `RemoteUser` zurück.

Wenn `local_user.model` auf `null` gesetzt ist (Standardeinstellung), ist die Synchronisierung deaktiviert, und das Paket verhält sich wie zuvor.

### 3. Eloquent-Modell erstellen

[](#3-eloquent-modell-erstellen)

Das Paket liefert nur die Migration, um die Datenbanktabelle zu erstellen. Für das passende Eloquent-Modell sind Sie selbst verantwortlich. **Es ist zwingend erforderlich, dass Ihr Modell die `Illuminate\Contracts\Auth\Authenticatable`-Schnittstelle implementiert.**

Der einfachste Weg, dies zu erreichen, ist die Erweiterung der Basisklasse `Illuminate\Foundation\Auth\User`, wie im folgenden Beispiel gezeigt. Stellen Sie außerdem sicher, dass die Eigenschaften `$fillable` und `$table` korrekt gesetzt sind.

Hier ist ein Beispiel für ein `App\Models\User`-Modell:

```
