Symfony sfDoctrineGuardPlugin пользовательский запрос на вход - PullRequest
3 голосов
/ 19 января 2011

Я использую symfony sfDoctrineGuardPlugin для управления аутентификацией как для внешних, так и для внутренних пользователей.Это нормально, за исключением того, что я не хочу, чтобы внешние пользователи могли входить в бэкэнд-приложение.Я могу настроить учетные данные, но они проверяются после проверки подлинности пользователя.Я хочу иметь sigin в форме, которая никогда не будет проверяться для пользователя, который не входит в бэкэнд-группу.Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 20 января 2011

Я думаю, что нашел лучшее решение. Плагин sfDoctrineGuard имеет собственный пост-валидатор, который проверяет наличие необязательного вызова для извлечения пользователя.

//app.yml
all:
  sf_guard_plugin:
    retrieve_by_username_callable: sfGuardUser::getForBackend

//sfGuardUser.class.php

  public static function getForBackend($username)
  {
    $query = Doctrine::getTable('sfGuardUser')->createQuery('u')
      ->leftJoin('u.Groups g')
      ->leftJoin('g.Permissions p')
      ->where('u.username = ? OR u.email_address = ?', array($username, $username))
      ->addWhere('u.is_active = ?', true)
      ->addWhere('p.name = ?', 'backend');

    return $query->fetchOne();
  }
0 голосов
/ 03 февраля 2012

Я думаю, вам просто нужно добавить:

  storage:
    class: sfSessionStorage
    param:
      session_name: sf_backend

в конце вашего backend/config/factories.yml По умолчанию Symfony разделяет сеансовые куки, с помощью этого решения Symfony разделяет эти куки.

0 голосов
/ 19 января 2011

Вот одна из идей: вы можете попробовать создать собственный пост-валидатор для формы входа.Вот результат Google:

http://www.symfony -project.org / blog / 2008/09/05 / вызовите эксперта, как внедрить условную валидатор

В этом валидаторе вы можете проверить, принадлежит ли пользователь к рассматриваемой группе, и затем выдать ошибку соответственно.Пользователь не будет аутентифицирован.

...