From 85dfe67d2fb9f0ccc4e714e9c417e5ce785a1a64 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 28 Jul 2026 11:11:56 +0200 Subject: [PATCH] member-user connection, download stats menu label --- apps/api/app/admin/admin_users.rb | 14 +++++++++++++- apps/api/app/admin/downloads.rb | 2 +- apps/api/app/admin/members.rb | 3 ++- apps/api/app/models/admin_user.rb | 8 +++++++- apps/api/app/models/member.rb | 1 + .../20260728000002_add_member_id_to_admin_users.rb | 5 +++++ 6 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 apps/api/db/migrate/20260728000002_add_member_id_to_admin_users.rb diff --git a/apps/api/app/admin/admin_users.rb b/apps/api/app/admin/admin_users.rb index 9b9ce0f..637fc1c 100644 --- a/apps/api/app/admin/admin_users.rb +++ b/apps/api/app/admin/admin_users.rb @@ -1,15 +1,17 @@ ActiveAdmin.register AdminUser do - permit_params :email, :password, :password_confirmation + permit_params :email, :password, :password_confirmation, :member_id index do selectable_column id_column column :email + column(:member) { |u| u.member ? link_to(u.member.nick, admin_member_path(u.member)) : "–" } column :created_at actions end filter :email + filter :member_id, as: :select, collection: -> { Member.order(:nick).map { |m| [m.nick, m.id] } } filter :created_at form do |f| @@ -17,6 +19,9 @@ ActiveAdmin.register AdminUser do f.input :email f.input :password f.input :password_confirmation + f.input :member_id, as: :select, + collection: Member.order(:nick).map { |m| [m.nick, m.id] }, + include_blank: "— none —" end f.actions end @@ -25,8 +30,15 @@ ActiveAdmin.register AdminUser do attributes_table do row :id row :email + row(:member) { |u| u.member ? link_to(u.member.nick, admin_member_path(u.member)) : "–" } row :created_at row :updated_at end end + + controller do + def scoped_collection + super.includes(:member) + end + end end diff --git a/apps/api/app/admin/downloads.rb b/apps/api/app/admin/downloads.rb index 6eadd89..4627c5d 100644 --- a/apps/api/app/admin/downloads.rb +++ b/apps/api/app/admin/downloads.rb @@ -1,7 +1,7 @@ ActiveAdmin.register Download do actions :index, :show - menu priority: 6 + menu priority: 6, label: "Download Stats" scope :all, default: true scope("Today") { |scope| scope.where("downloads.created_at >= ?", Date.current.beginning_of_day) } diff --git a/apps/api/app/admin/members.rb b/apps/api/app/admin/members.rb index 6c21480..c09dcd3 100644 --- a/apps/api/app/admin/members.rb +++ b/apps/api/app/admin/members.rb @@ -20,6 +20,7 @@ ActiveAdmin.register Member do image_tag "/api/image/#{m.image.id}", style: "max-height:40px;max-width:80px;object-fit:contain;" end end + column(:admin_user) { |m| m.admin_user ? link_to(m.admin_user.email, admin_admin_user_path(m.admin_user)) : "–" } column :created_at actions end @@ -50,7 +51,7 @@ ActiveAdmin.register Member do controller do def scoped_collection - super.includes(:image) + super.includes(:image, :admin_user) end def find_resource diff --git a/apps/api/app/models/admin_user.rb b/apps/api/app/models/admin_user.rb index 043bad2..5f38551 100644 --- a/apps/api/app/models/admin_user.rb +++ b/apps/api/app/models/admin_user.rb @@ -2,7 +2,13 @@ class AdminUser < ApplicationRecord devise :database_authenticatable, :recoverable, :rememberable, :validatable + belongs_to :member, optional: true + def self.ransackable_attributes(auth_object = nil) - %w[created_at email id updated_at] + %w[created_at email id member_id updated_at] + end + + def self.ransackable_associations(auth_object = nil) + %w[member] end end diff --git a/apps/api/app/models/member.rb b/apps/api/app/models/member.rb index 5deef91..89f2e0e 100644 --- a/apps/api/app/models/member.rb +++ b/apps/api/app/models/member.rb @@ -1,5 +1,6 @@ class Member < ApplicationRecord belongs_to :image, optional: true + has_one :admin_user def self.ransackable_attributes(auth_object = nil) %w[avatar_filename created_at id image_id motto nick real_nick updated_at] diff --git a/apps/api/db/migrate/20260728000002_add_member_id_to_admin_users.rb b/apps/api/db/migrate/20260728000002_add_member_id_to_admin_users.rb new file mode 100644 index 0000000..a18df06 --- /dev/null +++ b/apps/api/db/migrate/20260728000002_add_member_id_to_admin_users.rb @@ -0,0 +1,5 @@ +class AddMemberIdToAdminUsers < ActiveRecord::Migration[8.0] + def change + add_reference :admin_users, :member, null: true, foreign_key: true + end +end