[[!FormIt?
&submitvar=`submit`
&hooks=`updateHook`
&validate=`fullname:required,
email:email:required`
]]
<h1>Update Profile</h1>
<div class="update-profile">
<div class="updprof-error">[[+error.message]]</div>
[[+login.update_success:is=`1`:then=`[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]`]]
<form class="form" action="[[~[[*id]]]]" method="post">
<input type="hidden" name="nospam" value="" />
<label for="fullname">[[!%login.fullname? &namespace=`login` &topic=`updateprofile`]]
<span class="error">[[+error.fullname]]</span>
</label>
<input type="text" name="fullname" id="fullname" value="[[+Profile_fullname]]" />
<label for="email">[[!%login.email]]
<span class="error">[[+error.email]]</span>
</label>
<input type="text" name="email" id="email" value="[[+Profile_email]]" />
<label for="phone">[[!%login.phone]]
<span class="error">[[+error.phone]]</span>
</label>
<input type="text" name="phone" id="phone" value="[[+Profile_phone]]" />
<label for="mobilephone">[[!%login.mobilephone]]
<span class="error">[[+error.mobilephone]]</span>
</label>
<input type="text" name="mobilephone" id="mobilephone" value="[[+Profile_mobilephone]]" />
<label for="fax">[[!%login.fax]]
<span class="error">[[+error.fax]]</span>
</label>
<input type="text" name="fax" id="fax" value="[[+fax]]" />
<label for="address">[[!%login.address]]
<span class="error">[[+error.address]]</span>
</label>
<input type="text" name="address" id="address" value="[[+Profile_address]]" />
<label for="country">[[!%login.country]]
<span class="error">[[+error.country]]</span>
</label>
<input type="text" name="country" id="country" value="[[+Profile_country]]" />
<label for="city">[[!%login.city]]
<span class="error">[[+error.city]]</span>
</label>
<input type="text" name="city" id="city" value="[[+Profile_city]]" />
<label for="state">[[!%login.state]]
<span class="error">[[+error.state]]</span>
</label>
<input type="text" name="state" id="state" value="[[+Profile_state]]" />
<label for="zip">[[!%login.zip]]
<span class="error">[[+error.zip]]</span>
</label>
<input type="text" name="zip" id="zip" value="[[+Profile_zip]]" />
<label for="website">[[!%login.website]]
<span class="error">[[+error.website]]</span>
</label>
<input type="text" name="website" id="website" value="[[+Profile_website]]" />
<br class="clear" />
<div class="form-buttons">
<input type="submit" name="login-updprof-btn" value="[[!%login.update_profile]]" />
</div>
</form>
</div>$success = true;
$data = $hook->getValues();
$extended = array();
foreach ($data as $key => $value) {
$field = explode('.', $key);
if (count($field) > 1) {
//extended field (json-array)
if ($field[0] == 'Profile_extended') {
$extended[$field[1]] = $value;
unset($data[$key]);
}
} elseif (substr($key, 0, 8) == 'Profile_') {
$data[substr($key, 8)] = $value;
unset($data[$key]);
}
}
$data['extended'] = $extended;
$data['fullname'] = $data['Profile_fullname'];
$data['email'] = $data['Profile_email'];
$data['phone'] = $data['Profile_phone'];
$response = $modx->runProcessor('security/user/update', $data);
if ($response->isError()) {
$success = false;
$errormsg = $response->getMessage();
}
return $success;
The UpdateProfile snippet accepts the User ID from the $scriptProperties array and should load that user, allowing you to edit it. SO you can make a (heavily protected) form that the site manager could login to, and they can specify the user ID to edit. IF I'm reading this right: https://github.com/modxcms/Login/blob/develop/core/components/login/controllers/web/UpdateProfile.php#L120
you should also be able to pass in a username, and getObject will query that against the user table.
[[!PeopleGroup? &usergroup=`Clients` &getProfile=`1` &toPlaceholder=`users` &userTpl=`AloUserTpl2` &limit=`0`]]
[[!FormIt?
&submitVar=`edit`
&hooks=`redirect`
&store=`1`
&redirectTo=`79`
]]
<div class="postbox">
<div class="postboxmain">
<h2>Select User To Edit</h2>
<form id="target" action="[[~[[*id]]]]" method="post">
<input type="hidden" value="[[!+fi.user-id]]" name="user-id" id="user-id"/>
<ul id="edit-user-selected">
[[+users]]
</ul>
<input type="submit" class="submit" name="edit" value="Edit User" />
</form>
</div>
<div class="postboxfooter"></div>
</div>
[[!FormItRetriever]]
[[!UpdateProfile? &user=`[[!+fi.user-id]]`]]
<div class="update-profile">
<div class="updprof-error">[[+error.message]]</div>
[[+login.update_success:if=`[[+login.update_success]]`:is=`1`:then=`[[%login.profile_updated? &namespace=`login` &topic=`updateprofile`]]`]]
<form class="form" action="[[~[[*id]]]]" method="post">
<input type="hidden" name="nospam:blank" value="" />
<label for="fullname">[[!%login.fullname? &namespace=`login` &topic=`updateprofile`]]
<span class="error">[[+error.fullname]]</span>
</label>
<input type="text" name="fullname" id="fullname" value="[[!+fullname]]" />
<label for="blocked">Block User
<span class="error">[[+error.blocked]]</span>
</label>
<input type="hidden" name="blocked" id="blocked" value="[[!+blocked]]" />
<select id="blocked-select" name="blocked-select">
<option value="0">No</option>
<option value="1">Yes</option>
</select>
<label for="blockedafter">Block User After
<span class="error">[[+error.blockedafter]]</span>
</label>
<input type="hidden" name="blockedafter" value="[[!+blockedafter]]"/>
<input type="text" name="blockedafter" id="blockedafter" value="[[dateconverter? &date=`[[!+blockedafter]]`]]" />
<label>Last Login</label>
<p>[[!+lastlogin]]</p>
<label for="email">[[!%login.email]]
<span class="error">[[+error.email]]</span>
</label>
<input type="text" name="email:required:email" id="email" value="[[!+email]]" />
<label for="phone">[[!%login.phone]]
<span class="error">[[+error.phone]]</span>
</label>
<input type="text" name="phone" id="phone" value="[[!+phone]]" />
<label for="mobilephone">[[!%login.mobilephone]]
<span class="error">[[+error.mobilephone]]</span>
</label>
<input type="text" name="mobilephone" id="mobilephone" value="[[!+mobilephone]]" />
<label for="fax">[[!%login.fax]]
<span class="error">[[+error.fax]]</span>
</label>
<input type="text" name="fax" id="fax" value="[[+fax]]" />
<label for="address">[[!%login.address]]
<span class="error">[[+error.address]]</span>
</label>
<input type="text" name="address" id="address" value="[[!+address]]" />
<label for="country">[[!%login.country]]
<span class="error">[[+error.country]]</span>
</label>
<input type="text" name="country" id="country" value="[[!+country]]" />
<label for="city">[[!%login.city]]
<span class="error">[[+error.city]]</span>
</label>
<input type="text" name="city" id="city" value="[[!+city]]" />
<label for="state">[[!%login.state]]
<span class="error">[[+error.state]]</span>
</label>
<input type="text" name="state" id="state" value="[[!+state]]" />
<label for="zip">[[!%login.zip]]
<span class="error">[[+error.zip]]</span>
</label>
<input type="text" name="zip" id="zip" value="[[+!zip]]" />
[[!checkUser:eq=`1`:then=`<label for="website">File Share URL</label>
<span class="error">[[+error.website]]</span>
<input type="text" name="website" id="website" value="[[!+website]]" />`]]
<br class="clear" />
<div class="form-buttons">
<input type="submit" class="submit" name="login-updprof-btn" value="[[!%login.update_profile]]" />
</div>
</form>
</div>