--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/bundles/FOS/UserBundle/Util/UserManipulator.php Fri Sep 30 11:24:53 2011 +0200
@@ -0,0 +1,185 @@
+<?php
+
+/*
+ * This file is part of the FOSUserBundle package.
+ *
+ * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace FOS\UserBundle\Util;
+
+use FOS\UserBundle\Model\UserManagerInterface;
+
+/**
+ * Executes some manipulations on the users
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ * @author Luis Cordova <cordoval@gmail.com>
+ */
+class UserManipulator
+{
+ /**
+ * User manager
+ *
+ * @var UserManagerInterface
+ */
+ private $userManager;
+
+ public function __construct(UserManagerInterface $userManager)
+ {
+ $this->userManager = $userManager;
+ }
+
+ /**
+ * Creates a user and returns it.
+ *
+ * @param string $username
+ * @param string $password
+ * @param string $email
+ * @param Boolean $active
+ * @param Boolean $superadmin
+ * @return \FOS\UserBundle\Model\UserInterface
+ */
+ public function create($username, $password, $email, $active, $superadmin)
+ {
+ $user = $this->userManager->createUser();
+ $user->setUsername($username);
+ $user->setEmail($email);
+ $user->setPlainPassword($password);
+ $user->setEnabled((Boolean)$active);
+ $user->setSuperAdmin((Boolean)$superadmin);
+ $this->userManager->updateUser($user);
+
+ return $user;
+ }
+
+ /**
+ * Activates the given user.
+ *
+ * @param string $username
+ */
+ public function activate($username)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ $user->setEnabled(true);
+ $this->userManager->updateUser($user);
+ }
+
+ /**
+ * Deactivates the given user.
+ *
+ * @param string $username
+ */
+ public function deactivate($username)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ $user->setEnabled(false);
+ $this->userManager->updateUser($user);
+ }
+
+ /**
+ * Changes the password for the given user.
+ *
+ * @param string $username
+ * @param string $password
+ */
+ public function changePassword($username, $password)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ $user->setPlainPassword($password);
+ $this->userManager->updateUser($user);
+ }
+
+ /**
+ * Promotes the given user.
+ *
+ * @param string $username
+ */
+ public function promote($username)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ $user->setSuperAdmin(true);
+ $this->userManager->updateUser($user);
+ }
+
+ /**
+ * Demotes the given user.
+ *
+ * @param string $username
+ */
+ public function demote($username)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ $user->setSuperAdmin(false);
+ $this->userManager->updateUser($user);
+ }
+
+ /**
+ * Adds role to the given user.
+ *
+ * @param string $username
+ * @param string $role
+ * @return Boolean true if role was added, false if user already had the role
+ */
+ public function addRole($username, $role)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ if ($user->hasRole($role)) {
+ return false;
+ }
+ $user->addRole($role);
+ $this->userManager->updateUser($user);
+
+ return true;
+ }
+ /**
+ * Removes role from the given user.
+ *
+ * @param string $username
+ * @param string $role
+ * @return Boolean true if role was removed, false if user didn't have the role
+ */
+ public function removeRole($username, $role)
+ {
+ $user = $this->userManager->findUserByUsername($username);
+
+ if (!$user) {
+ throw new \InvalidArgumentException(sprintf('User identified by "%s" username does not exist.', $username));
+ }
+ if (!$user->hasRole($role)) {
+ return false;
+ }
+ $user->removeRole($role);
+ $this->userManager->updateUser($user);
+
+ return true;
+ }
+
+}