доступ к учетным данным / разрешениям пользователя - PullRequest
1 голос
/ 22 ноября 2011

Есть ли простой способ получить учетные данные / разрешение для конкретного пользователя?

Я видел метод hasCredential(), но я хотел бы динамически проверить любого пользователя, а не только текущего пользователя.

Я знаю, что могу использовать sfContext::getInstance()->getUser(); для получения текущего объекта пользователя, но есть ли способ загрузить любого пользователя и получить его / ее учетные данные?

Спасибо

Ответы [ 3 ]

0 голосов
/ 22 ноября 2011

Это зависит от используемого вами магазина.В Symfony текущий пользователь (предоставленный с sfContext::getInstance()->getUser()) является скорее абстракцией сеанса.

Таким образом, наиболее используемый плагин для аутентификации sfDoctrineGuard имеет контроллеры (sfGuardAuth), которые обрабатывают такие вещи, как форма входаи, как только он будет выполнен успешно, он заполнит sfUser соответственно.

Итак, если вы хотите проверить разрешения пользователя, вам придется проверить базовое хранилище.Если вы используете sfDoctrineGuard, вы можете получить модель пользователя через sfGuardUserTable::getInstance()->find(...).На sfGuardUser вы можете вызвать функцию hasPermission($name) для проверки.

0 голосов
/ 22 ноября 2011

если вы используете sfGuardPlugin, у вас есть таблицы sf_guard_user, sf_guard_permission и sf_guard_group в вашей базе данных.Таким образом, вы можете запросить эти таблицы, чтобы получить разрешение для конкретного пользователя, который делает что-то вроде:

$c = new Criteria();
$c->add('username',$specificName);

$userPeer = new sfGuardUserPeer();
$user = $userPeer->doSelect($c);

$credentials = $user->getPermissions();

, поэтому в $credentials у вас будет массив всех разрешений (разрешения - это учетные данные в sfGuardPlugin) выбранного пользователя.

Удачи

0 голосов
/ 22 ноября 2011

Если вы используете sfGuardPlugin или sfDoctrineGuardPlugin, вы можете получить все разрешения пользователя, вызвав getAllPermissions() внутри действий с:

$this->getUser()->getGuardUser()->getAllPermissions();

или внутри моделей с:

sfContext::getInstance()->getUser()->getGuardUser()->getAllPermissions();

в любом случаеВы должны позвонить getGuardUser.

...