1 Отредактировано vedburtruba (2009-08-13 10:58:42)

Тема: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Использую sfGuard. Прописал в security.yml (пробовал и для приложения, и для модуля отдельно) credentials, однако он все равно пускает куда не надо. Авторизация работает, все включено - все равно (кеш тоже почистил default/smile)). Кредов у пользователя нет 100%.

Содержимое security.yml для приложения.

default:
  is_secure: on

contact:
  credentials: [contacts]

Для модуля:

all:
  credentials: [contacts]

В чем может быть косяк?


Ну и второй вопрос: можно ли без использования "сырых" SQL-запросов выбирать записи по условию "WHERE ... OR...", то биш с ИЛИ.

Надеюсь на помощь, заранее спасибо.

2

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

А у тебя в /fontend/lib/myUser.class.php так ?

class myUser extends sfGuardSecurityUser
{
}

По второму вопросу дай кусок кода, не понятно Пропель или Доктрина у тебя..

3

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

/fontend/lib/myUser.class.php именно такой. Авторизация пашет, без логина не пускает, но креды он не проверяет почему-то.

По второму кода пока нет, я как раз и узнаю как это написать. Использую пропел.
Тут расписаны только запросы с AND. Придется напрямую запросы писать?

4

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Попробуй такой код для понимания проблемы:

<p>Вы зарегистрированы как:
  <strong><?php echo $sf_user->getGuardUser()->username ?></strong>
</p>
<?php
$groups = array();
if ($sf_user->isSuperadmin())
{
  $groups[] = 'superadmin';
}
if (count($sf_user->getGuardUser()->groups) != 0)
foreach ($sf_user->getGuardUser()->getGroupNames() as $group)
{
  $groups[] = $group;
}
if (count($groups) == 0)
{
  $groups[] = 'не определен администратором';
}
?>
<p>Уровень доступа в системе: <b><?php echo implode(', ', $groups) ?></b></p>

<?php if (count($sf_user->getGuardUser()->getAllPermissionNames()) != 0):?>
<ul>Список прав в системе:
  <?php foreach($sf_user->getGuardUser()->getAllPermissionNames() as $perm): ?>
    <li><?php echo $perm ?></li>
  <?php endforeach; ?>
</ul>
<?php endif; ?>
is in users group? <?php echo $sf_user->hasGroup('users') ?>
has admin cred? <?php echo $sf_user->hasCredential('admin') ?>
blog create perm? <?php echo $sf_user->hasPermission('blog_post_create') ?>
blog create cred? <?php echo $sf_user->hasCredential('blog_post_create') ?>

Тут тебе конструктор критерий для пропела:
http://propel.jondh.me.uk/criteria/analyse

5

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

С критериями вроде разобрался, спасибо.

Юзеров позже посмотрю, напишу что в итоге.

Еще раз спасибо за помощь.

6 Отредактировано vedburtruba (2009-08-17 12:21:54)

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Продолжаем бороться с кредами. Вот вывод кода, приведенного выше:

Вы зарегистрированы как: Пользователь1

Уровень доступа в системе: не определен администратором

Список прав в системе:
admin
is in users group?
admin perm? 1
admin cred? 1
contacts perm?
contacts cred?

Группы я не использую.

Судя по всему симфони не выбирает список кредов, необходимых для доступа к модулю. Пользователь явно не имеет права туда заходить, но его все равно пускает. Креды прописал вроде правильно (первый пост), в файлы apps/frontend/config/security.yml и apps/frontend/modules/contact/config/security.yml.

7

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Группы я не использую.

Мне кажется группы необходимо использовать.

8

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Мне кажется группы необходимо использовать.

Мне они в проекте не особо нужны. Да и ведь не из-за них не работает?

9

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Мне они в проекте не особо нужны. Да и ведь не из-за них не работает?

Трудно сказать. В некоторых местах (например PluginsfGuardUser->getAllPermissions()) задействованы группы, в других - нет.
Просто я без групп никогда не делал и у меня не было таких проблем.

10

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Трудно сказать. В некоторых местах (например PluginsfGuardUser->getAllPermissions()) задействованы группы, в других - нет.
Просто я без групп никогда не делал и у меня не было таких проблем.

Хм, ну в принципе попробую и с группами. Просто креды/пермишны вполне доступны и работают через экшены и темплейты. Можно конечно для каждого экшена прописать проверку на права, но это не решение проблемы а кривой уход от нее. Креды как будто не прописываются из yml  файла.

11

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Можно без групп.
Группы помогают в случае если надо отмечать много прав многим пользователям.
Если тыщща юзеров и прав с десяток, то конечно лучше юзеру давать группу, и в группе рулить правами.

Труба: ты этта, в DEV режиме нажми в панели config -> globals
и смотри какие у тебя

session:
  symfony/user/sfUser/attributes: ...
  symfony/user/sfUser/authenticated: true
  symfony/user/sfUser/credentials: [admin, moderator, user]

Может у тебя просто опечатка  contact-contacts..

И еще.. может твоя сокращенная запись симфе не нравится попробуй так:

  
contact:
  is_secure: on
  credentials: [contacts]

12

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Через какое то время все заработало само, хотя я ничего не правил, а кеш чистил и до этого. о_О

Так или иначе, всем спасибо default/smile

13

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Кстати извиняй, я забыл еще про одну фишку, после перераздачи прав, необходимо или чистить куки, или делать LOGOUT

Поэтому у тебя "через время" само и заработало..

14

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

Столкнулся с похожей проблемой, перестали работать кредентиалсы, везде прописаны, все откатил потом к настройке, когда они работали...
А проблема оказалось что случайно скопировал файл security.yml в самую вышестоящую папку config, а в нем прописано is_secure: off default/smile

15

Re: sfGuard - не работают credentials (ну и до кучи вопрос по Criteria)

жестко default/smile