Pytanie od nowicjusza w Cake...
Aby użytkownik mógł edytować rekord musi się zalogować.
Wykorzystuję Auth i standardową funkcję login (w kontrolerze UsersController).
function login(){ }
Po wpisaniu loginu i hasła aplikacja zachowuje się tak jakby udało się zalogować. Przechodzi do strony głównej, ale...
Mam też zrobiony app_controller w folderze głównym i tam sprawdzam funkcją czy użytkownik jest zalogowany (uprawnienia nie mają znaczenia, chodzi o to by o ogóle był zalogowany).
function _loggedIn(){ $logged_in = false; if($this->Auth->user()){ $logged_in=true; } return $logged_in; }
I wrzucam wynik funkcji do zmiennej $logged_in:
... function beforeFilter() { $this->set('logged_in', $this->_loggedIn()); }
Oczywiście we wszystkich kontrolerach mam funkcję beforeFiler() o treści parent::beforeFilter().
Na stronie głównej index.ctp sprawdzam status zmiennej $logged_in i wyświetlam lub nie link do edycji rekordu.
if($logged_in){ }
Rzecz w tym, że zmienne sesyjne są puste i żadne "Edytuj" nie chce się wyświetlić.
Co ciekawe, gdy pisałem aplikację to działała - ale tylko na moim kompie (sprawdzałem na IE i Firefox).
Od wczoraj przestała działać i u mnie.
CakePHP 1.3.7, serwer IIS bez mod-rewrite, CGI/FastCGI.
Dodatkowo musiałem odkomentować i dopisać do jednej linijki kodu w pliku config/core.php
Configure::write('App.baseUrl', env('SCRIPT_NAME').'?url=');
Bez tego "url" w ogóle linki nie działały. Ale teraz mam mało przyjazne dla oka linki np. .../app/index.php?url=/rounds
Ale to zupełnie inna historia ;-)
Sprawdziłem czy aplikacja działa na innym serwerze (Apache) i jest ok.
Co zatem jest nie tak w tym wypadku?