public function process() { $fields = $this->getProperties(); if (!$this->validate($fields)) { return $this->failure(); } /* create membership */ /** @var modUserGroupMember $membership */ $membership = $this->modx->newObject('modUserGroupMember'); $membership->set('user_group', $this->userGroup->get('id')); $membership->set('member', $this->user->get('id')); $membership->set('role', $fields['role']); $rank = $this->getNewRank(); $membership->set('rank', $rank); /* save membership */ if ($membership->save() == false) { return $this->failure($this->modx->lexicon('user_group_member_err_save')); } /* set as primary group if the only group for user */ if ($rank == 0) { $this->user->set('primary_group', $this->userGroup->get('id')); $this->user->save(); } return $this->success('', $membership); }
public function process() { $this->verifyManifest(); $this->getUser(); $this->validatePassword(); $this->onBeforeUserActivate(); /* activate user */ $this->user->set('active', 1); $this->user->set('cachepwd', ''); if (!$this->user->save()) { $this->modx->log(modX::LOG_LEVEL_ERROR, '[Register] Could not save activated user: '******'username')); return ''; } /* invoke OnUserActivate event */ $this->modx->invokeEvent('OnUserActivate', array('user' => &$this->user)); $this->addSessionContexts(); $this->redirectBack(); return ''; }
/** * Change the User's password to the new one * @return bool */ public function changePassword() { $saved = true; /* change password */ $version = $this->modx->getVersionData(); if (version_compare($version['full_version'], '2.1.0-rc1') >= 0) { $this->user->set('password', $this->password); } else { $this->user->set('password', md5($this->password)); } if (!$this->getProperty('debug', false, 'isset')) { $saved = $this->user->save(); } return $saved; }
public function setCachePassword($password) { /* now set new password to registry to prevent middleman attacks. * Will read from the registry on the confirmation page. */ $this->modx->getService('registry', 'registry.modRegistry'); $this->modx->registry->addRegister('login', 'registry.modFileRegister'); $this->modx->registry->login->connect(); $this->modx->registry->login->subscribe('/useractivation/'); $this->modx->registry->login->send('/useractivation/', array($this->user->get('username') => $password), array('ttl' => $this->controller->getProperty('activationttl', 180) * 60)); /* set cachepwd here to prevent re-registration of inactive users */ $this->user->set('cachepwd', md5($password)); if ($this->live) { $success = $this->user->save(); } else { $success = true; } if (!$success) { $this->modx->log(modX::LOG_LEVEL_ERROR, '[Login] Could not update cachepwd for activation for User: '******'username')); } return $success; }
/** * Set user groups for the user * @return array */ public function setUserGroups() { $memberships = array(); $groups = $this->getProperty('groups', null); if ($groups !== null) { $primaryGroupId = 0; /* remove prior user group links */ $oldMemberships = $this->object->getMany('UserGroupMembers'); /** @var modUserGroupMember $membership */ foreach ($oldMemberships as $membership) { $membership->remove(); } /* create user group links */ $groupsAdded = array(); $groups = is_array($groups) ? $groups : $this->modx->fromJSON($groups); $idx = 0; foreach ($groups as $group) { if (in_array($group['usergroup'], $groupsAdded)) { continue; } $membership = $this->modx->newObject('modUserGroupMember'); $membership->set('user_group', $group['usergroup']); $membership->set('role', $group['role']); $membership->set('member', $this->object->get('id')); $membership->set('rank', isset($group['rank']) ? $group['rank'] : $idx); if (empty($group['rank'])) { $primaryGroupId = $group['usergroup']; } $memberships[] = $membership; $groupsAdded[] = $group['usergroup']; $idx++; } $this->object->addMany($memberships, 'UserGroupMembers'); $this->object->set('primary_group', $primaryGroupId); $this->object->save(); } return $memberships; }