FIX: Don't show "resend email" option when user approval is on

This commit is contained in:
Robin Ward
2017-05-25 15:28:39 -04:00
parent 29fac1ac18
commit b584264d82
4 changed files with 30 additions and 7 deletions

View File

@ -1,7 +1,7 @@
<div class='ac-message'> <div class='ac-message'>
{{{accountCreated.message}}} {{{accountCreated.message}}}
</div> </div>
{{#if accountCreated.username}} {{#if accountCreated.show_controls}}
{{activation-controls sendActivationEmail=(action "sendActivationEmail") {{activation-controls sendActivationEmail=(action "sendActivationEmail")
editActivationEmail=(action "editActivationEmail")}} editActivationEmail=(action "editActivationEmail")}}
{{/if}} {{/if}}

View File

@ -1,7 +1,10 @@
{{d-button action=sendActivationEmail {{#unless siteSettings.must_approve_users}}
label="login.resend_title" {{d-button action=sendActivationEmail
icon="envelope" label="login.resend_title"
class="btn-primary resend"}} icon="envelope"
class="btn-primary resend"}}
{{/unless}}
{{d-button action=editActivationEmail {{d-button action=editActivationEmail
label="login.change_email" label="login.change_email"
icon="pencil" icon="pencil"

View File

@ -537,12 +537,16 @@ class UsersController < ApplicationController
@custom_body_class = "static-account-created" @custom_body_class = "static-account-created"
@message = session['user_created_message'] || I18n.t('activation.missing_session') @message = session['user_created_message'] || I18n.t('activation.missing_session')
@account_created = { message: @message } @account_created = {
message: @message,
show_controls: false
}
if session_user_id = session[SessionController::ACTIVATE_USER_KEY] if session_user_id = session[SessionController::ACTIVATE_USER_KEY]
if user = User.where(id: session_user_id.to_i).first if user = User.where(id: session_user_id.to_i).first
@account_created[:username] = user.username @account_created[:username] = user.username
@account_created[:email] = user.email @account_created[:email] = user.email
@account_created[:show_controls] = true
end end
end end
@ -618,6 +622,8 @@ class UsersController < ApplicationController
RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed! RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed!
end end
raise Discourse::InvalidAccess.new if SiteSetting.must_approve_users?
if params[:username].present? if params[:username].present?
@user = User.find_by_username_or_email(params[:username].to_s) @user = User.find_by_username_or_email(params[:username].to_s)
end end
@ -626,7 +632,7 @@ class UsersController < ApplicationController
if !current_user&.staff? && if !current_user&.staff? &&
@user.id != session[SessionController::ACTIVATE_USER_KEY] @user.id != session[SessionController::ACTIVATE_USER_KEY]
raise Discourse::InvalidAccess raise Discourse::InvalidAccess.new
end end
session.delete(SessionController::ACTIVATE_USER_KEY) session.delete(SessionController::ACTIVATE_USER_KEY)

View File

@ -1461,6 +1461,20 @@ describe UsersController do
end end
end end
context "approval is enabled" do
before do
SiteSetting.must_approve_users = true
end
it "should raise an error" do
unconfirmed_email_user = Fabricate(:user, active: true)
unconfirmed_email_user.email_tokens.create(email: unconfirmed_email_user.email)
session[SessionController::ACTIVATE_USER_KEY] = unconfirmed_email_user.id
xhr :post, :send_activation_email, username: unconfirmed_email_user.username
expect(response.status).to eq(403)
end
end
describe 'when user does not have a valid session' do describe 'when user does not have a valid session' do
it 'should not be valid' do it 'should not be valid' do
user = Fabricate(:user) user = Fabricate(:user)