in Профессиональное

Ошибка в настройке sfDoctrineGuard – remember_me фильтр

Давно не работал sfGuard, и вот возникла такая необходимость. Поскольку используется Doctrine, поставил sfDoctrineGuard. Пробежался по мануалу, настроил myUser, доступные модули, пересобрал модель. Все как сказано в документации. Однако, после подключения фильтра remember_me, начались чудеса. Фронтэнд начал падать с ошибкой

500 | Internal Server Error | sfException
Call to undefined method myUser::isAnonymous

Метод в наличии есть, myUser наследуется от sfGuardSecurityUser. Все на месте. И тем не менее.

Ларчик конечно открывался довольно просто:

sfContext::getUser возвращает юзера, основываясь на конфигурации производящих классов (factories.yml). При обработке в действии, видимо получается корректный инстанс пользователя, при работе же из фильтра, возвращался дефолтный sfUser.

Исправляется это добавлением конфигурации фактории пользователя:

#в apps/frontend/modules/config/factories.yml
all:
#...
  user:
    class:             sfGuardSecurityUser
    param:
      timeout:         1800
      logging:         %SF_LOGGING_ENABLED%
      use_flash:       true
      default_culture: %SF_DEFAULT_CULTURE%

Не забываем очистить кэш.

p.s. Странно что этот нюанс не нашел отражения в документации по установке и настройке плагина.

Write a Comment

Comment

*