FIX: invited users get clearer messaging when setting a password for the first time

This commit is contained in:
Neil Lalonde 2014-01-21 12:42:20 -05:00
parent 3c3449aa1b
commit ba74226346
7 changed files with 48 additions and 7 deletions

View File

@ -43,7 +43,14 @@
<div class="control-group">
<label class="control-label">{{i18n user.password.title}}</label>
<div class="controls">
<a href="#" {{action changePassword}} class='btn'><i class="fa fa-envelope"></i>{{i18n user.change_password.action}}</a> {{passwordProgress}}
<a href="#" {{action changePassword}} class='btn'><i class="fa fa-envelope"></i>
{{#if no_password}}
{{i18n user.change_password.set_password}}
{{else}}
{{i18n user.change_password.action}}
{{/if}}
</a>
{{passwordProgress}}
</div>
</div>

View File

@ -25,7 +25,9 @@ class UserNotifications < ActionMailer::Base
end
def forgot_password(user, opts={})
build_email(user.email, template: "user_notifications.forgot_password", email_token: opts[:email_token])
build_email( user.email,
template: user.has_password? ? "user_notifications.forgot_password" : "user_notifications.set_password",
email_token: opts[:email_token])
end
def digest(user, opts={})

View File

@ -260,6 +260,10 @@ class User < ActiveRecord::Base
!!@password_required
end
def has_password?
password_hash.present?
end
def password_validator
PasswordValidator.new(attributes: :password).validate_each(self, :password, @raw_password)
end

View File

@ -15,7 +15,8 @@ class CurrentUserSerializer < BasicUserSerializer
:dynamic_favicon,
:trust_level,
:can_edit,
:can_invite_to_forum
:can_invite_to_forum,
:no_password
def include_site_flagged_posts_count?
object.staff?
@ -45,4 +46,12 @@ class CurrentUserSerializer < BasicUserSerializer
scope.can_invite_to_forum?
end
def no_password
true
end
def include_no_password?
!object.has_password?
end
end

View File

@ -23,14 +23,20 @@
</p>
<% else %>
<%if @user.present? %>
<h3><%= t 'password_reset.choose_new' %></h3>
<h3>
<% if @user.has_password? %>
<%= t 'password_reset.choose_new' %>
<% else %>
<%= t 'password_reset.choose' %>
<% end %>
</h3>
<%=form_tag({}, method: :put) do %>
<p>
<input id="user_password" name="password" size="30" type="password">
</p>
<p>
<%=submit_tag(t('password_reset.update'), class: 'btn')%>
<%=submit_tag( @user.has_password? ? t('password_reset.update') : t('password_reset.save'), class: 'btn')%>
</p>
<%end%>
<%end%>

View File

@ -246,6 +246,7 @@ en:
in_progress: "(sending email)"
error: "(error)"
action: "Send Password Reset Email"
set_password: "Set Password"
change_about:
title: "Change About Me"

View File

@ -300,8 +300,10 @@ en:
password_reset:
no_token: "Sorry, your token has expired. Please try resetting your password again."
choose_new: "Please choose a new password"
update: 'update password'
title: 'reset password'
choose: "Please choose a password"
update: 'Update Password'
save: 'Set Password'
title: 'Reset Password'
success: "You successfully changed your password and are now logged in."
success_unapproved: "You successfully changed your password."
continue: "Continue to %{site_name}"
@ -1218,6 +1220,16 @@ en:
Click the following link to choose a new password:
%{base_url}/users/password-reset/%{email_token}
set_password:
subject_template: "[%{site_name}] Set Password"
text_body_template: |
Somebody asked to add a password to your account on [%{site_name}](%{base_url}). Alternatively, you can log in using any supported online service (Google, Facebook, etc) that is associated with this validated email address.
If you did not make this request, you can safely ignore this email.
Click the following link to choose a password:
%{base_url}/users/password-reset/%{email_token}
authorize_email:
subject_template: "[%{site_name}] Confirm your new email address"
text_body_template: |