Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть два бандла: Member и Admin, оба зарегистрированы в /application/bundles.php
return array(
'member' => array(
'location' => 'member',
'handles' => 'member',
'autoloads' => array(
'directories' => array(
'(:bundle)/models',
),
),
),
'admin' => array(
'location' => 'admin',
'handles' => 'admin',
'autoloads' => array(
'directories' => array(
'(:bundle)/models',
),
),
),
);
Как реализовать раздельный Auth? Ибо оба эти бандла ездят по одной сессии. Технически могу на уровне флажка админа в табличке users и с проверкой на уровне фильтра, но очень не хочется. Хотелось бы совершенно разные login forms и Auth с ползанием в разные таблицы юзеров и админов. И соответственно независимые сессии.
Не в сети
Если ты используешь драйвер eloquent, то именно флагом в таблице это и делается. Когда передаёшь в PHPAuth::attempt()
массив с именем и паролем можешь добавить туда любые другие поля, которые будут проверятся как WHERE:
// auth/drivers/eloquent.php
public function attempt($arguments = array()) {
...
foreach(array_except($arguments, array('username', 'password', 'remember')) as $column => $val) {
$query->where($column, '=', $val);
}
Не в сети
Не в сети
www/bundles/admin/models/adminuser.php
<?
class AdminUser extends Eloquent {
public static $timestamps = true;
public static $table = 'users';// вот здесь можно назначить другую таблицу
public function hello() {
return AdminUser::take(1)->get();
}
}
<?
Autoloader::map(array(
'AdminUser' => path('bundle').'admin/models/adminuser.php',
));
Изменено oleg578 (06.11.2012 17:54:28)
Не в сети
- А возможно ли разделить таблицы и соответственно использовать разные версии Auth?
Если не обязательно иметь доступ к авторизации и users, и admins, то можно наследовать драйвер:
class AdminAuthDriver extends Laravel\Auth\Drivers\Eloquent {
protected function model() {
return new AdminUser;
}
}
В starts.php или в фильтре делать PHPConfig::set('auth.driver', ...)
. По умолчанию eloquent берёт модель из настройки auth.model.
Не в сети
Да, только наследовать не сам eloquent, а auth/drivers/driver.php - там всего три функции написать. После чего подсунуть его классу Auth функцией Auth::extend. И этому драйверу указать уже свою модель. Можно, конечно, наверное и eloquent, только, думаю, наследовать driver будет идеологически вернее.
Не в сети
Не в сети
Страницы 1