Skip to content

Commit 3c8ec8c

Browse files
committed
Allow querying extra user data
1 parent f33a083 commit 3c8ec8c

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

app/controllers/api/v8/users_controller.rb

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,32 @@ def show
6262
user = User.find_by!(id: params[:id]) unless params[:id] == 'current'
6363
authorize! :read, user
6464

65-
present(
65+
data = {
6666
id: user.id,
6767
username: user.login,
6868
email: user.email,
6969
administrator: user.administrator
70-
)
70+
}
71+
72+
if params[:show_user_fields]
73+
user_field = {}
74+
UserField.all.select { |f| f.visible_to?(current_user) }.each do |field|
75+
value_record = @user.field_value_record(field)
76+
value = value_record.ruby_value
77+
user_field[field] = value
78+
end
79+
data[:user_field] = user_field
80+
end
81+
82+
if params[:extra_fields]
83+
extra_fields = {}
84+
namespace = params[:extra_fields]
85+
UserAppDatum.where(namespace: namespace, user: user).each do |datum|
86+
extra_fields[datum.field_name] = datum.value
87+
end
88+
data[:extra_fields] = extra_fields
89+
end
90+
render json: data
7191
end
7292

7393
def create
@@ -91,7 +111,7 @@ def create
91111
}
92112
else
93113
errors = @user.errors
94-
errors[:username] = errors.delete(:login) if errors.has_key?(:login)
114+
errors[:username] = errors.delete(:login) if errors.key?(:login)
95115
render json: {
96116
success: false,
97117
errors: @user.errors
@@ -104,7 +124,7 @@ def create
104124
def set_email
105125
user_params = params[:user]
106126

107-
return if !@user.new_record?
127+
return unless @user.new_record?
108128

109129
if user_params[:email].blank?
110130
@user.errors.add(:email, 'needed')
@@ -141,7 +161,7 @@ def set_extra_data
141161
extra_fields = params['user']['extra_fields']
142162
return if extra_fields.nil?
143163
namespace = extra_fields['namespace']
144-
raise "Namespace not defined" unless namespace
164+
raise 'Namespace not defined' unless namespace
145165
extra_fields['data'].each do |key, value|
146166
@user.user_app_data.new(namespace: namespace, field_name: key, value: value)
147167
end

0 commit comments

Comments
 (0)