/**
  * Enable user login 
  * @param string $loginId
  * @param string $password
  * @param bool $checkPasswordStructure
  * @throws kUserException::USER_LOGIN_ALREADY_ENABLED
  * @throws kUserException::INVALID_EMAIL
  * @throws kUserException::INVALID_PARTNER
  * @throws kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED
  * @throws kUserException::PASSWORD_STRUCTURE_INVALID
  * @throws kUserException::LOGIN_ID_ALREADY_USED
  */
 public function enableLogin($loginId, $password = null, $checkPasswordStructure = true, $sendEmail = null)
 {
     if (!$password) {
         $password = UserLoginDataPeer::generateNewPassword();
         if (is_null($sendEmail)) {
             $sendEmail = true;
         }
     }
     if ($this->getLoginDataId()) {
         throw new kUserException('', kUserException::USER_LOGIN_ALREADY_ENABLED);
     }
     $loginDataExisted = null;
     $loginData = UserLoginDataPeer::addLoginData($loginId, $password, $this->getPartnerId(), $this->getFirstName(), $this->getLastName(), $this->getIsAdmin(), $checkPasswordStructure, $loginDataExisted);
     if (!$loginData) {
         throw new kUserException('', kUserException::LOGIN_DATA_NOT_FOUND);
     }
     $this->setLoginDataId($loginData->getId());
     if ($sendEmail) {
         if ($loginDataExisted) {
             kuserPeer::sendNewUserMail($this, true);
         } else {
             kuserPeer::sendNewUserMail($this, false);
         }
         kuserPeer::sendNewUserMailToAdmins($this);
     }
     return $this;
 }
Esempio n. 2
0
 /**
  * Enable user login 
  * @param string $loginId
  * @param string $password
  * @param bool $checkPasswordStructure
  * @throws kUserException::USER_LOGIN_ALREADY_ENABLED
  * @throws kUserException::INVALID_EMAIL
  * @throws kUserException::INVALID_PARTNER
  * @throws kUserException::ADMIN_LOGIN_USERS_QUOTA_EXCEEDED
  * @throws kUserException::PASSWORD_STRUCTURE_INVALID
  * @throws kUserException::LOGIN_ID_ALREADY_USED
  */
 public function enableLogin($loginId, $password = null, $checkPasswordStructure = true, $sendEmail = null)
 {
     if (!$password) {
         $password = UserLoginDataPeer::generateNewPassword();
         if (is_null($sendEmail)) {
             $sendEmail = true;
         }
     }
     if ($this->getLoginDataId()) {
         throw new kUserException('', kUserException::USER_LOGIN_ALREADY_ENABLED);
     }
     $loginDataExisted = null;
     $loginData = UserLoginDataPeer::addLoginData($loginId, $password, $this->getPartnerId(), $this->getFirstName(), $this->getLastName(), $this->getIsAdmin(), $checkPasswordStructure, $loginDataExisted);
     if (!$loginData) {
         throw new kUserException('', kUserException::LOGIN_DATA_NOT_FOUND);
     }
     $this->setLoginDataId($loginData->getId());
     //Email notification on user creation is sent while using kuser email so make sure this field is set before enabling login
     //if not than set the email to be the $loginId provided to this action (we now know this is a valid email since "addLoginData" verifies this)
     if (!$this->getEmail()) {
         $this->setEmail($loginId);
     }
     if ($sendEmail) {
         if ($loginDataExisted) {
             kuserPeer::sendNewUserMail($this, true);
         } else {
             kuserPeer::sendNewUserMail($this, false);
         }
         if (!PermissionPeer::isValidForPartner(PermissionName::FEATURE_DISABLE_NEW_USER_EMAIL, $this->getPartnerId())) {
             kuserPeer::sendNewUserMailToAdmins($this);
         }
     }
     return $this;
 }
Esempio n. 3
0
 /**
  * Tests UserService->updateLoginDataAction()
  */
 public function testUpdateLoginDataAction()
 {
     // test that cannot update to existing data
     $this->startSession(KalturaSessionType::ADMIN, null);
     $this->startSession2(KalturaSessionType::ADMIN, null);
     $newUser1 = $this->createUser(true, false, __FUNCTION__);
     $newUser2 = $this->createUser(true, true, __FUNCTION__);
     $addedUser1 = $this->addUser($newUser1);
     $addedUser2 = $this->addUser($newUser2);
     $exceptionThrown = false;
     try {
         $this->client->user->updateLoginData($newUser2->email, $newUser2->password, $newUser1->email, UserLoginDataPeer::generateNewPassword());
     } catch (Exception $e) {
         $exceptionThrown = $e;
     }
     $this->checkException($exceptionThrown, 'LOGIN_ID_ALREADY_USED');
     // update and try to login with the new data
     $newUser3 = $this->createUser(true, false);
     $updatedUser = $this->client->user->updateLoginData($newUser2->email, $newUser2->password, $newUser3->email, $newUser3->password);
     $newClient = $this->getClient(null);
     $ks = $newClient->user->loginByLoginId($newUser3->email, $newUser3->password);
     $this->assertNotNull($ks);
     $ks = kSessionUtils::crackKs($ks);
     $this->assertNotNull($ks);
     $this->assertEquals($addedUser2->partnerId, $ks->partner_id);
     // test that updaing login data, updates the email on all kusers using it.
     $newUser4 = $this->createUser(true, true);
     $this->addUser($newUser4);
     $this->addUser2($newUser4);
     $newEmail = '*****@*****.**';
     $this->client->user->updateLogindata($newUser4->email, $newUser4->password, $newEmail);
     $getUser1 = $this->client->user->get($newUser4->id);
     $getUser2 = $this->client2->user->get($newUser4->id);
     $this->assertEquals($newEmail, $getUser1->email);
     $this->assertEquals($newEmail, $getUser2->email);
 }
Esempio n. 4
0
 /**
  * Tests UserLoginData->passwordUsedBefore() && UserLoginData->addToPreviousPasswords()
  */
 public function testPasswordUsedBeforeAddToPreviousPasswords()
 {
     $this->assertNull($this->UserLoginData->getPreviousPasswords());
     $this->dummyPartner->setNumPrevPassToKeep(3);
     $this->dummyPartner->save();
     $pass2 = UserLoginDataPeer::generateNewPassword();
     $pass3 = UserLoginDataPeer::generateNewPassword();
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass3));
     $pass1 = $this->UserLoginData->resetPassword();
     $this->UserLoginData->resetPassword($pass1, $pass1);
     $this->UserLoginData->resetPassword($pass2, $pass1);
     $this->UserLoginData->resetPassword($pass3, $pass2);
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass3));
     $pass4 = uniqid();
     $this->UserLoginData->resetPassword($pass4, $pass3);
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass3));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass4));
     $pass5 = uniqid();
     $this->UserLoginData->resetPassword($pass5, $pass4);
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass3));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass4));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass5));
     $this->dummyPartner->setNumPrevPassToKeep(2);
     $this->dummyPartner->save();
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass3));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass4));
     $this->assertTrue($this->UserLoginData->passwordUsedBefore($pass5));
     $this->dummyPartner->setNumPrevPassToKeep(0);
     $this->dummyPartner->save();
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass3));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass4));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass5));
     $pass6 = uniqid();
     $this->UserLoginData->resetPassword($pass6, $pass5);
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass1));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass2));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass3));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass4));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass5));
     $this->assertFalse($this->UserLoginData->passwordUsedBefore($pass6));
 }
 private function createNewAdminKuser($newPartner, $existing_password)
 {
     // generate a new password if not given
     if ($existing_password != null) {
         $password = $existing_password;
     } else {
         $password = UserLoginDataPeer::generateNewPassword();
     }
     // create the user
     $kuser = new kuser();
     $kuser->setEmail($newPartner->getAdminEmail());
     list($firstName, $lastName) = kString::nameSplit($newPartner->getAdminName());
     $kuser->setFirstName($firstName);
     $kuser->setLastName($lastName);
     $kuser->setPartnerId($newPartner->getId());
     $kuser->setIsAdmin(true);
     $kuser->setPuserId($newPartner->getAdminEmail());
     $kuser = kuserPeer::addUser($kuser, $password, false, false);
     //this also saves the kuser and adds a user_login_data record
     $loginData = UserLoginDataPeer::retrieveByPK($kuser->getLoginDataId());
     return array($password, $loginData->getPasswordHashKey(), $kuser->getId());
 }