* Make IP bans soft deletable. * Add a hit counter to track how many times an IP ban has blocked someone. * Add a last hit timestamp to track when the IP ban last blocked someone. * Add a new type of IP ban, the signup ban. Signup bans restrict new signups from editing anything until they've verified their email address.
86 lines
1.9 KiB
Ruby
86 lines
1.9 KiB
Ruby
class ModAction < ApplicationRecord
|
|
belongs_to :creator, :class_name => "User"
|
|
|
|
api_attributes including: [:category_id]
|
|
|
|
# ####DIVISIONS#####
|
|
# Groups: 0-999
|
|
# Individual: 1000-1999
|
|
# ####Actions#####
|
|
# Create: 0
|
|
# Update: 1
|
|
# Delete: 2
|
|
# Undelete: 3
|
|
# Ban: 4
|
|
# Unban: 5
|
|
# Misc: 6-19
|
|
enum category: {
|
|
user_delete: 2,
|
|
user_ban: 4,
|
|
user_unban: 5,
|
|
user_name_change: 6,
|
|
user_level_change: 7,
|
|
user_approval_privilege: 8,
|
|
user_upload_privilege: 9,
|
|
user_account_upgrade: 19,
|
|
user_feedback_update: 21,
|
|
user_feedback_delete: 22,
|
|
post_delete: 42,
|
|
post_undelete: 43,
|
|
post_ban: 44,
|
|
post_unban: 45,
|
|
post_permanent_delete: 46,
|
|
post_move_favorites: 47,
|
|
pool_delete: 62,
|
|
pool_undelete: 63,
|
|
artist_ban: 184,
|
|
artist_unban: 185,
|
|
comment_update: 81,
|
|
comment_delete: 82,
|
|
forum_topic_delete: 202,
|
|
forum_topic_undelete: 203,
|
|
forum_topic_lock: 206,
|
|
forum_post_update: 101,
|
|
forum_post_delete: 102,
|
|
tag_alias_create: 120,
|
|
tag_alias_update: 121,
|
|
tag_implication_create: 140,
|
|
tag_implication_update: 141,
|
|
ip_ban_create: 160,
|
|
ip_ban_delete: 162,
|
|
ip_ban_undelete: 163,
|
|
mass_update: 1000,
|
|
bulk_revert: 1001, # XXX unused
|
|
other: 2000
|
|
}
|
|
|
|
def self.visible(user)
|
|
if user.is_moderator?
|
|
all
|
|
else
|
|
where.not(category: [:ip_ban_create, :ip_ban_delete])
|
|
end
|
|
end
|
|
|
|
def self.search(params)
|
|
q = super
|
|
|
|
q = q.search_attributes(params, :creator, :category, :description)
|
|
q = q.text_attribute_matches(:description, params[:description_matches])
|
|
|
|
q.apply_default_order(params)
|
|
end
|
|
|
|
def category_id
|
|
self.class.categories[category]
|
|
end
|
|
|
|
def self.log(desc, cat = :other, user = CurrentUser.user)
|
|
create(creator: user, description: desc, category: categories[cat])
|
|
end
|
|
|
|
def self.available_includes
|
|
[:creator]
|
|
end
|
|
end
|