FEATURE: implement lock/unlock trust level mechanics

This commit is contained in:
Sam
2014-09-30 13:12:33 +10:00
parent e665bfd72a
commit 0fc6c751cb
9 changed files with 52 additions and 37 deletions

View File

@ -128,7 +128,20 @@ class Admin::UsersController < Admin::AdminController
def trust_level
guardian.ensure_can_change_trust_level!(@user)
@user.change_trust_level!(params[:level].to_i, log_action_for: current_user)
level = params[:level].to_i
if !@user.trust_level_locked && [0,1,2].include?(level) && Promotion.send("tl#{level+1}_met?", @user)
@user.trust_level_locked = true
@user.save
end
if !@user.trust_level_locked && level == 3 && Promotion.tl3_lost?(@user)
@user.trust_level_locked = true
@user.save
end
@user.change_trust_level!(level, log_action_for: current_user)
render_serialized(@user, AdminUserSerializer)
rescue Discourse::InvalidAccess => e
@ -138,13 +151,23 @@ class Admin::UsersController < Admin::AdminController
def trust_level_lock
guardian.ensure_can_change_trust_level!(@user)
new_lock = params[:locked]
unless new_lock =~ /t|f|true|false/
new_lock = params[:locked].to_s
unless new_lock =~ /true|false/
return render_json_error I18n.t('errors.invalid_boolaen')
end
@user.trust_level_locked = !!(new_lock =~ /t|true/)
@user.trust_level_locked = new_lock == "true"
@user.save
unless @user.trust_level_locked
p = Promotion.new(@user)
2.times{ p.review }
p.review_tl2
if @user.trust_level == 3 && Promotion.tl3_lost?(@user)
@user.change_trust_level!(2, log_action_for: current_user)
end
end
render nothing: true
end