public function __construct($modelClassName, $modelAttributeName)
 {
     assert($modelClassName == "User");
     // Not Coding Standard
     parent::__construct($modelClassName, $modelAttributeName);
     $this->statusData = UserStatusUtil::getStatusArray();
 }
Esempio n. 2
0
 /**
  * Override to handle special cases for the user status attribute.
  * @see DetailsView::resolveElementInformationDuringFormLayoutRender()
  */
 protected function resolveElementInformationDuringFormLayoutRender(&$elementInformation)
 {
     if ($elementInformation['type'] == 'DerivedUserStatus' && !UserStatusUtil::canUserEditStatusOnAnotherUser(Yii::app()->user->userModel, $this->model)) {
         $elementInformation['type'] = 'ReadOnlyDerivedUserStatus';
     }
     if ($elementInformation['attributeName'] == 'role' && !RightsUtil::canUserAccessModule('RolesModule', Yii::app()->user->userModel)) {
         $elementInformation['type'] = 'ReadOnlyModel';
     }
 }
Esempio n. 3
0
 public function testSimpleUserImportWhereAllRowsSucceed()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $users = User::getAll();
     $this->assertEquals(1, count($users));
     $import = new Import();
     $serializedData['importRulesType'] = 'User';
     $serializedData['firstRowIsHeaderRow'] = true;
     $import->serializedData = serialize($serializedData);
     $this->assertTrue($import->save());
     ImportTestHelper::createTempTableByFileNameAndTableName('importAnalyzerTest.csv', $import->getTempTableName(), true, Yii::getPathOfAlias('application.modules.users.tests.unit.files'));
     $this->assertEquals(11, ImportDatabaseUtil::getCount($import->getTempTableName()));
     // includes header rows.
     $defaultLanguage = Yii::app()->language;
     $localeIds = ZurmoLocale::getSelectableLocaleIds();
     $defaultLocale = $localeIds[0];
     $timezoneIdentifiers = DateTimeZone::listIdentifiers();
     $defaultTimeZone = $timezoneIdentifiers[0];
     $defaultCurrency = Yii::app()->currencyHelper->getActiveCurrencyForCurrentUser();
     $defaultCurrencyId = $defaultCurrency->id;
     $mappingData = array('column_0' => array('attributeIndexOrDerivedType' => 'username', 'type' => 'importColumn', 'mappingRulesData' => array()), 'column_1' => array('attributeIndexOrDerivedType' => 'Password', 'type' => 'importColumn', 'mappingRulesData' => array('PasswordDefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_2' => array('attributeIndexOrDerivedType' => 'UserStatus', 'type' => 'importColumn', 'mappingRulesData' => array('UserStatusDefaultValueMappingRuleForm' => array('defaultValue' => UserStatusUtil::ACTIVE))), 'column_3' => ImportMappingUtil::makeStringColumnMappingData('firstName'), 'column_4' => ImportMappingUtil::makeStringColumnMappingData('lastName'), 'column_5' => array('attributeIndexOrDerivedType' => 'role', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultModelNameIdMappingRuleForm' => array('defaultModelId' => null), 'RelatedModelValueTypeMappingRuleForm' => array('type' => RelatedModelValueTypeMappingRuleForm::ZURMO_MODEL_ID))), 'column_6' => array('attributeIndexOrDerivedType' => 'language', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => $defaultLanguage))), 'column_7' => array('attributeIndexOrDerivedType' => 'locale', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => $defaultLocale))), 'column_8' => array('attributeIndexOrDerivedType' => 'timeZone', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => $defaultTimeZone))), 'column_9' => array('attributeIndexOrDerivedType' => 'currency', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => $defaultCurrencyId))));
     $importRules = ImportRulesUtil::makeImportRulesByType('Users');
     $page = 0;
     $config = array('pagination' => array('pageSize' => 50));
     //This way all rows are processed.
     $dataProvider = new ImportDataProvider($import->getTempTableName(), true, $config);
     $dataProvider->getPagination()->setCurrentPage($page);
     $importResultsUtil = new ImportResultsUtil($import);
     $messageLogger = new ImportMessageLogger();
     ImportUtil::importByDataProvider($dataProvider, $importRules, $mappingData, $importResultsUtil, new ExplicitReadWriteModelPermissions(), $messageLogger);
     $importResultsUtil->processStatusAndMessagesForEachRow();
     //Confirm that 10 models where created.
     $this->assertEquals(11, User::getCount());
     $activeUser = User::getByUsername('myusername7');
     $userStatus = UserStatusUtil::makeByUser($activeUser);
     $this->assertTrue($userStatus->isActive());
     $this->assertEquals($defaultLanguage, $activeUser->language);
     $this->assertEquals($defaultLocale, $activeUser->locale);
     $this->assertEquals($defaultTimeZone, $activeUser->timeZone);
     $this->assertEquals($defaultCurrency, $activeUser->currency);
     $inactiveUser = User::getByUsername('myusername8');
     $userStatus = UserStatusUtil::makeByUser($inactiveUser);
     $this->assertEquals($defaultLanguage, $inactiveUser->language);
     $this->assertEquals($defaultLocale, $inactiveUser->locale);
     $this->assertEquals($defaultTimeZone, $inactiveUser->timeZone);
     $this->assertEquals($defaultCurrency, $inactiveUser->currency);
     $this->assertFalse($userStatus->isActive());
     //Confirm 10 rows were processed as 'created'.
     $this->assertEquals(10, ImportDatabaseUtil::getCount($import->getTempTableName(), "status = " . ImportRowDataResultsUtil::CREATED));
     //Confirm that 0 rows were processed as 'updated'.
     $this->assertEquals(0, ImportDatabaseUtil::getCount($import->getTempTableName(), "status = " . ImportRowDataResultsUtil::UPDATED));
     //Confirm 2 rows were processed as 'errors'.
     $this->assertEquals(0, ImportDatabaseUtil::getCount($import->getTempTableName(), "status = " . ImportRowDataResultsUtil::ERROR));
     $beansWithErrors = ImportDatabaseUtil::getSubset($import->getTempTableName(), "status = " . ImportRowDataResultsUtil::ERROR);
     $this->assertEquals(0, count($beansWithErrors));
 }
 public static function processAfterSaveAction(RedBeanModel $model, $attributeValueData)
 {
     assert('$model instanceof User');
     assert('is_array($attributeValueData) && count($attributeValueData) == 1');
     assert('isset($attributeValueData["status"]) && ($attributeValueData["status"] == UserStatusUtil::ACTIVE ||
                 $attributeValueData["status"] == UserStatusUtil::INACTIVE)');
     $userStatus = new UserStatus();
     if ($attributeValueData['status'] == UserStatusUtil::INACTIVE) {
         $userStatus->setInactive();
     }
     UserStatusUtil::resolveUserStatus($model, $userStatus);
 }
 public function testResolveUserStatus()
 {
     $user = UserTestHelper::createBasicUser('statusCheck2');
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB));
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_MOBILE));
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB_API));
     //Set the user to inactive.
     $userStatus = new UserStatus();
     $userStatus->setInactive();
     UserStatusUtil::resolveUserStatus($user, $userStatus);
     $userId = $user->id;
     $user = User::getById($userId);
     $this->assertEquals(UserStatusUtil::INACTIVE, UserStatusUtil::getSelectedValueByUser($user));
     $this->assertTrue(Right::DENY == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB));
     $this->assertTrue(Right::DENY == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_MOBILE));
     $this->assertTrue(Right::DENY == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB_API));
     //Now set the user back to active.
     $userStatus->setActive();
     UserStatusUtil::resolveUserStatus($user, $userStatus);
     $userId = $user->id;
     $user = User::getById($userId);
     $this->assertEquals(UserStatusUtil::ACTIVE, UserStatusUtil::getSelectedValueByUser($user));
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB));
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_MOBILE));
     $this->assertTrue(Right::NONE == $user->getExplicitActualRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB_API));
 }
 /**
  * Override to handle userStatus validation
  * @param User | ModelForm $model
  * @param string $postVariableName
  */
 protected function attemptToValidateAjaxFromPost($model, $postVariableName)
 {
     if (isset($_POST['ajax']) && $_POST['ajax'] == 'edit-form') {
         $sanitizedPostdata = PostUtil::sanitizePostByDesignerTypeForSavingModel($model, $_POST[$postVariableName]);
         $model->setAttributes($sanitizedPostdata);
         $model->validate();
         $userStatus = UserStatusUtil::makeByPostData($_POST[$postVariableName]);
         if ($model instanceof User) {
             if ($userStatus == null) {
                 $userStatus = UserStatusUtil::makeByUser($model);
             }
             Yii::app()->licenseManager->resolveValidationOnCreateOrEditUser($model, $userStatus);
         } elseif ($model instanceof ModelForm) {
             if ($userStatus == null) {
                 $userStatus = UserStatusUtil::makeByUser($model->getModel());
             }
             Yii::app()->licenseManager->resolveValidationOnCreateOrEditUser($model->getModel(), $userStatus);
         }
         $errorData = ZurmoActiveForm::makeErrorsDataAndResolveForOwnedModelAttributes($model);
         echo CJSON::encode($errorData);
         Yii::app()->end(0, false);
     }
 }
 protected function renderControlNonEditable()
 {
     $this->assertModelIsValid();
     return Yii::app()->format->text(UserStatusUtil::getSelectedValueByUser($this->getUserModel()));
 }