Skip to content

Commit 3d91640

Browse files
committed
(fix) Update member retrieval and JSON representation to include dynamic limits and additional attributes
1 parent 2f974e2 commit 3d91640

5 files changed

Lines changed: 10 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Next release
44

5+
- Fix a bug: member unable to edit profile and reserve machine/format/event
6+
57
## v6.5.4 2026 March 31
68

79
- Fix a security issue: restrict exposed personal data in `/api/last_subscribed`, `/api/members` and `/api/members/:id` for public and non-privileged users

app/controllers/api/members_controller.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@ def index
2020
end
2121

2222
def last_subscribed
23-
@query, @members = Members::MembersService.last_registered
23+
@query, @members = Members::MembersService.last_registered(params[:last])
24+
@query, @members = Members::MembersService.last_registered()
2425
@public_last_subscribed = true
2526
render :index
2627
end
2728

2829
def show
2930
@member = User.friendly.find(params[:id])
3031
authorize @member
31-
@restricted_member_show = !current_user.privileged?
32+
@restricted_member_show = !current_user.privileged? && current_user.id != @member.id
3233
end
3334

3435
def create

app/services/members/members_service.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,13 @@ def self.handle_organization(params)
103103
params
104104
end
105105

106-
def self.last_registered
106+
def self.last_registered(limit = 10)
107+
limit = [limit.to_i, 10].min
107108
query = User.active.with_role(:member)
108109
.includes(:statistic_profile, profile: [:user_avatar])
109110
.where('is_allow_contact = true AND confirmed_at IS NOT NULL')
110111
.order('created_at desc')
111-
.limit(10)
112+
.limit(limit)
112113

113114
# remove unmerged profiles from list
114115
members = query.to_a

app/views/api/members/_member.json.jbuilder

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# frozen_string_literal: true
22

3-
json.extract! member, :username, :email, :slug
3+
json.extract! member, :id, :username, :email, :slug
44
unless @restricted_member_show
5-
json.id member.id
65
json.group_id member.group_id
76
json.role member.roles.first.name
87
end

app/views/api/members/index.json.jbuilder

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ json.array!(@members) do |member|
2727

2828
if !@public_last_subscribed && attribute_requested?(@requested_attributes, 'profile')
2929
json.profile do
30+
json.id member.profile.id
3031
if member.profile.user_avatar
3132
json.user_avatar do
3233
json.id member.profile.user_avatar.id

0 commit comments

Comments
 (0)