Browse Source

[latest-fosub] Extract token generation from User

Igor Wiedler 12 years ago
parent
commit
6fd4170023

+ 51 - 31
composer.lock

@@ -10,8 +10,8 @@
         {
             "package": "composer/composer",
             "version": "dev-master",
-            "source-reference": "a5f087215200ab51560f34031067aacd06cb0655",
-            "commit-date": "1341407286"
+            "source-reference": "d87b8d34935bfadbe63d5ffbd006dcf005161a55",
+            "commit-date": "1342208806"
         },
         {
             "package": "doctrine/common",
@@ -20,26 +20,32 @@
         {
             "package": "doctrine/dbal",
             "version": "2.2.x-dev",
-            "source-reference": "8cc129aa64a8de6447056bce20f0a274fe2a340b",
-            "commit-date": "1338113316"
+            "source-reference": "b961a3fce6bf220f1dca47d7d747b9074bea4730",
+            "commit-date": "1341779435"
         },
         {
             "package": "doctrine/doctrine-bundle",
             "version": "dev-master",
-            "source-reference": "1d5061d3e426feb990f2378fbcbee58f6ecadd12",
-            "commit-date": "1341222099"
+            "alias-pretty-version": "1.0.x-dev",
+            "alias-version": "1.0.9999999.9999999-dev"
+        },
+        {
+            "package": "doctrine/doctrine-bundle",
+            "version": "dev-master",
+            "source-reference": "c9ea46d1f0c48bb88bb87b44214fe44e03c0c692",
+            "commit-date": "1341405737"
         },
         {
             "package": "doctrine/orm",
             "version": "2.2.x-dev",
-            "source-reference": "5f66c65c9a8d984899903b54215d0249a45b92d6",
-            "commit-date": "1338138826"
+            "source-reference": "5d2a3bcb3b467f41ee58575764f3ba84937f76e4",
+            "commit-date": "1341676080"
         },
         {
             "package": "friendsofsymfony/user-bundle",
             "version": "dev-master",
-            "source-reference": "0363e2389055acf3619b28b5a6c401a4aa5b838b",
-            "commit-date": "1340798867"
+            "source-reference": "9f0294ebe2f13dbb41c3ac5d19eb0655680a29c6",
+            "commit-date": "1341994043"
         },
         {
             "package": "justinrainbow/json-schema",
@@ -86,26 +92,42 @@
         {
             "package": "sensio/distribution-bundle",
             "version": "dev-master",
-            "source-reference": "cf2f14fb296e4d1435a0c1382174449751c111ca",
-            "commit-date": "1341342864"
+            "source-reference": "77323c97860fc2f73d988b2020ae414faebed153",
+            "commit-date": "1342159333"
+        },
+        {
+            "package": "sensio/framework-extra-bundle",
+            "version": "dev-master",
+            "alias-pretty-version": "2.1.x-dev",
+            "alias-version": "2.1.9999999.9999999-dev"
         },
         {
             "package": "sensio/framework-extra-bundle",
             "version": "dev-master",
-            "source-reference": "4f54e5d5fb3b54fb107892684018f3704934c48d",
-            "commit-date": "1341126219"
+            "source-reference": "e9ac8f1a911ed29e30296c7f1549f53d4c94eddf"
         },
         {
             "package": "sensio/generator-bundle",
             "version": "dev-master",
-            "source-reference": "43ed45c48db18e4a0e48aec0c098f42e56e22d36",
-            "commit-date": "1340138445"
+            "alias-pretty-version": "2.1.x-dev",
+            "alias-version": "2.1.9999999.9999999-dev"
+        },
+        {
+            "package": "sensio/generator-bundle",
+            "version": "dev-master",
+            "source-reference": "c17dbddefe517e3adfcbeaa1ab7cef3e572d29c6",
+            "commit-date": "1342195488"
+        },
+        {
+            "package": "snc/redis-bundle",
+            "version": "dev-master",
+            "alias-pretty-version": "2.1.x-dev",
+            "alias-version": "2.1.9999999.9999999-dev"
         },
         {
             "package": "snc/redis-bundle",
             "version": "dev-master",
-            "source-reference": "3e7ea0b504ce64059354736619c17b9196b2d6ad",
-            "commit-date": "1340539404"
+            "source-reference": "57f7fd10b6ac6a49c80d30a437f7e37c9cc50af3"
         },
         {
             "package": "solarium/solarium",
@@ -122,8 +144,8 @@
         {
             "package": "swiftmailer/swiftmailer",
             "version": "dev-master",
-            "source-reference": "f34ff8a49dc611e8171f041b529671b3e460cfe1",
-            "commit-date": "1341391688"
+            "source-reference": "8b2aa953f87da228ba413e8fb1372e49c1374050",
+            "commit-date": "1342198037"
         },
         {
             "package": "symfony/assetic-bundle",
@@ -134,8 +156,7 @@
         {
             "package": "symfony/assetic-bundle",
             "version": "dev-master",
-            "source-reference": "8fe7b898b08103c1d6fce64c3e279a7afd61adfc",
-            "commit-date": "1340234971"
+            "source-reference": "ed933dcfa45f00b6bc6d7727007403f3ff429e5a"
         },
         {
             "package": "symfony/monolog-bundle",
@@ -146,7 +167,7 @@
         {
             "package": "symfony/monolog-bundle",
             "version": "dev-master",
-            "source-reference": "7fe7f711bb04b86ad7f45a9e11a7f8cbaf9bc1a5",
+            "source-reference": "v2.1.0-BETA2",
             "commit-date": "1341078487"
         },
         {
@@ -158,8 +179,7 @@
         {
             "package": "symfony/swiftmailer-bundle",
             "version": "dev-master",
-            "source-reference": "66e29c6b1db11e434f773b2902d58349577664ac",
-            "commit-date": "1341344279"
+            "source-reference": "v2.1.0-BETA2"
         },
         {
             "package": "symfony/symfony",
@@ -170,8 +190,8 @@
         {
             "package": "symfony/symfony",
             "version": "dev-master",
-            "source-reference": "41da9c7068491feb0391df364eebeea1e1d51d33",
-            "commit-date": "1341407720"
+            "source-reference": "b0d7d9e40623da9f7d7c1982fc653c3d5edb0f34",
+            "commit-date": "1342207877"
         },
         {
             "package": "twig/extensions",
@@ -182,14 +202,14 @@
         {
             "package": "twig/twig",
             "version": "dev-master",
-            "alias-pretty-version": "1.8.x-dev",
-            "alias-version": "1.8.9999999.9999999-dev"
+            "alias-pretty-version": "1.9.x-dev",
+            "alias-version": "1.9.9999999.9999999-dev"
         },
         {
             "package": "twig/twig",
             "version": "dev-master",
-            "source-reference": "73da773aaad0f97f2e967ec8241b8adf7b1e03d2",
-            "commit-date": "1340890758"
+            "source-reference": "3f9f587ba72f9da84266b93ee1d0fc025b6b010f",
+            "commit-date": "1342197076"
         },
         {
             "package": "white-october/pagerfanta-bundle",

+ 4 - 1
src/Packagist/WebBundle/Command/GenerateTokensCommand.php

@@ -39,9 +39,12 @@ class GenerateTokensCommand extends ContainerAwareCommand
     {
         $doctrine = $this->getContainer()->get('doctrine');
         $userRepo = $doctrine->getRepository('PackagistWebBundle:User');
+        $tokenGenerator = $this->getContainer()->get('fos_user.util.token_generator');
+
         $users = $userRepo->findUsersMissingApiToken();
         foreach ($users as $user) {
-            $user->regenerateApiToken();
+            $apiToken = substr($tokenGenerator->generateToken(), 0, 20);
+            $user->setApiToken($apiToken);
         }
         $doctrine->getEntityManager()->flush();
     }

+ 2 - 11
src/Packagist/WebBundle/Entity/User.php

@@ -55,7 +55,6 @@ class User extends BaseUser
         $this->packages = new ArrayCollection();
         $this->authors = new ArrayCollection();
         $this->createdAt = new \DateTime();
-        $this->regenerateApiToken();
         parent::__construct();
     }
 
@@ -126,7 +125,7 @@ class User extends BaseUser
     {
         return $this->createdAt;
     }
-    
+
     /**
      * Set apiToken
      *
@@ -139,19 +138,11 @@ class User extends BaseUser
 
     /**
      * Get apiToken
-     * 
+     *
      * @return string
      */
     public function getApiToken()
     {
         return $this->apiToken;
     }
-
-    /**
-     * Regenerate the apiToken
-     */
-    public function regenerateApiToken()
-    {
-        $this->apiToken = substr($this->generateToken(), 0, 20);
-    }
 }

+ 4 - 0
src/Packagist/WebBundle/Resources/config/services.yml

@@ -23,3 +23,7 @@ services:
     packagist.package_updater:
         class: Packagist\WebBundle\Package\Updater
         arguments: [@doctrine]
+
+    fos_user.util.user_manipulator:
+        class: Packagist\WebBundle\Util\UserManipulator
+        arguments: [@fos_user.user_manager, @fos_user.util.token_generator]

+ 48 - 0
src/Packagist/WebBundle/Util/UserManipulator.php

@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of Packagist.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *     Nils Adermann <naderman@naderman.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Packagist\WebBundle\Util;
+
+use FOS\UserBundle\Model\UserManagerInterface;
+use FOS\UserBundle\Util\UserManipulator as BaseManipulator;
+
+class UserManipulator extends BaseManipulator
+{
+    private $userManager;
+    private $tokenGenerator;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function __construct(UserManagerInterface $userManager, $tokenGenerator)
+    {
+        $this->userManager = $userManager;
+        $this->tokenGenerator = $tokenGenerator;
+
+        parent::__construct($userManager);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function create($username, $password, $email, $active, $superadmin)
+    {
+        $user = parent::create($username, $password, $email, $active, $superadmin);
+
+        $apiToken = substr($this->tokenGenerator->generateToken(), 0, 20);
+        $user->setApiToken($apiToken);
+
+        $this->userManager->updateUser($user);
+
+        return $user;
+    }
+}