2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
class UserActionsController < ApplicationController
|
|
|
|
def index
|
2022-02-22 19:02:04 +08:00
|
|
|
user_actions_params.require(:username)
|
2013-05-27 09:02:58 +08:00
|
|
|
|
2017-12-07 14:23:27 +08:00
|
|
|
user =
|
|
|
|
fetch_user_from_params(
|
|
|
|
include_inactive:
|
|
|
|
current_user.try(:staff?) || (current_user && SiteSetting.show_inactive_accounts),
|
|
|
|
)
|
2022-02-22 19:02:04 +08:00
|
|
|
offset = [0, user_actions_params[:offset].to_i].max
|
|
|
|
action_types = (user_actions_params[:filter] || "").split(",").map(&:to_i)
|
|
|
|
limit = user_actions_params.fetch(:limit, 30).to_i
|
2013-05-22 23:20:16 +08:00
|
|
|
|
2021-09-29 20:24:28 +08:00
|
|
|
raise Discourse::NotFound unless guardian.can_see_profile?(user)
|
|
|
|
raise Discourse::NotFound unless guardian.can_see_user_actions?(user, action_types)
|
|
|
|
|
2019-01-16 10:40:16 +08:00
|
|
|
opts = {
|
|
|
|
user_id: user.id,
|
|
|
|
user: user,
|
2019-08-20 18:03:16 +08:00
|
|
|
offset: offset,
|
2019-09-09 23:03:57 +08:00
|
|
|
limit: limit,
|
2019-01-16 10:40:16 +08:00
|
|
|
action_types: action_types,
|
|
|
|
guardian: guardian,
|
2022-02-22 19:02:04 +08:00
|
|
|
ignore_private_messages: params[:filter].blank?,
|
2019-01-16 10:40:16 +08:00
|
|
|
acting_username: params[:acting_username],
|
|
|
|
}
|
2015-04-22 02:36:46 +08:00
|
|
|
|
2019-01-04 01:03:01 +08:00
|
|
|
stream = UserAction.stream(opts).to_a
|
2024-04-10 22:35:42 +08:00
|
|
|
|
|
|
|
response = { user_actions: serialize_data(stream, UserActionSerializer) }
|
|
|
|
|
|
|
|
if guardian.can_lazy_load_categories?
|
|
|
|
category_ids = stream.map(&:category_id).compact.uniq
|
|
|
|
categories = Category.secured(guardian).with_parents(category_ids)
|
|
|
|
response[:categories] = serialize_data(categories, CategoryBadgeSerializer)
|
|
|
|
end
|
|
|
|
|
|
|
|
render json: response
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def show
|
2013-05-27 09:02:58 +08:00
|
|
|
params.require(:id)
|
2014-08-30 01:46:50 +08:00
|
|
|
render_serialized(UserAction.stream_item(params[:id], guardian), UserActionSerializer)
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2022-02-22 19:02:04 +08:00
|
|
|
private
|
|
|
|
|
|
|
|
def user_actions_params
|
|
|
|
@user_actions_params ||= params.permit(:username, :filter, :offset, :acting_username, :limit)
|
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|