2017-12-23 23 views
0

こんにちは私はAPI Platformを使用しています。 symfonyに基づくAPIフレームワーク。APIプラットフォーム - エンティティなしで新しいRessourceを作成する

私はエンティティを作成し、@ApiResourceアノテーションで公開しています。そのため、CRUDのAPIドキュメントに表示されています。

私はswagger api docにカスタムコントローラを追加したいと思います。たとえば、私の認証コントローラ。

どうすればいいですか?

マイTokenController:

class TokenController extends Controller 
{ 
    /** 
    * @Route(path="/auth", name="auth") 
    * 
    * @param Request $request 
    * @return JsonResponse 
    * @throws \Lexik\Bundle\JWTAuthenticationBundle\Exception\JWTEncodeFailureException 
    */ 
    public function tokenAction(Request $request) 
    { 
     $em = $this->getDoctrine()->getManager(); 
     $user = $em->getRepository(User::class)->findOneBy(array(
      'username' => $request->getUser(), 
     )); 

     if(!$user){ 
      throw $this->createNotFoundException('No user'); 
     } 

     $isValid = $this->get('security.password_encoder')->isPasswordValid($user, $request->getPassword()); 

     if(!$isValid){ 
      throw new BadCredentialsException(); 
     } 

     $token = $this->get('lexik_jwt_authentication.encoder')->encode(array(
      'id' => $user->getId(), 
      'username' => $user->getUsername(), 
      'roles' => $user->getRoles(), 
     )); 

     return new JsonResponse(array(
      'token' => $token 
     )); 
    } 
} 

答えて

関連する問題