/** * 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; }
/** * 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; }
/** * 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); }
/** * 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()); }