Merge pull request #1131 from novemberkilo/feature/temporary-boost-trust-levels

Feature: Admin can modify user trust levels
This commit is contained in:
Robin Ward
2013-07-04 06:57:59 -07:00
11 changed files with 186 additions and 3 deletions
+40
View File
@@ -0,0 +1,40 @@
require_dependency 'promotion'
class BoostTrustLevel
def initialize(user, level)
@user = user
@level = level.to_i
@promotion = Promotion.new(@user)
@trust_levels = TrustLevel.levels
end
def save!
if @level < @user.trust_level
demote!
else
@user.update_attributes!(trust_level: @level)
end
end
protected
def demote!
current_trust_level = @user.trust_level
@user.update_attributes!(trust_level: @level)
if @promotion.review
@user.update_attributes!(trust_level: current_trust_level)
raise Discourse::InvalidAccess.new, I18n.t('trust_levels.change_failed_explanation',
user_name: @user.name,
new_trust_level: trust_level_lookup(@level),
current_trust_level: trust_level_lookup(current_trust_level))
else
true
end
end
def trust_level_lookup(level)
@trust_levels.key(level).id2name
end
end
+4
View File
@@ -137,6 +137,10 @@ class Guardian
user && is_staff?
end
def can_change_trust_level?(user)
can_administer?(user)
end
def can_block_user?(user)
user && is_staff? && not(user.staff?)
end