Class: RailsImagePostSolution::Admin::UsersController
Instance Method Summary
collapse
#default_url_options, #require_admin, #require_login
Instance Method Details
#ban ⇒ Object
73
74
75
76
77
78
79
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 73
def ban
reason = params[:reason]
@user.ban!(reason: reason)
redirect_to admin_user_path(@user), notice: I18n.t("admin.flash.user_banned", name: @user.display_name)
end
|
#index ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 10
def index
@status_filter = params[:status] || "all"
@users = User.order(created_at: :desc)
case @status_filter
when "active"
@users = @users.select(&:active?)
when "suspended"
@users = @users.select(&:suspended?)
when "banned"
@users = @users.select(&:banned?)
when "admin"
@users = @users.where(admin: true)
end
@users = @users.first(100)
@stats = {
total: User.count,
active: User.all.count(&:active?),
suspended: User.all.count(&:suspended?),
banned: User.all.count(&:banned?),
admin: User.where(admin: true).count
}
end
|
#show ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 39
def show
@stages = @user.stages.recent.limit(10)
@comments = @user..order(created_at: :desc).limit(10)
@reports_made = ImageReport.where(user_id: @user.id).order(created_at: :desc).limit(10)
@reports_received = ImageReport
.joins(active_storage_attachment: :blob)
.where(active_storage_attachments: { record_type: %w[Stage MultiplayRecruitmentComment] })
.where("active_storage_attachments.record_id IN (
SELECT id FROM stages WHERE user_id = :user_id
UNION
SELECT id FROM multiplay_recruitment_comments WHERE user_id = :user_id
)", user_id: @user.id)
.order(created_at: :desc)
.limit(10)
end
|
#suspend ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 57
def suspend
duration_days = params[:duration]&.to_i || 7
reason = params[:reason]
@user.suspend!(reason: reason, duration: duration_days.days)
redirect_to admin_user_path(@user),
notice: I18n.t("admin.flash.user_suspended", name: @user.display_name, days: duration_days)
end
|
#unban ⇒ Object
81
82
83
84
85
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 81
def unban
@user.unban!
redirect_to admin_user_path(@user), notice: I18n.t("admin.flash.user_unbanned", name: @user.display_name)
end
|
#unsuspend ⇒ Object
67
68
69
70
71
|
# File 'app/controllers/rails_image_post_solution/admin/users_controller.rb', line 67
def unsuspend
@user.unsuspend!
redirect_to admin_user_path(@user), notice: I18n.t("admin.flash.user_unsuspended", name: @user.display_name)
end
|