| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using Statum;
- namespace Spry.Actions {
- /**
- * Enables or disables the user targeted by the sealed private data
- * ({@link UserActionPrivate}.`user_id`, falling back to the `user_id`
- * form field when no blob was sent), toggled by the `enabled` form field
- * (checkbox-style: the field is absent when unchecked). Admin-guarded.
- */
- public class SetUserEnabledAction : UserManagementAction {
- /** Notification shown when no `user_id` was supplied. */
- protected virtual string user_required_message { get { return "A user id is required."; } }
- /** Notification shown after enabling a user. */
- protected virtual string user_enabled_message { get { return "User has been enabled."; } }
- /** Notification shown after disabling a user. */
- protected virtual string user_disabled_message { get { return "User has been disabled."; } }
- /** Notification shown when the update could not be persisted. */
- protected virtual string update_failed_message { get { return "Could not update the user. Please try again later."; } }
- public override async DirectiveBuilder handle() throws GLib.Error {
- var guard = yield require_permission_guard();
- if (guard != null) {
- return (!)guard;
- }
- string enabled_text = "";
- if (request.form != null) {
- enabled_text = request.form.get_field("enabled") ?? "";
- }
- int64 user_id = target_user_id();
- if (user_id == 0) {
- return directives().notify("error", user_required_message);
- }
- bool enabled = enabled_text.down() == "on" || enabled_text.down() == "true" || enabled_text.down() == "1";
- try {
- yield users.set_user_enabled(user_id, enabled);
- return directives().notify("success", enabled ? user_enabled_message : user_disabled_message);
- } catch (Error e) {
- return directives().notify("error",
- ProfileValidation.internal_error_message(e, update_failed_message));
- }
- }
- }
- }
|