/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function saveTokenAction(Request $request) { $apiToken = new ApiToken(); $apiToken->setUser($this->getUser()); $formBuilder = $this->createFormBuilder($apiToken, array('action' => $this->generateUrl('api_key_create'), 'data_class' => 'CSBill\\UserBundle\\Entity\\ApiToken')); $formBuilder->add('name'); $form = $formBuilder->getForm(); $form->handleRequest($request); $response = array(); if ($form->isValid()) { $factory = new Factory(); $generator = $factory->getMediumStrengthGenerator(); $token = $generator->generateString(64, Generator::CHAR_ALNUM); $apiToken->setToken($token); $this->save($apiToken); $response['status'] = 0; $response['token'] = array('token' => $apiToken->getToken(), 'name' => $apiToken->getName(), 'id' => $apiToken->getId()); return $this->json($response); } else { $response['status'] = 1; } $content = $this->renderView('CSBillUserBundle:Api:create.html.twig', array('form' => $form->createView())); $response['content'] = $content; return $this->json($response); }
/** * @param User $user * @param string $name * * @return ApiToken */ public function create(User $user, $name) { $apiToken = new ApiToken(); $apiToken->setToken($this->generateToken()); $apiToken->setUser($user); $apiToken->setName($name); $entityManager = $this->registry->getManager(); $entityManager->persist($apiToken); $entityManager->flush(); return $apiToken; }
public function testGetOrCreate() { $registry = M::mock(ManagerRegistry::class); $user = new User(); $token1 = new ApiToken(); $token1->setName('token1'); $token2 = new ApiToken(); $token2->setName('token2'); $user->setApiTokens([$token1, $token2]); $manager = M::mock(ObjectManager::class); $registry->shouldReceive('getManager')->withNoArgs()->andReturn($manager); $manager->shouldReceive('persist')->withAnyArgs()->andReturn(); $manager->shouldReceive('flush')->withNoArgs(); $tm = new ApiTokenManager($registry); $token = $tm->getOrCreate($user, 'token3'); $this->assertInstanceOf(ApiToken::class, $token); $this->assertNotSame($token1, $token); $this->assertNotSame($token2, $token); $this->assertSame($user, $token->getUser()); $this->assertSame('token3', $token->getName()); }
/** * @param Request $request * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function saveTokenAction(Request $request) { $apiToken = new ApiToken(); $apiToken->setUser($this->getUser()); $formBuilder = $this->createFormBuilder($apiToken, ['action' => $this->generateUrl('api_key_create'), 'data_class' => 'CSBill\\UserBundle\\Entity\\ApiToken']); $formBuilder->add('name'); $form = $formBuilder->getForm(); $form->handleRequest($request); $response = []; if ($request->isMethod('POST')) { if ($form->isValid()) { $apiToken->setToken($this->get('api.token.manager')->generateToken()); $this->save($apiToken); $response['status'] = 'success'; $response['token'] = ['token' => $apiToken->getToken(), 'name' => $apiToken->getName(), 'id' => $apiToken->getId()]; return $this->json($response); } else { $response['status'] = 'failure'; } } $content = $this->renderView('CSBillUserBundle:Api:create.html.twig', ['form' => $form->createView()]); $response['content'] = $content; return $this->json($response); }