Здравствуйте. Прошу помочь в некотором вопросе.
Как я делаю авторизацию. По логике вещей, что бы не проверять, а залогинен ли пользователь или нет в каждом контроллере, я сделал базовый контроллер Basic.php. Вот его код:
Код:
abstract class Basic extends Controller_Template {
public $template = 'basicView';
public function before()
{
parent::before();
$auth = Auth::instance();
if(isset($_POST['enter'])):
$login = Arr::get($_POST, 'login', '');
$password = Arr::get($_POST, 'password', '');
$auth->login($login, $password)
endif;
if($auth->logged_in() == 0)
{
$this->template->navPanel = View::factory('navigation/guestNavPanel');
$this->template->userPanel = View::factory('authPanel');
}
else
{
$this->template->userPanel = View::factory('userPanel');
}
}
} // End Welcome
Кусок кода:
Код:
if($auth->logged_in() == 0)
{
$this->template->navPanel = View::factory('navigation/guestNavPanel');
$this->template->userPanel = View::factory('authPanel');
}
else
{
$this->template->userPanel = View::factory('userPanel');
}
Проверяет, залогинен ли пользователь и выводит соответствующие панели. Если пользователь залогинен, то вместо формы для ввода логина и пароля ему выводиться мини-версия его личного кабинета, а так же навигационная панель с большими возможностями чем у незалогиненого пользователя. Все это я делаю сразу, в базовом контроллере, что бы другие контроллеры отвечали только за вывод динамически меняющейся области шаблона.
Вот форма авторизации authPanel.php:
Код:
<h3>Вход в систему</h3>
<form method="POST" action="">
<table>
<tr>
<td>Логин:</td>
<td><input type="text" name="login"></td>
</tr>
<tr>
<td>Логин:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Вход" name="enter" /></td>
</tr>
</table>
</form>
Но почему-то не хочет логиниться и все тут. Я делал авторизацию по урокам Морковина, но у него использовался отдельный контроллер и вид для формы авторизации. Я же хочу, что бы форма входа выводилась и могла отправляться со всех страниц сайта, что бы пользователь без всяких лишних редиректов после ввода логина и пароля оставался на той же странице на которой он был до входа, но вместо формы вход ему отображалась бы что-то вроде "Вы работаете как ****, ссылка ни личный кабинет, кнопка выход, кол-во личных сообщений" и т.д.
После нажатия кнопки "Вход" тупо ничего не происходит. Страница перезагружается, но условие
Код:
if($auth->logged_in() == 0)
не выполняется и пользователю вновь выводиться форма входа.
Хочу отметить, что и в БД никаких изменений не происходит, как было у тестового пользователя logins = 0, так и сталось.
Что я делаю не так?