Logowanie z użyciem adapterów (np. integracja z różnymi systemami logowania)

Założenie: Zbudujemy prosty system logowania, który będzie mógł korzystać z różnych metod uwierzytelniania (np. logowanie lokalne, logowanie przez Google, Facebook) za pomocą wzorca adaptera.

Krok po kroku:

  1. Definicja interfejsu logowania: Stworzymy interfejs, który zdefiniuje metody wymagane przez wszystkie adaptery.
  2. 
    interface LoginAdapter {
        public function login(string $username, string $password): bool;
    }
    				

    Ten interfejs wymusza implementację metody login() przez każdy adapter.

  3. Adapter dla logowania lokalnego: Utworzymy adapter dla logowania do lokalnej bazy danych.
  4. 
    class LocalLoginAdapter implements LoginAdapter {
        public function login(string $username, string $password): bool {
            // Tutaj umieść logikę logowania do lokalnej bazy danych
            // ... sprawdzenie w bazie danych ...
            return true; // Zwróć true, jeśli logowanie się powiodło, false w przeciwnym wypadku
        }
    }
    				

    Ten adapter implementuje interfejs LoginAdapter i zawiera logikę logowania do lokalnej bazy danych. Pamiętaj o zastąpieniu komentarza “// Tutaj umieść logikę logowania do lokalnej bazy danych” faktycznym kodem dostępu do bazy.

  5. Adapter dla logowania przez Google (przykład): Utworzymy adapter dla logowania przez Google (implementacja wymagałaby zewnętrznej biblioteki do integracji z API Google).
  6. 
    class GoogleLoginAdapter implements LoginAdapter {
        public function login(string $username, string $password): bool {
            // Tutaj umieść logikę logowania przez Google API
            // ... użycie biblioteki Google API ...
            return true; // Zwróć true, jeśli logowanie się powiodło, false w przeciwnym wypadku
        }
    }
    				

    Podobnie jak poprzednio, ten adapter implementuje interfejs i zawiera logikę logowania przez Google. W rzeczywistości wymagałby on użycia zewnętrznej biblioteki do interakcji z API Google.

  7. Klasa główna do logowania: Klasa ta będzie korzystać z adapterów.
  8. 
    class Login {
        private LoginAdapter $adapter;
    
        public function __construct(LoginAdapter $adapter) {
            $this->adapter = $adapter;
        }
    
        public function authenticate(string $username, string $password): bool {
            return $this->adapter->login($username, $password);
        }
    }
    				

    Klasa Login przyjmuje adapter w konstruktorze i używa go do uwierzytelniania.

Ten przykład pokazuje podstawy wzorca adaptera w kontekście logowania. Można rozszerzyć ten system o wiele więcej adapterów dla różnych metod uwierzytelniania.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *