私は2.2 プロジェクトでFOSUserBundle
andPropel
を使用しています。クラスを拡張して、新しいメソッドを次のように追加Symfony
しようとしています。User
namespace Acme\UserBundle\Model;
use FOS\UserBundle\Propel\User as BaseUser;
class User extends BaseUser
{
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
public function hasPermission($topic) {
// TODO check if $topic has permission
return TRUE;
}
}
問題は、コントローラーを呼び出すときに$this->getUser()
返されるオブジェクトのクラスが であるFOS\UserBundle\Propel\User
ため、hasPermission()
未定義であることです。
カスタムクラスのコンストラクターで例外を投げてみたところ、新規ユーザー登録時に使用されているようでした。しかし、私はそれがとして保存されていないと思いAcme\UserBundle\Model\User
ます。
別のプロジェクトでこれを試しDoctrine
たところ、呼び出し時に正しいクラスが返されました$this->getUser()
。私は何か間違ったことをしていますか?Propel で動作させるにはどうすればよいですか?
config.yml:
fos_user:
db_driver: propel
firewall_name: main
user_class: Acme\UserBundle\Model\User
security.yml:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }