Az observer minta 3.rész

Az előző részben meghatározott feladathoz a következő osztályokat hoztam létre:

Password Class: A jelszó kezelést végzi. Előállítja a jelszót. A beadott szöveget kódolja generált salt alapján. A visszadaott érték a jelszó és a salt érték lesz.

UserLogin Class: A beléptetést felügyelő osztály, a tényleges subject, akinek az állapotát más osztályok figyelik. Ellenőrzi, hogy az illető jogosult-e a belépésre és ennek megfelelően veszi fel az állapotát. Az ellenőrzés során a jelszóházirendnek való megfelelőséget vizsgálja. Az állapotok a következőek lehetnek: sikeres belépés, rossz jelszó miatti sikertelen belépés, rossz felhasználói név miatti belépés, a jogosultság lejárt, a felhasználó ki lett tiltva, túl sok sikertlen próbálkozás.

User Class: Entity osztály és a felhasználók adatait tartalmazza. Az adatbázisban a User tábla megfelelője. Bejelentkezési név, jelszó, email, salt, utolsó bejelentkezés dátuma, sikertelen belépések száma, utolsó jelszó módosítás dátuma. A DooPHP által a tábla szerkezetéből generált automatikus model osztály, az MVC mintának megfelelően.

Mail Class: Alapfeladata, hogy bizonyos állapotok estén, előre meghatározott üzenetet küldjön a számára paraméterként megadott user számára. Az observer interfészt megvalósító osztály és jelen példában a beléptetést felügyelő osztályt figyeli. Az update metódusában a keretrendszerben lévő levélküldési funkciót használja.

Log Class: Feladata, hogy bizonyos állapotok esetén egy megadott fájlba bejegyzéseket tegyen. A beléptetés során keletkező üzenetkor fontos információk: IP cím, Username, Dátum, Esemény. Az observer interfészt megvalósító osztály és a jelen példában a beléptetést felügyelő osztályt figyeli. Jelenleg a keretrendszer loggolási funkcióját használja fel.

MainController Class: Az webalkalmazást vezérlő osztály, amely a keretrendszer DooController osztályából öröklődik. A routing beállításon keresztül kapja meg a vezérlést a böngészőben kiadott kérésnek megfelelően az osztály adott metódusa, amely végrehajtódik a hívás során. Ez a keretrendszer részeként az MVC mintának a Controller megvalósítása.

View Class: A megjelenítést végző osztály, a DooPHP keretrendszer része. Számára a szükséges HTML-t kell összeállítani. Jelen példában egy beléptető form, hibaüzenet és a sikeres belépést jelentő oldalból áll. Összetettebb esetekben ez  kiegészülhet javascript kódokkal és sablon rendszerrel.

Az osztályok közötti együttműködési UML diagram:

Az időben lezajló folyamatok és az osztályok kapcsolata vagyis az UML szekvencia diagram:

Implementálás:

Mivel a tényelges kód a keretrendszerrel együtt több fájlt érint, ezért az egészet inkább letölthetővé tettem (a teljes protected könyvtár) és a kódot nem jelenítem itt meg. A letöltés után a kipróbáláshoz a következő teendőkre van szükség:

  • A DooPHP keretrendszer letöltése és a letöltött fájlok bemásolása
  • Az sql fájl futtatása, a proba user email címének beállítása.
  • A szükséges környezeti változók beállítása: Az adatbázis kapcsolat (config/db.conf.php) és a Logfile helyének és a Host nevének beállítása (config/common.conf.php)

A logfile megtekintéséhez a keretrendszer által használt nézegetőt lehet felhasználni. A logfile xml formátumban készül. A nézegető elérhetősége: hostnév/tools/logviewer.html

Az itt közreadott kód hibát is tartalmaz, szándékosan. A következő ide kapcsolódó cikkemben a Unit tesztelésről lesz szó, ahol az elkészült kód tesztelését fogom leírni és felderíteni a hibát, mivel véleményem szerint az adott osztály csak ezekkel együtt teljes értékű.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter


A bejegyzés kategóriája:Tervezési minták and tagged . Vedd fel a kedvencek közé: link. Szólj hozzá vagy hagyj egy trackback-et:Trackback URL.

Szólj hozzá

Hozzászólás küldéséhez Be kell jelentkezni