Zend Framework – Céges Demo portál – Kijelentkeztetés XV. rész

Most, hogy megvan a bejelentkezés, egy kicsit módosítani kell pár helyen a kódban. Például jó lenne tudnia a nézetnek, hogy regisztrált és bejelentkezett felhasználó látja a portál képét.

Ha be van jelentkezve, akkor kellene egy kijelentkezés felirat is, ha be van jelentkezve, akkor minek jelenjen meg a regisztráció, bejelentkezés felirat?

Ha be van jelentkezve lásson csak Kijelentkezés feliratot a felhasználónk, ha nincs bejelentkezve, akkor tudjon regisztrálni és/vagy bejelentkezni.

Ennek megoldására a nézetnek is tudnia kell, hogy felhasználónk be van e már jelentkezve át kell adni neki az adatokat. Ezt a korábban létrehozott BaseControllerünkben érdemes megoldani, mivel minden Controllert ebből örököltettünk, így minden egyes esemény lefutásakor meghívódik azaz nem is a controller hanem a controller init metódusa. A BaseController-ünk init() metódusában létre kell hoznunk azaz le kell kérni a szervertől a klienshez tartozó sessionazonosító ‘felhasznalo’ névteréhez tartozó adatokat, amit a nézetnek át is kell adni ha létezik!

Ezt a következőképpen tehetjük meg:

$felhasznaloSession = new Zend_Session_Namespace('felhasznalo');
if($felhasznaloSession->felhasznalo) {
$this->view->layout()->felhasznalo = $felhasznaloSession->felhasznalo;
}

Ha van felhasznalo névtér, akkor létrejön a $felhasznaloSession változó (nem null értéket kap). Átadjuk ezt az elrendezésünket kialakító layoutoknak (header.phtml, content.phtml,footer.phtml, megjegyezném a tartalommal rendelkező az egyes események, eredményeképpen létrejövő .phtml fájlok is használni tudják majd ezt a dolgot gondoljunk itt az index/index.phtml-re).

Ha ezzel megvagyunk lépjünk a header.phtml fájlunk forrására és írjuk át kicsit:

<!--header layout-->
<div id="myslidemenu">
<ul>
<li><a href="/demo/public_html/index/index">Főoldal</a></li>
<li><a href="/demo/public_html/index/szolgaltatasok">Szolgáltatások</a></li>
<li><a href="/demo/public_html/index/cegunk">Cégünk</a></li>
<li><a href="/demo/public_html/index/kapcsolat">Kapcsolat</a></li>
<?php if(!$this->layout()->felhasznalo){?>
<li><a href="/demo/public_html/index/regisztracio">Regisztráció</a></li>
<li><a href="/demo/public_html/index/bejelentkezes">Bejelentkezés</a></li>
<?php
}
else{
echo '<li><a href="/demo/public_html/index/kijelentkezes">Kijelentkezés</a></li>';
}
?>
</ul>
</div>

Beillesztésre került egy if utasítás: <?php if(!$this->layout()->felhasznalo){?>

ha nem létezik (!) a felhasznalo objektum, akkor jelenjen meg Regisztráció, Bejelentkezés felirat(esemény), ha be van jelentkezve echo-uk ki a Kijelentkezés feliratot(eseményt).

Remélem mindenkinek feltűnt, hogy a Kijelentkezés felirathoz ami egy link egy esemény is van rendelve. Ez az esemény az IndexController-ben a kijelentkezesAction()-re mutat lássuk most a kijelentkeztetésnek, egy megoldását. Mi is történjen, ha felhasználónk kijelentkezik az alkalmazásunkból?

Egyszerűen, egy “null” értéket adunk a sessionazonosító ‘felhasznalo’ névterének azaz megszüntetjük, majd ezt a nézet számára is átadjuk az MVC kódolás miatt:

public function kijelentkezesAction()
{
//üzenetek elkapása
$flash = $this->_helper->getHelper('flashMessenger');
if ($flash->hasMessages()) {
$this->view->message = implode("<br />", $flash->getMessages());
} // if ($flash->hasMessages())
$felhasznaloSession = new Zend_Session_Namespace('felhasznalo');
if($felhasznaloSession->felhasznalo) {
$felhasznaloSession->felhasznalo = null;
$this->view->layout()->felhasznalo = $felhasznaloSession->felhasznalo;
}
$this->_helper->flashMessenger->addMessage("Sikeres kijelentkezés!");
$this->_redirect('index/index');
return true;
} // public function regisztracioAction()

Ha a kijelentkezés sikeresen lefut akkor, erről a felhasználónk is kap egy rövidke üzenetet!

Most nézzük meg hogyan is néz ki, céges portálunk azonosítatlan felhasználó esetén:

Demo Kft azonosítatlan felhasználó esetén portálunk képe

Azonosított felhasználó esetén pedig:

Demo Kft azonosított felhasználó esetén portál képe

Ezzel a pár lépéssel most már Zend Framework keretrendszert használva, felhasználóink tudnak a kapcsolati oldalon kérdéseikkel bombázni.

Ha akarnak tudnak regisztrálni, bejelentkezni majd kijelentkezni.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s