Hey there!
I’m trying to implement a small form to allow frontend users of a page to update part of their own user data.
<?php return function ($kirby) {
$error = false;
$success =false;
$message = "";
if ($kirby->request()->is('POST') && get('update')) {
//I've left out all the validation here to keep the example brief.
try {
$kirby->user()->update([
'name' => get('name'),
'email' => get('email')
]);
$success = true;
} catch(Exception $e) {
$error = true;
$message = "User could not be updated!";
}
}
return [
'error' => $error,
'message' => $message,
'success' => $success
];
};
<form action="" method="post" enctype="multipart/form-data">
<input class="p-text green" type="text" id="name" name="name" placeholder="Name" value="<?= $kirby->user()->name() ?>">
<input class="p-text green" type="email" id="email" name="email" placeholder="Email" value="<?= $kirby->user()->email() ?>">
<input class="p-button green clickable" type="submit" name="update" value="Submit changes">
</form>
<?php if($error): ?>
<span class="p-alert red"><?= $message ?></span>
<?php endif; ?>
<?phpif($success): ?>
<span class="p-alert green">User data was updated!</span>
<?php endif; ?>
The odd thing is that the function is reporting success, yet no data is being updated. This doesn’t seem to be an issue with data retrieval from the form, as the data passes validation in the controller.
I’m I assuming correctly that users can update their own data without impersonating a super user? I guess if this were a permission issue, I wouldn’t be getting a success report, right?
Thank you for your time!