mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:01:14 +08:00
clean up first day user definition and object model
This commit is contained in:
@ -88,7 +88,7 @@ class Post < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def limit_posts_per_day
|
def limit_posts_per_day
|
||||||
if user.created_at > 1.day.ago && post_number > 1
|
if user.first_day_user? && post_number > 1
|
||||||
RateLimiter.new(user, "first-day-replies-per-day", SiteSetting.max_replies_in_first_day, 1.day.to_i)
|
RateLimiter.new(user, "first-day-replies-per-day", SiteSetting.max_replies_in_first_day, 1.day.to_i)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -250,7 +250,7 @@ class Topic < ActiveRecord::Base
|
|||||||
# Additional rate limits on topics: per day and private messages per day
|
# Additional rate limits on topics: per day and private messages per day
|
||||||
def limit_topics_per_day
|
def limit_topics_per_day
|
||||||
apply_per_day_rate_limit_for("topics", :max_topics_per_day)
|
apply_per_day_rate_limit_for("topics", :max_topics_per_day)
|
||||||
limit_first_day_topics_per_day if user.added_a_day_ago?
|
limit_first_day_topics_per_day if user.first_day_user?
|
||||||
end
|
end
|
||||||
|
|
||||||
def limit_private_messages_per_day
|
def limit_private_messages_per_day
|
||||||
|
@ -311,6 +311,12 @@ class User < ActiveRecord::Base
|
|||||||
self.password_hash == hash_password(password, salt)
|
self.password_hash == hash_password(password, salt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def first_day_user?
|
||||||
|
!staff? &&
|
||||||
|
trust_level < TrustLevel[2] &&
|
||||||
|
created_at >= 24.hours.ago
|
||||||
|
end
|
||||||
|
|
||||||
def new_user?
|
def new_user?
|
||||||
(created_at >= 24.hours.ago || trust_level == TrustLevel[0]) &&
|
(created_at >= 24.hours.ago || trust_level == TrustLevel[0]) &&
|
||||||
trust_level < TrustLevel[2] &&
|
trust_level < TrustLevel[2] &&
|
||||||
@ -562,10 +568,6 @@ class User < ActiveRecord::Base
|
|||||||
uploaded_avatar.present?
|
uploaded_avatar.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def added_a_day_ago?
|
|
||||||
created_at > 1.day.ago
|
|
||||||
end
|
|
||||||
|
|
||||||
def generate_api_key(created_by)
|
def generate_api_key(created_by)
|
||||||
if api_key.present?
|
if api_key.present?
|
||||||
api_key.regenerate!(created_by)
|
api_key.regenerate!(created_by)
|
||||||
|
@ -722,21 +722,17 @@ describe User do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#added_a_day_ago?" do
|
describe "#first_day_user?" do
|
||||||
context "when user is more than a day old" do
|
|
||||||
subject(:user) { Fabricate(:user, created_at: Date.today - 2.days) }
|
|
||||||
|
|
||||||
it "returns false" do
|
def test_user?(opts={})
|
||||||
expect(user).to_not be_added_a_day_ago
|
Fabricate.build(:user, {created_at: Time.now}.merge(opts)).first_day_user?
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "is less than a day old" do
|
it "works" do
|
||||||
subject(:user) { Fabricate(:user) }
|
expect(test_user?).to eq(true)
|
||||||
|
expect(test_user?(moderator: true)).to eq(false)
|
||||||
it "returns true" do
|
expect(test_user?(trust_level: TrustLevel[2])).to eq(false)
|
||||||
expect(user).to be_added_a_day_ago
|
expect(test_user?(created_at: 2.days.ago)).to eq(false)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user