/**
  * Create a system user that can be used for running jobs and workflow background processes. Block
  * login via mobile, web, and api.
  * @param $username
  * @param null $password
  * @param bool $hideFromSelecting
  * @param bool $hideFromLeaderboard
  * @return User
  * @throws FailedToSaveModelException
  */
 public static function createSystemUser($username, $password = null, $hideFromSelecting = true, $hideFromLeaderboard = true, $firstName = null, $lastName = null)
 {
     if (!isset($password)) {
         $password = static::generateRandomPasswordForSystemUser();
     }
     if (!isset($firstName)) {
         $firstName = 'System';
     }
     if (!isset($lastName)) {
         $lastName = 'User';
     }
     $user = new User();
     $user->username = $username;
     $user->firstName = $firstName;
     $user->lastName = $lastName;
     $user->hideFromSelecting = $hideFromSelecting;
     $user->hideFromLeaderboard = $hideFromLeaderboard;
     $user->setIsSystemUser();
     $user->setPassword($password);
     $saved = $user->save();
     if (!$saved) {
         throw new FailedToSaveModelException();
     }
     $user->setRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_MOBILE, Right::DENY);
     $user->setRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB, Right::DENY);
     $user->setRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB_API, Right::DENY);
     $saved = $user->save();
     if (!$saved) {
         throw new FailedToSaveModelException();
     }
     $group = Group::getByName(Group::SUPER_ADMINISTRATORS_GROUP_NAME);
     $group->users->add($user);
     $saved = $group->save();
     if (!$saved) {
         throw new FailedToSaveModelException();
     }
     return $user;
 }
Example #2
0
 public function testInactiveUsers()
 {
     $activeUserCount = User::getActiveUserCount();
     $this->assertEquals(28, $activeUserCount);
     $this->assertCount(28, User::getActiveUsers());
     $user = new User();
     $user->username = '******';
     $user->title->value = 'Mr.';
     $user->firstName = 'My';
     $user->lastName = 'inactiveuser';
     $user->setPassword('myuser');
     $user->setIsSystemUser();
     $this->assertTrue($user->save());
     $this->assertEquals(28, $activeUserCount);
     $this->assertCount(28, User::getActiveUsers());
 }