partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

DefaultController.php (2124B)


      1 <?php
      2 
      3 namespace PartKeepr\AuthBundle\Controller;
      4 
      5 use Doctrine\ORM\EntityRepository;
      6 use FOS\RestBundle\Controller\Annotations\RequestParam;
      7 use FOS\RestBundle\Controller\Annotations\View;
      8 use FOS\RestBundle\Controller\FOSRestController;
      9 use FOS\RestBundle\Request\ParamFetcher;
     10 use PartKeepr\AuthBundle\Entity\FOSUser;
     11 use PartKeepr\AuthBundle\Entity\User;
     12 use PartKeepr\AuthBundle\Validator\Constraints\Username;
     13 use Sensio\Bundle\FrameworkExtraBundle\Configuration as Routing;
     14 use Symfony\Component\HttpFoundation\Request;
     15 use Symfony\Component\HttpFoundation\Response;
     16 
     17 class DefaultController extends FOSRestController
     18 {
     19     /**
     20      * Retrieves the salt for a given user.
     21      *
     22      * @Routing\Route("/api/users/getSalt", defaults={"method" = "post","_format" = "json"})
     23      * @Routing\Method({"POST"})
     24      * @RequestParam(name="username", strict=true, description="The username, 3-50 characters. Allowed characters: a-z, A-Z, 0-9, an underscore (_), a backslash (\), a slash (/), a dot (.) or a dash (-)", requirements=@Username, allowBlank=false)
     25      * @View()
     26      *
     27      * @param ParamFetcher $paramFetcher
     28      *
     29      * @return string The salt
     30      */
     31     public function getSaltAction(ParamFetcher $paramFetcher)
     32     {
     33         $entityManager = $this->getDoctrine()->getManager();
     34 
     35         /**
     36          * @var EntityRepository
     37          */
     38         $repository = $entityManager->getRepository(
     39             'PartKeepr\AuthBundle\Entity\FOSUser'
     40         );
     41 
     42         /**
     43          * @var FOSUser
     44          */
     45         $user = $repository->findOneBy(['username' => $paramFetcher->get('username')]);
     46 
     47         if ($user !== null) {
     48             return $user->getSalt();
     49         } else {
     50             return false;
     51         }
     52     }
     53 
     54     /**
     55      * Logs out the user.
     56      *
     57      * @Routing\Route("/api/users/logout", defaults={"method" = "GET","_format" = "json"})
     58      *
     59      * @param Request $request
     60      */
     61     public function logoutAction(Request $request)
     62     {
     63         $this->get('security.token_storage')->setToken(null);
     64         $request->getSession()->invalidate();
     65 
     66         return new Response('', 200);
     67     }
     68 }