mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:43:33 +08:00
DEV: Apply syntax_tree formatting to app/*
This commit is contained in:
@ -3,28 +3,31 @@
|
||||
class Admin::UsersController < Admin::StaffController
|
||||
MAX_SIMILAR_USERS = 10
|
||||
|
||||
before_action :fetch_user, only: [:suspend,
|
||||
:unsuspend,
|
||||
:log_out,
|
||||
:revoke_admin,
|
||||
:revoke_moderation,
|
||||
:grant_moderation,
|
||||
:approve,
|
||||
:activate,
|
||||
:deactivate,
|
||||
:silence,
|
||||
:unsilence,
|
||||
:trust_level,
|
||||
:trust_level_lock,
|
||||
:add_group,
|
||||
:remove_group,
|
||||
:primary_group,
|
||||
:anonymize,
|
||||
:merge,
|
||||
:reset_bounce_score,
|
||||
:disable_second_factor,
|
||||
:delete_posts_batch,
|
||||
:sso_record]
|
||||
before_action :fetch_user,
|
||||
only: %i[
|
||||
suspend
|
||||
unsuspend
|
||||
log_out
|
||||
revoke_admin
|
||||
revoke_moderation
|
||||
grant_moderation
|
||||
approve
|
||||
activate
|
||||
deactivate
|
||||
silence
|
||||
unsilence
|
||||
trust_level
|
||||
trust_level_lock
|
||||
add_group
|
||||
remove_group
|
||||
primary_group
|
||||
anonymize
|
||||
merge
|
||||
reset_bounce_score
|
||||
disable_second_factor
|
||||
delete_posts_batch
|
||||
sso_record
|
||||
]
|
||||
|
||||
def index
|
||||
users = ::AdminUserIndexQuery.new(params).find_users
|
||||
@ -42,9 +45,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
@user = User.find_by(id: params[:id])
|
||||
raise Discourse::NotFound unless @user
|
||||
|
||||
similar_users = User.real
|
||||
.where.not(id: @user.id)
|
||||
.where(ip_address: @user.ip_address)
|
||||
similar_users = User.real.where.not(id: @user.id).where(ip_address: @user.ip_address)
|
||||
|
||||
render_serialized(
|
||||
@user,
|
||||
@ -64,7 +65,6 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
# DELETE action to delete penalty history for a user
|
||||
def penalty_history
|
||||
|
||||
# We don't delete any history, we merely remove the action type
|
||||
# with a removed type. It can still be viewed in the logs but
|
||||
# will not affect TL3 promotions.
|
||||
@ -87,16 +87,19 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
DB.exec(
|
||||
sql,
|
||||
UserHistory.actions.slice(
|
||||
:silence_user,
|
||||
:suspend_user,
|
||||
:unsilence_user,
|
||||
:unsuspend_user,
|
||||
:removed_silence_user,
|
||||
:removed_unsilence_user,
|
||||
:removed_suspend_user,
|
||||
:removed_unsuspend_user
|
||||
).merge(user_id: params[:user_id].to_i)
|
||||
UserHistory
|
||||
.actions
|
||||
.slice(
|
||||
:silence_user,
|
||||
:suspend_user,
|
||||
:unsilence_user,
|
||||
:unsuspend_user,
|
||||
:removed_silence_user,
|
||||
:removed_unsilence_user,
|
||||
:removed_suspend_user,
|
||||
:removed_unsuspend_user,
|
||||
)
|
||||
.merge(user_id: params[:user_id].to_i),
|
||||
)
|
||||
|
||||
render json: success_json
|
||||
@ -107,14 +110,21 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
if @user.suspended?
|
||||
suspend_record = @user.suspend_record
|
||||
message = I18n.t("user.already_suspended",
|
||||
staff: suspend_record.acting_user.username,
|
||||
time_ago: FreedomPatches::Rails4.time_ago_in_words(suspend_record.created_at, true, scope: :'datetime.distance_in_words_verbose')
|
||||
)
|
||||
message =
|
||||
I18n.t(
|
||||
"user.already_suspended",
|
||||
staff: suspend_record.acting_user.username,
|
||||
time_ago:
|
||||
FreedomPatches::Rails4.time_ago_in_words(
|
||||
suspend_record.created_at,
|
||||
true,
|
||||
scope: :"datetime.distance_in_words_verbose",
|
||||
),
|
||||
)
|
||||
return render json: failed_json.merge(message: message), status: 409
|
||||
end
|
||||
|
||||
params.require([:suspend_until, :reason])
|
||||
params.require(%i[suspend_until reason])
|
||||
|
||||
all_users = [@user]
|
||||
if Array === params[:other_user_ids]
|
||||
@ -133,12 +143,13 @@ class Admin::UsersController < Admin::StaffController
|
||||
User.transaction do
|
||||
user.save!
|
||||
|
||||
user_history = StaffActionLogger.new(current_user).log_user_suspend(
|
||||
user,
|
||||
params[:reason],
|
||||
message: message,
|
||||
post_id: params[:post_id]
|
||||
)
|
||||
user_history =
|
||||
StaffActionLogger.new(current_user).log_user_suspend(
|
||||
user,
|
||||
params[:reason],
|
||||
message: message,
|
||||
post_id: params[:post_id],
|
||||
)
|
||||
end
|
||||
user.logged_out
|
||||
|
||||
@ -147,7 +158,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
:critical_user_email,
|
||||
type: "account_suspended",
|
||||
user_id: user.id,
|
||||
user_history_id: user_history.id
|
||||
user_history_id: user_history.id,
|
||||
)
|
||||
end
|
||||
|
||||
@ -159,7 +170,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
user_history: user_history,
|
||||
post_id: params[:post_id],
|
||||
suspended_till: params[:suspend_until],
|
||||
suspended_at: DateTime.now
|
||||
suspended_at: DateTime.now,
|
||||
)
|
||||
end
|
||||
|
||||
@ -171,8 +182,8 @@ class Admin::UsersController < Admin::StaffController
|
||||
full_suspend_reason: user_history.try(:details),
|
||||
suspended_till: @user.suspended_till,
|
||||
suspended_at: @user.suspended_at,
|
||||
suspended_by: BasicUserSerializer.new(current_user, root: false).as_json
|
||||
}
|
||||
suspended_by: BasicUserSerializer.new(current_user, root: false).as_json,
|
||||
},
|
||||
)
|
||||
end
|
||||
|
||||
@ -185,12 +196,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
DiscourseEvent.trigger(:user_unsuspended, user: @user)
|
||||
|
||||
render_json_dump(
|
||||
suspension: {
|
||||
suspended_till: nil,
|
||||
suspended_at: nil
|
||||
}
|
||||
)
|
||||
render_json_dump(suspension: { suspended_till: nil, suspended_at: nil })
|
||||
end
|
||||
|
||||
def log_out
|
||||
@ -199,7 +205,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
@user.logged_out
|
||||
render json: success_json
|
||||
else
|
||||
render json: { error: I18n.t('admin_js.admin.users.id_not_found') }, status: 404
|
||||
render json: { error: I18n.t("admin_js.admin.users.id_not_found") }, status: 404
|
||||
end
|
||||
end
|
||||
|
||||
@ -237,7 +243,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
group = Group.find(params[:group_id].to_i)
|
||||
raise Discourse::NotFound unless group
|
||||
|
||||
return render_json_error(I18n.t('groups.errors.can_not_modify_automatic')) if group.automatic
|
||||
return render_json_error(I18n.t("groups.errors.can_not_modify_automatic")) if group.automatic
|
||||
guardian.ensure_can_edit!(group)
|
||||
|
||||
group.add(@user)
|
||||
@ -250,7 +256,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
group = Group.find(params[:group_id].to_i)
|
||||
raise Discourse::NotFound unless group
|
||||
|
||||
return render_json_error(I18n.t('groups.errors.can_not_modify_automatic')) if group.automatic
|
||||
return render_json_error(I18n.t("groups.errors.can_not_modify_automatic")) if group.automatic
|
||||
guardian.ensure_can_edit!(group)
|
||||
|
||||
if group.remove(@user)
|
||||
@ -266,9 +272,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
if group = Group.find(primary_group_id)
|
||||
guardian.ensure_can_change_primary_group!(@user, group)
|
||||
|
||||
if group.user_ids.include?(@user.id)
|
||||
@user.primary_group_id = primary_group_id
|
||||
end
|
||||
@user.primary_group_id = primary_group_id if group.user_ids.include?(@user.id)
|
||||
end
|
||||
else
|
||||
@user.primary_group_id = nil
|
||||
@ -304,9 +308,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
guardian.ensure_can_change_trust_level!(@user)
|
||||
|
||||
new_lock = params[:locked].to_s
|
||||
unless new_lock =~ /true|false/
|
||||
return render_json_error I18n.t('errors.invalid_boolean')
|
||||
end
|
||||
return render_json_error I18n.t("errors.invalid_boolean") unless new_lock =~ /true|false/
|
||||
|
||||
@user.manual_locked_trust_level = (new_lock == "true") ? @user.trust_level : nil
|
||||
@user.save
|
||||
@ -320,31 +322,38 @@ class Admin::UsersController < Admin::StaffController
|
||||
def approve
|
||||
guardian.ensure_can_approve!(@user)
|
||||
|
||||
reviewable = ReviewableUser.find_by(target: @user) ||
|
||||
Jobs::CreateUserReviewable.new.execute(user_id: @user.id).reviewable
|
||||
reviewable =
|
||||
ReviewableUser.find_by(target: @user) ||
|
||||
Jobs::CreateUserReviewable.new.execute(user_id: @user.id).reviewable
|
||||
|
||||
reviewable.perform(current_user, :approve_user)
|
||||
render body: nil
|
||||
end
|
||||
|
||||
def approve_bulk
|
||||
Reviewable.bulk_perform_targets(current_user, :approve_user, 'ReviewableUser', params[:users])
|
||||
Reviewable.bulk_perform_targets(current_user, :approve_user, "ReviewableUser", params[:users])
|
||||
render body: nil
|
||||
end
|
||||
|
||||
def activate
|
||||
guardian.ensure_can_activate!(@user)
|
||||
# ensure there is an active email token
|
||||
@user.email_tokens.create!(email: @user.email, scope: EmailToken.scopes[:signup]) if !@user.email_tokens.active.exists?
|
||||
if !@user.email_tokens.active.exists?
|
||||
@user.email_tokens.create!(email: @user.email, scope: EmailToken.scopes[:signup])
|
||||
end
|
||||
@user.activate
|
||||
StaffActionLogger.new(current_user).log_user_activate(@user, I18n.t('user.activated_by_staff'))
|
||||
StaffActionLogger.new(current_user).log_user_activate(@user, I18n.t("user.activated_by_staff"))
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
def deactivate
|
||||
guardian.ensure_can_deactivate!(@user)
|
||||
@user.deactivate(current_user)
|
||||
StaffActionLogger.new(current_user).log_user_deactivate(@user, I18n.t('user.deactivated_by_staff'), params.slice(:context))
|
||||
StaffActionLogger.new(current_user).log_user_deactivate(
|
||||
@user,
|
||||
I18n.t("user.deactivated_by_staff"),
|
||||
params.slice(:context),
|
||||
)
|
||||
refresh_browser @user
|
||||
render json: success_json
|
||||
end
|
||||
@ -354,10 +363,17 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
if @user.silenced?
|
||||
silenced_record = @user.silenced_record
|
||||
message = I18n.t("user.already_silenced",
|
||||
staff: silenced_record.acting_user.username,
|
||||
time_ago: FreedomPatches::Rails4.time_ago_in_words(silenced_record.created_at, true, scope: :'datetime.distance_in_words_verbose')
|
||||
)
|
||||
message =
|
||||
I18n.t(
|
||||
"user.already_silenced",
|
||||
staff: silenced_record.acting_user.username,
|
||||
time_ago:
|
||||
FreedomPatches::Rails4.time_ago_in_words(
|
||||
silenced_record.created_at,
|
||||
true,
|
||||
scope: :"datetime.distance_in_words_verbose",
|
||||
),
|
||||
)
|
||||
return render json: failed_json.merge(message: message), status: 409
|
||||
end
|
||||
|
||||
@ -370,15 +386,16 @@ class Admin::UsersController < Admin::StaffController
|
||||
user_history = nil
|
||||
|
||||
all_users.each do |user|
|
||||
silencer = UserSilencer.new(
|
||||
user,
|
||||
current_user,
|
||||
silenced_till: params[:silenced_till],
|
||||
reason: params[:reason],
|
||||
message_body: params[:message],
|
||||
keep_posts: true,
|
||||
post_id: params[:post_id]
|
||||
)
|
||||
silencer =
|
||||
UserSilencer.new(
|
||||
user,
|
||||
current_user,
|
||||
silenced_till: params[:silenced_till],
|
||||
reason: params[:reason],
|
||||
message_body: params[:message],
|
||||
keep_posts: true,
|
||||
post_id: params[:post_id],
|
||||
)
|
||||
|
||||
if silencer.silence
|
||||
user_history = silencer.user_history
|
||||
@ -386,7 +403,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
:critical_user_email,
|
||||
type: "account_silenced",
|
||||
user_id: user.id,
|
||||
user_history_id: user_history.id
|
||||
user_history_id: user_history.id,
|
||||
)
|
||||
end
|
||||
end
|
||||
@ -399,8 +416,8 @@ class Admin::UsersController < Admin::StaffController
|
||||
silence_reason: user_history.try(:details),
|
||||
silenced_till: @user.silenced_till,
|
||||
silenced_at: @user.silenced_at,
|
||||
silenced_by: BasicUserSerializer.new(current_user, root: false).as_json
|
||||
}
|
||||
silenced_by: BasicUserSerializer.new(current_user, root: false).as_json,
|
||||
},
|
||||
)
|
||||
end
|
||||
|
||||
@ -413,8 +430,8 @@ class Admin::UsersController < Admin::StaffController
|
||||
silenced: false,
|
||||
silence_reason: nil,
|
||||
silenced_till: nil,
|
||||
silenced_at: nil
|
||||
}
|
||||
silenced_at: nil,
|
||||
},
|
||||
)
|
||||
end
|
||||
|
||||
@ -428,11 +445,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
user_security_key.destroy_all
|
||||
StaffActionLogger.new(current_user).log_disable_second_factor_auth(@user)
|
||||
|
||||
Jobs.enqueue(
|
||||
:critical_user_email,
|
||||
type: "account_second_factor_disabled",
|
||||
user_id: @user.id
|
||||
)
|
||||
Jobs.enqueue(:critical_user_email, type: "account_second_factor_disabled", user_id: @user.id)
|
||||
|
||||
render json: success_json
|
||||
end
|
||||
@ -442,7 +455,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
guardian.ensure_can_delete_user!(user)
|
||||
|
||||
options = params.slice(:context, :delete_as_spammer)
|
||||
[:delete_posts, :block_email, :block_urls, :block_ip].each do |param_name|
|
||||
%i[delete_posts block_email block_urls block_ip].each do |param_name|
|
||||
options[param_name] = ActiveModel::Type::Boolean.new.cast(params[param_name])
|
||||
end
|
||||
options[:prepare_for_destroy] = true
|
||||
@ -453,15 +466,21 @@ class Admin::UsersController < Admin::StaffController
|
||||
render json: { deleted: true }
|
||||
else
|
||||
render json: {
|
||||
deleted: false,
|
||||
user: AdminDetailedUserSerializer.new(user, root: false).as_json
|
||||
}
|
||||
deleted: false,
|
||||
user: AdminDetailedUserSerializer.new(user, root: false).as_json,
|
||||
}
|
||||
end
|
||||
rescue UserDestroyer::PostsExistError
|
||||
render json: {
|
||||
deleted: false,
|
||||
message: I18n.t("user.cannot_delete_has_posts", username: user.username, count: user.posts.joins(:topic).count),
|
||||
}, status: 403
|
||||
deleted: false,
|
||||
message:
|
||||
I18n.t(
|
||||
"user.cannot_delete_has_posts",
|
||||
username: user.username,
|
||||
count: user.posts.joins(:topic).count,
|
||||
),
|
||||
},
|
||||
status: 403
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -482,9 +501,16 @@ class Admin::UsersController < Admin::StaffController
|
||||
return render body: nil, status: 404 unless SiteSetting.enable_discourse_connect
|
||||
|
||||
begin
|
||||
sso = DiscourseConnect.parse("sso=#{params[:sso]}&sig=#{params[:sig]}", secure_session: secure_session)
|
||||
sso =
|
||||
DiscourseConnect.parse(
|
||||
"sso=#{params[:sso]}&sig=#{params[:sig]}",
|
||||
secure_session: secure_session,
|
||||
)
|
||||
rescue DiscourseConnect::ParseError
|
||||
return render json: failed_json.merge(message: I18n.t("discourse_connect.login_error")), status: 422
|
||||
return(
|
||||
render json: failed_json.merge(message: I18n.t("discourse_connect.login_error")),
|
||||
status: 422
|
||||
)
|
||||
end
|
||||
|
||||
begin
|
||||
@ -494,7 +520,8 @@ class Admin::UsersController < Admin::StaffController
|
||||
rescue ActiveRecord::RecordInvalid => ex
|
||||
render json: failed_json.merge(message: ex.message), status: 403
|
||||
rescue DiscourseConnect::BlankExternalId => ex
|
||||
render json: failed_json.merge(message: I18n.t('discourse_connect.blank_id_error')), status: 422
|
||||
render json: failed_json.merge(message: I18n.t("discourse_connect.blank_id_error")),
|
||||
status: 422
|
||||
end
|
||||
end
|
||||
|
||||
@ -510,12 +537,13 @@ class Admin::UsersController < Admin::StaffController
|
||||
block_urls: true,
|
||||
block_ip: true,
|
||||
delete_as_spammer: true,
|
||||
context: I18n.t("user.destroy_reasons.same_ip_address", ip_address: params[:ip])
|
||||
context: I18n.t("user.destroy_reasons.same_ip_address", ip_address: params[:ip]),
|
||||
}
|
||||
|
||||
AdminUserIndexQuery.new(params).find_users(50).each do |user|
|
||||
user_destroyer.destroy(user, options)
|
||||
end
|
||||
AdminUserIndexQuery
|
||||
.new(params)
|
||||
.find_users(50)
|
||||
.each { |user| user_destroyer.destroy(user, options) }
|
||||
|
||||
render json: success_json
|
||||
end
|
||||
@ -536,7 +564,8 @@ class Admin::UsersController < Admin::StaffController
|
||||
if user = UserAnonymizer.new(@user, current_user, opts).make_anonymous
|
||||
render json: success_json.merge(username: user.username)
|
||||
else
|
||||
render json: failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json)
|
||||
render json:
|
||||
failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json)
|
||||
end
|
||||
end
|
||||
|
||||
@ -547,7 +576,12 @@ class Admin::UsersController < Admin::StaffController
|
||||
|
||||
guardian.ensure_can_merge_users!(@user, target_user)
|
||||
|
||||
Jobs.enqueue(:merge_user, user_id: @user.id, target_user_id: target_user.id, current_user_id: current_user.id)
|
||||
Jobs.enqueue(
|
||||
:merge_user,
|
||||
user_id: @user.id,
|
||||
target_user_id: target_user.id,
|
||||
current_user_id: current_user.id,
|
||||
)
|
||||
render json: success_json
|
||||
end
|
||||
|
||||
@ -566,24 +600,25 @@ class Admin::UsersController < Admin::StaffController
|
||||
private
|
||||
|
||||
def perform_post_action
|
||||
return unless params[:post_id].present? &&
|
||||
params[:post_action].present?
|
||||
return unless params[:post_id].present? && params[:post_action].present?
|
||||
|
||||
if post = Post.where(id: params[:post_id]).first
|
||||
case params[:post_action]
|
||||
when 'delete'
|
||||
when "delete"
|
||||
PostDestroyer.new(current_user, post).destroy if guardian.can_delete_post_or_topic?(post)
|
||||
when "delete_replies"
|
||||
PostDestroyer.delete_with_replies(current_user, post) if guardian.can_delete_post_or_topic?(post)
|
||||
when 'edit'
|
||||
if guardian.can_delete_post_or_topic?(post)
|
||||
PostDestroyer.delete_with_replies(current_user, post)
|
||||
end
|
||||
when "edit"
|
||||
revisor = PostRevisor.new(post)
|
||||
|
||||
# Take what the moderator edited in as gospel
|
||||
revisor.revise!(
|
||||
current_user,
|
||||
{ raw: params[:post_edit] },
|
||||
{ raw: params[:post_edit] },
|
||||
skip_validations: true,
|
||||
skip_revision: true
|
||||
skip_revision: true,
|
||||
)
|
||||
end
|
||||
end
|
||||
@ -597,5 +632,4 @@ class Admin::UsersController < Admin::StaffController
|
||||
def refresh_browser(user)
|
||||
MessageBus.publish "/file-change", ["refresh"], user_ids: [user.id]
|
||||
end
|
||||
|
||||
end
|
||||
|
Reference in New Issue
Block a user