예제 #1
0
 /**
  * @Route("/", name="homepage")
  */
 public function indexAction(Request $request)
 {
     $user = new User();
     $alert = null;
     $form = $this->createFormBuilder($user)->add('username', TextType::class)->add('password', PasswordType::class)->add('login', SubmitType::class, array('label' => 'Login'))->add('create', SubmitType::class, array('label' => 'Create'))->getForm();
     $form->handleRequest($request);
     $session = new Session();
     $cookie_token = $session->get('package_user_token');
     if ($form->isSubmitted() && $form->isValid() || $cookie_token) {
         // ... perform some action, such as saving the task to the database
         $sm = $this->getDoctrine();
         $user = $sm->getRepository('AppBundle:User')->findOneByUsername($user->getUsername());
         if ($form->get('create')->isClicked() == 'create') {
             if ($user == null) {
                 $user = new User();
                 $user->setUsername($form->get('username')->getData());
                 $passw = $form->get('password')->getData();
                 $user->setPassword($passw);
                 $date = new \DateTime();
                 $token = $passw + $date->getTimestamp();
                 $user->setToken($token);
                 $session->set('package_user_token', $token);
                 $sm->getManager()->persist($user);
                 $sm->getManager()->flush();
                 return $this->redirect($this->generateUrl('packages_index'));
             } else {
                 $alert = "This username already exists.";
             }
         } else {
             if ($form->get('login')->isClicked() == 'login' || $cookie_token) {
                 if ($cookie_token) {
                     $user = $sm->getRepository('AppBundle:User')->findOneByToken($cookie_token);
                 }
                 if ($user != null) {
                     $passwForm = md5($form->get('password')->getData());
                     if (strcmp($passwForm, $user->getPassword()) === 0) {
                         $token = $user->getToken();
                         $session->set('package_user_token', $token);
                         return $this->redirect($this->generateUrl('packages_index'));
                     } else {
                         $alert = "Password doesn't match.";
                     }
                 } else {
                     $alert = "This username doesn't exists.";
                 }
             }
         }
     }
     return $this->render('default/index.html.twig', array('form' => $form->createView(), 'alert' => $alert));
 }
예제 #2
0
 public function createAuthTokenFromCode(AuthCodeInterface $authCode)
 {
     $code = $this->base64url_encode($this->random_string(17));
     $oauth = $this->container->getParameter("rest.config")["authentication"]["oauth"];
     $parameter = $oauth["persistence"];
     $auth_token_entity = $parameter["auth_token_entity"];
     /** @var AuthTokenInterface $entity */
     $entity = new $auth_token_entity();
     $entity->setAuthToken($code);
     $entity->setScopes($authCode->getScopes());
     $entity->setConsumer($authCode->getConsumer());
     $entity->setUser($authCode->getUser());
     $dt = new \DateTime();
     $entity->setValidTill($dt->getTimestamp() + $oauth["token_lifetime"]);
     $manager = $this->getDoctrine()->getManager();
     $manager->persist($entity);
     $manager->remove($authCode);
     $manager->flush();
     return $entity;
 }
예제 #3
0
 public function onKernelRequest(GetResponseEvent $event)
 {
     if ($event->isMasterRequest()) {
         $request = $event->getRequest();
         $routePath = $request->getRequestUri();
         if (strpos($routePath, 'api')) {
             $userId = $request->query->get('resources')['id'];
             if ($userId) {
                 $user = $this->em->getRepository('UserBundle:User')->findOneById($userId);
                 $lastUse = new Online();
                 $lastUse = $this->em->createQueryBuilder()->select('u')->from('AppBundle:Online', 'u')->orderBy('u.time', 'DESC')->where('u.user = :userId')->setParameter('userId', $userId)->setMaxResults(1)->getQuery()->getOneOrNullResult();
                 $date = new \DateTime();
                 $now = new \DateTime();
                 $date = $lastUse->getTime();
                 $diff = $now->getTimestamp() - $date->getTimestamp();
                 $now = (string) $now->format('Y-m-d');
                 $date = (string) $date->format('Y-m-d');
                 if ($now == $date) {
                     $todayUse = $lastUse->getTodayUse();
                     if ($diff > 3600) {
                         $diff = 0;
                     }
                     $todayUse = $todayUse + $diff;
                     $lastUse->setUser($user);
                     $lastUse->setTime(new \DateTime());
                     $lastUse->setTodayUse($todayUse);
                     $this->em->persist($lastUse);
                     $this->em->flush();
                 } else {
                     $online = new Online();
                     $online->setUser($user);
                     $online->setTime(new \DateTime());
                     $online->setTodayUse('0');
                     $this->em->persist($online);
                     $this->em->flush();
                 }
             }
         }
     }
 }
예제 #4
0
 /**
  * @Route("/removePackage/{package_id}")
  */
 public function removePackageAction($package_id)
 {
     $session = new Session();
     $cookie_token = $session->get('package_user_token');
     $sm = $this->getDoctrine()->getManager();
     $user = $sm->getRepository('AppBundle:User')->findOneByToken($cookie_token);
     $package = $user->getPackageById($package_id);
     if ($package != null) {
         $date = new \DateTime();
         $package->setDateRecieved($date->getTimestamp());
         $sm->remove($package);
         $sm->flush();
     }
     return $this->redirect($this->generateUrl('packages_index'));
 }