From bb2bf05e57fade9dff0ac59ff7185c861136f170 Mon Sep 17 00:00:00 2001 From: 24c02 <163450896+24c02@users.noreply.github.com> Date: Fri, 30 Jan 2026 14:59:51 -0500 Subject: [PATCH] better better quota --- app/components/admin/users/show.rb | 4 +-- app/controllers/admin/users_controller.rb | 31 +++++++++-------------- config/routes.rb | 6 +---- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/app/components/admin/users/show.rb b/app/components/admin/users/show.rb index 0306418..ab27448 100644 --- a/app/components/admin/users/show.rb +++ b/app/components/admin/users/show.rb @@ -105,7 +105,7 @@ class Components::Admin::Users::Show < Components::Base end # Admin controls - form(action: helpers.set_quota_admin_user_path(@user), method: :post, style: "display: flex; gap: 8px; align-items: center;") do + form(action: helpers.admin_user_path(@user), method: :post, style: "display: flex; gap: 8px; align-items: center;") do input(type: "hidden", name: "_method", value: "patch") input(type: "hidden", name: "authenticity_token", value: helpers.form_authenticity_token) @@ -114,7 +114,7 @@ class Components::Admin::Users::Show < Components::Base fetch_strategy: :local, dynamic_label: true, dynamic_label_prefix: "Quota Policy", - form_arguments: { name: :quota_policy } + form_arguments: { name: "user[quota_policy]" } )) do |panel| panel.with_show_button(scheme: :secondary, size: :small) { current_quota_label } panel.with_item(label: "Auto-detect (via HCA)", content_arguments: { data: { value: "" } }, active: @user.quota_policy.nil?) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 4975a87..8acc81e 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -7,34 +7,27 @@ module Admin def show end + def update + @user.update!(user_params) + redirect_to admin_user_path(@user), notice: "User updated." + end + def destroy @user.destroy! redirect_to admin_search_path, notice: "User #{@user.name || @user.email} deleted." end - def set_quota - quota_policy = params[:quota_policy] - - # Empty string means auto-detect (clear override) - if quota_policy.blank? - @user.update!(quota_policy: nil) - redirect_to admin_user_path(@user), notice: "Quota policy cleared. Will auto-detect via HCA." - return - end - - unless %w[verified functionally_unlimited].include?(quota_policy) - redirect_to admin_user_path(@user), alert: "Invalid quota policy." - return - end - - @user.update!(quota_policy: quota_policy) - redirect_to admin_user_path(@user), notice: "Quota policy set to #{quota_policy.humanize}." - end - private def set_user @user = User.find_by_public_id!(params[:id]) end + + def user_params + params.require(:user).permit(:quota_policy).tap do |p| + # Normalize empty string to nil for auto-detect + p[:quota_policy] = nil if p[:quota_policy].blank? + end + end end end diff --git a/config/routes.rb b/config/routes.rb index 3ffabb6..b9341e6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,11 +1,7 @@ Rails.application.routes.draw do namespace :admin do get "search", to: "search#index" - resources :users, only: [ :show, :destroy ] do - member do - patch "set_quota" - end - end + resources :users, only: [ :show, :update, :destroy ] resources :uploads, only: [ :destroy ] resources :api_keys, only: [ :destroy ] end