Dziś zajmiemy się autentyfikacją użytkownika. I nie będę pisał skomplikowanych wierszy kodu :) bo po co skoro są pluginy :). Zaczynajmy więc:
Pierwsza sprawa to zabezpieczenia wejścia dla konkretnej aplikacji w symfony co robimy za pomocą zmiany kodu w:
apps/nazwa/config/security.yml
default:
is_secure: false //oczywiscie zmieniamy na true
Tym sposobem gdy będziecie chcieli wejść sobie po adresie na aplikacje w tym przypadku "nazwa" wyskoczy informacja iż strona nie jest dostępna publicznie.
Następnie przydałby się nam plugin. W tym celu w pierwszej kolejności sprawdźmy czy mamy zainstalowany PEAR ponieważ jest on wymagany dla następującego polecenia dla symfony:
php symfony plugin:install sfDoctrinePlugin
Jeżeli korzystamy z tego sposobu instalacji to automatycznie zostaje zmieniona
// config/ProjectConfiguration.class.php
zatem nie mamy się już czym przejmować. Jeżeli natomiast robimy to w innym sposobem to musimy pamiętać o włączeniu pluginu ręcznie co prezentuje poniżej:
// config/ProjectConfiguration.class.php class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins(array( 'sfDoctrinePlugin', 'sfDoctrineGuardPlugin' )); } }
Po zainstalowaniu pluginu wykonujemy standardowe polecenie:
php symfony doctrine:build --all --and-load --no-confirmation
Następnie zmieniamy ustawienia w settings.yml na odpowednie :
# apps/nazwa/config/settings.yml
all:
.settings:
enabled_modules: [default, sfGuardAuth]
# ...
.actions:
login_module: sfGuardAuth
login_action: signin
# ...Po tych zabiegach powinniśmy po odświeżeniu strony zobaczyć formularz logowania :) I to jest właśnie urok symfony :)
Następnie utwórzmy jakiegoś usera do logowania:
php symfony guard:create-user abc SecrestPass
php symfony guard:promote abc
Od teraz możemy posługiwać się metodą isAuthenticated() która zwara czy jesteśmy zalogowaniu czy nie:) zatem jeżeli chcemy aby tylko zalogowani wdzieli np menu to zwyczajnie w layoucie dajemy:
// apps/nazwa/templates/layout.php <?php if ($sf_user->isAuthenticated()): ?> <div id="menu">
//cos w menu :)
</div> <?php endif ?>
Jak widać prawie nie pisząc kodu można zrobić w symfony ładnie wyglądający skrypt logowania.
Pozostało jeszcze aby zalogowani użytkownicy mogli się wylogowac:
wiec dodajmy w miejscu "cos w menu" <?php echo link_to('Logout', 'sf_guard_signout') ?>
Prawda że to proste. Jeżeli ktoś chce bardziej zainteresować tą tematyką to zapraszam do studiowania tego adresu: http://www.symfony-project.org/jobeet/1_4/Doctrine/en/13.
Brak komentarzy:
Prześlij komentarz