Symfony 2.3 を使用していますが、2 つのテーブルにセキュリティを追加するための適切なソリューションが見つかりません。
私にはユーザーがいて、このユーザーはアプリケーションを取得できます。彼は次のパスでアプリケーションにアクセスできます: /application/{id}
したがって、ユーザーがアプリケーションへのリンクである場合、このページを保護したいと思います。コントローラーをチェックインするために何かをしますが、これはあまりきれいではありません:
/**
*
* @param int $idApplication
* @return UserApplication
*/
public function testUserApplication($idApplication){
//get the application
$applicationRepository = $this->getDoctrine()->getRepository('PhoneApplicationBundle:Application');
$application = $applicationRepository->find($idApplication);
if($application==null){
return null;
}
$userApplicationRepository = $this->getDoctrine()->getRepository('PhoneApplicationBundle:UserApplication');
$userApplication = $userApplicationRepository->findOneBy(array(
'user' => $this->getUser(),
'application' => $application
));
return $userApplication;
}
セキュリティを使用してこれを行うことができるかどうかはわかりません。
これをチェックするサービスを作成する他のソリューションを試します
class Test
{
/** @var \Doctrine\ORM\EntityManager */
private $doctrine;
/**
* Constructor
*
* @param Doctrine $doctrine
*/
public function __construct(Doctrine $doctrine)
{
$this->doctrine = $doctrine;
}
public function userApplication($idApplication){
//get the application
$applicationRepository = $this->doctrine->getRepository('PhoneApplicationBundle:Application');
$application = $applicationRepository->find($idApplication);
if($application==null){
return null;
}
$userApplicationRepository = $this->doctrine->getRepository('PhoneApplicationBundle:UserApplication');
$userApplication = $userApplicationRepository->findOneBy(array(
'user' => $this->getUser(),
'application' => $application
));
return $userApplication;
}
}
service.yml:
parameters:
phone_application.test_user_application.class: Phone\ApplicationBundle\Service\Test
services:
phone_application.test_user_application:
class: %phone_application.test_user_application.class%
arguments: [@doctrine]
しかし、コントローラーでこれを使用する方法がよくわかりません
手伝ってくれてありがとう。