Ver Fonte

Merge remote-tracking branch 'igorw/latest-fosub'

Jordi Boggiano há 12 anos atrás
pai
commit
d1dbc0dda3

+ 2 - 2
app/Resources/FOSUserBundle/views/layout.html.twig

@@ -4,8 +4,8 @@
 
     {% for type, flashMessages in app.session.flashbag.all() %}
         {% for flashMessage in flashMessages %}
-            <div class="{{ type }}" style="margin-bottom: 5px;">
-                {{ flashMessage|trans({}, 'FOSUserBundle') }}
+            <div class="box clearfix {{ type }}" style="margin-bottom: 5px;">
+                <p>{{ flashMessage|trans({}, 'FOSUserBundle') }}</p>
             </div>
         {% endfor %}
     {% endfor %}

+ 4 - 1
app/config/config.yml

@@ -68,9 +68,12 @@ fos_user:
     from_email:
         address:        %mailer_from_email%
         sender_name:    %mailer_from_name%
+    registration:
+        form:
+            handler: packagist.form.handler.registration
 
 nelmio_solarium:
     adapter: ~
 
 parameters:
-    session.flashbag.class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
+    session.flashbag.class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag

+ 43 - 23
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",
@@ -26,8 +26,14 @@
         {
             "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",
@@ -38,8 +44,8 @@
         {
             "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",

+ 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);
-    }
 }

+ 27 - 0
src/Packagist/WebBundle/Form/Handler/RegistrationFormHandler.php

@@ -0,0 +1,27 @@
+<?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\Form\Handler;
+
+use FOS\UserBundle\Form\Handler\RegistrationFormHandler as BaseHandler;
+use FOS\UserBundle\Model\UserInterface;
+
+class RegistrationFormHandler extends BaseHandler
+{
+    protected function onSuccess(UserInterface $user, $confirmation)
+    {
+        $apiToken = substr($this->tokenGenerator->generateToken(), 0, 20);
+        $user->setApiToken($apiToken);
+
+        parent::onSuccess($user, $confirmation);
+    }
+}

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

@@ -23,3 +23,12 @@ services:
     packagist.package_updater:
         class: Packagist\WebBundle\Package\Updater
         arguments: [@doctrine]
+
+    packagist.form.handler.registration:
+        class: Packagist\WebBundle\Form\Handler\RegistrationFormHandler
+        parent: fos_user.registration.form.handler.default
+        scope: request
+
+    fos_user.util.user_manipulator:
+        class: Packagist\WebBundle\Util\UserManipulator
+        arguments: [@fos_user.user_manager, @fos_user.util.token_generator]

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

@@ -0,0 +1,49 @@
+<?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\TokenGeneratorInterface;
+use FOS\UserBundle\Util\UserManipulator as BaseManipulator;
+
+class UserManipulator extends BaseManipulator
+{
+    private $userManager;
+    private $tokenGenerator;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function __construct(UserManagerInterface $userManager, TokenGeneratorInterface $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;
+    }
+}