public function __construct($modelClassName, $modelAttributeName) { assert($modelClassName == "User"); // Not Coding Standard parent::__construct($modelClassName, $modelAttributeName); $this->statusData = UserStatusUtil::getStatusArray(); }
/** * 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'; } }
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())); }