diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Util/UserManipulator.php --- /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 @@ + + * + * 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 + * @author Luis Cordova + */ +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; + } + +}