mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
FEATURE: implement lock/unlock trust level mechanics
This commit is contained in:
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user