예제 #1
0
파일: UserAdd.php 프로젝트: ClemsB/bolt
 /**
  * @see \Symfony\Component\Console\Command\Command::execute()
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $username = $input->getArgument('username');
     $password = $input->getArgument('password');
     $email = $input->getArgument('email');
     $displayname = $input->getArgument('displayname');
     $role = $input->getArgument('role');
     $data = ['username' => $username, 'password' => $password, 'email' => $email, 'displayname' => $displayname, 'roles' => [$role]];
     $user = new Entity\Users($data);
     $valid = true;
     if (!$this->app['users']->checkAvailability('username', $user->getUsername())) {
         $valid = false;
         $output->writeln("<error>Error creating user: username {$user->getUsername()} already exists</error>");
     }
     if (!$this->app['users']->checkAvailability('email', $user->getEmail())) {
         $valid = false;
         $output->writeln("<error>Error creating user: email {$user->getEmail()} exists</error>");
     }
     if (!$this->app['users']->checkAvailability('displayname', $user->getDisplayname())) {
         $valid = false;
         $output->writeln("<error>Error creating user: display name {$user->getDisplayname()} already exists</error>");
     }
     if ($valid) {
         $res = $this->app['users']->saveUser($user);
         if ($res) {
             $this->auditLog(__CLASS__, "User created: {$user['username']}");
             $output->writeln("<info>Successfully created user: {$user['username']}</info>");
         } else {
             $output->writeln("<error>Error creating user: {$user['username']}</error>");
         }
     }
 }
예제 #2
0
파일: UserAdd.php 프로젝트: somekoala/bolt
 /**
  * @see \Symfony\Component\Console\Command\Command::execute()
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /** @var \Bolt\Storage\Repository\UsersRepository $repo */
     $repo = $this->app['storage']->getRepository('Bolt\\Storage\\Entity\\Users');
     $user = new Entity\Users(['username' => $input->getArgument('username'), 'password' => $input->getArgument('password'), 'email' => $input->getArgument('email'), 'displayname' => $input->getArgument('displayname'), 'roles' => (array) $input->getArgument('role')]);
     $message = [];
     $valid = true;
     if ($repo->getUser($user->getEmail())) {
         $valid = false;
         $message[] = "<error>    * Email address '{$user->getEmail()}' already exists</error>";
     }
     if ($repo->getUser($user->getUsername())) {
         $valid = false;
         $message[] = "<error>    * User name '{$user->getUsername()}' already exists</error>";
     }
     if ($valid === false) {
         $message[] = "<error>Error creating user:</error>";
         $output->write(array_reverse($message), true);
         return;
     }
     try {
         // Boot all service providers manually as, we're not handling a request
         $this->app->boot();
         $this->app['storage']->getRepository('Bolt\\Storage\\Entity\\Users')->save($user);
         $this->auditLog(__CLASS__, "User created: {$user->getUsername()}");
         $output->writeln("<info>Successfully created user: {$user->getUsername()}</info>");
     } catch (\Exception $e) {
         $output->writeln("<error>Error creating user: {$user->getUsername()}</error>");
     }
 }
예제 #3
0
파일: Users.php 프로젝트: somekoala/bolt
 /**
  * Save changes to a user to the database. (re)hashing the password, if needed.
  *
  * @param Entity\Users|array $user
  *
  * @return integer The number of affected rows.
  */
 public function saveUser($user)
 {
     if (is_array($user)) {
         $user = new Entity\Users($user);
     }
     // Make sure the username is slug-like
     $user->setUsername($this->app['slugify']->slugify($user->getUsername()));
     // Save the entity
     return $this->repository->save($user);
 }
예제 #4
0
파일: Users.php 프로젝트: atiarda/bolt
 /**
  * Handle a POST from user edit or first user creation.
  *
  * @param Request $request
  * @param Form    $form      A Symfony form
  * @param boolean $firstuser If this is a first user set up
  *
  * @return Entity\Users|false
  */
 private function validateUserForm(Request $request, Form $form, $firstuser = false)
 {
     $form->submit($request->get($form->getName()));
     if (!$form->isValid()) {
         return false;
     }
     $userEntity = new Entity\Users($form->getData());
     $userEntity->setUsername($this->app['slugify']->slugify($userEntity->getUsername()));
     if (!$firstuser) {
         $userEntity->setRoles($this->users()->filterManipulatableRoles($userEntity->getId(), $userEntity->getRoles()));
     }
     if ($this->getRepository('Bolt\\Storage\\Entity\\Users')->save($userEntity)) {
         $this->flashes()->success(Trans::__('page.edit-users.message.user-saved', ['%user%' => $userEntity->getDisplayname()]));
         $this->notifyUserSave($request, $userEntity->getDisplayname(), $userEntity->getEmail(), $firstuser);
     } else {
         $this->flashes()->error(Trans::__('page.edit-users.message.saving-user', ['%user%' => $userEntity->getDisplayname()]));
     }
     return $userEntity;
 }
예제 #5
0
파일: Login.php 프로젝트: bolt/bolt
 /**
  * Set the Authtoken cookie and DB-entry. If it's already present, update it.
  *
  * @param Entity\Users $userEntity
  *
  * @return Entity\Authtoken
  */
 protected function updateAuthToken($userEntity)
 {
     $username = $userEntity->getUsername();
     $cookieLifetime = (int) $this->cookieOptions['lifetime'];
     $tokenEntity = $this->getRepositoryAuthtoken()->getUserToken($userEntity->getUsername(), $this->getClientIp(), $this->getClientUserAgent());
     if ($tokenEntity) {
         $token = $tokenEntity->getToken();
     } else {
         $salt = $this->randomGenerator->generateString(32);
         $token = $this->getAuthToken($username, $salt);
         $tokenEntity = new Entity\Authtoken();
         $tokenEntity->setUsername($userEntity->getUsername());
         $tokenEntity->setToken($token);
         $tokenEntity->setSalt($salt);
     }
     $tokenEntity->setValidity(Carbon::create()->addSeconds($cookieLifetime));
     $tokenEntity->setIp($this->getClientIp());
     $tokenEntity->setLastseen(Carbon::now());
     $tokenEntity->setUseragent($this->getClientUserAgent());
     $this->getRepositoryAuthtoken()->save($tokenEntity);
     $this->systemLogger->debug("Saving new login token '{$token}' for user ID '{$username}'", ['event' => 'authentication']);
     return $tokenEntity;
 }
예제 #6
0
파일: Login.php 프로젝트: romulo1984/bolt
 /**
  * Set the Authtoken cookie and DB-entry. If it's already present, update it.
  *
  * @param Entity\Users $userEntity
  *
  * @return Entity\Authtoken
  */
 protected function updateAuthToken($userEntity)
 {
     $salt = $this->randomGenerator->generateString(32);
     if (!($tokenEntity = $this->repositoryAuthtoken->getUserToken($userEntity->getUsername(), $this->remoteIP, $this->userAgent))) {
         $tokenEntity = new Entity\Authtoken();
     }
     $username = $userEntity->getUsername();
     $token = $this->getAuthToken($username, $salt);
     $validityPeriod = $this->cookieOptions['lifetime'];
     $validityDate = new \DateTime();
     $validityInterval = new \DateInterval("PT{$validityPeriod}S");
     $tokenEntity->setUsername($userEntity->getUsername());
     $tokenEntity->setToken($token);
     $tokenEntity->setSalt($salt);
     $tokenEntity->setValidity($validityDate->add($validityInterval));
     $tokenEntity->setIp($this->remoteIP);
     $tokenEntity->setLastseen(new \DateTime());
     $tokenEntity->setUseragent($this->userAgent);
     $this->repositoryAuthtoken->save($tokenEntity);
     $this->systemLogger->debug("Saving new login token '{$token}' for user ID '{$username}'", ['event' => 'authentication']);
     return $tokenEntity;
 }
예제 #7
0
 /**
  * Delete any save authtokens for a user.
  *
  * @param Entity\Users $user
  */
 private function deleteAuthtokens(Entity\Users $user)
 {
     /** @var \Bolt\Storage\Repository\AuthtokenRepository $repo */
     $repo = $this->em->getRepository('Bolt\\Storage\\Entity\\Authtoken');
     $repo->deleteTokens($user->getUsername());
 }