diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/confirmations_controller.rb | 5 | ||||
-rw-r--r-- | app/controllers/profiles/emails_controller.rb | 5 | ||||
-rw-r--r-- | app/mailers/emails/profile.rb | 6 | ||||
-rw-r--r-- | app/models/email.rb | 3 | ||||
-rw-r--r-- | app/services/notification_service.rb | 7 | ||||
-rw-r--r-- | app/views/devise/mailer/_confirmation_instructions_secondary.html.haml | 8 | ||||
-rw-r--r-- | app/views/devise/mailer/_confirmation_instructions_secondary.text.erb | 7 | ||||
-rw-r--r-- | app/views/devise/mailer/confirmation_instructions.html.haml | 31 | ||||
-rw-r--r-- | app/views/devise/mailer/confirmation_instructions.text.erb | 4 | ||||
-rw-r--r-- | app/views/notify/new_email_email.html.haml | 10 | ||||
-rw-r--r-- | app/views/notify/new_email_email.text.erb | 7 | ||||
-rw-r--r-- | app/views/profiles/emails/index.html.haml | 2 |
12 files changed, 45 insertions, 50 deletions
diff --git a/app/controllers/confirmations_controller.rb b/app/controllers/confirmations_controller.rb index 306afb65f10..51c26b9c17e 100644 --- a/app/controllers/confirmations_controller.rb +++ b/app/controllers/confirmations_controller.rb @@ -11,11 +11,12 @@ class ConfirmationsController < Devise::ConfirmationsController end def after_confirmation_path_for(resource_name, resource) - if signed_in?(resource_name) + # incoming resource can either be a :user or an :email + if signed_in?(:user) after_sign_in_path_for(resource) else flash[:notice] += " Please sign in." - new_session_path(resource_name) + new_session_path(:user) end end end diff --git a/app/controllers/profiles/emails_controller.rb b/app/controllers/profiles/emails_controller.rb index ddb67d1c4d1..60426e4f14f 100644 --- a/app/controllers/profiles/emails_controller.rb +++ b/app/controllers/profiles/emails_controller.rb @@ -6,10 +6,7 @@ class Profiles::EmailsController < Profiles::ApplicationController def create @email = Emails::CreateService.new(current_user, email_params).execute - - if @email.errors.blank? - NotificationService.new.new_email(@email) - else + unless @email.errors.blank? flash[:alert] = @email.errors.full_messages.first end diff --git a/app/mailers/emails/profile.rb b/app/mailers/emails/profile.rb index c401030e34a..4f5edeb9bda 100644 --- a/app/mailers/emails/profile.rb +++ b/app/mailers/emails/profile.rb @@ -7,12 +7,6 @@ module Emails mail(to: @user.notification_email, subject: subject("Account was created for you")) end - def new_email_email(email_id) - @email = Email.find(email_id) - @current_user = @user = @email.user - mail(to: @user.notification_email, subject: subject("Email was added to your account")) - end - def new_ssh_key_email(key_id) @key = Key.find_by(id: key_id) diff --git a/app/models/email.rb b/app/models/email.rb index 826d4f16edb..6254d66cad9 100644 --- a/app/models/email.rb +++ b/app/models/email.rb @@ -7,6 +7,9 @@ class Email < ActiveRecord::Base validates :email, presence: true, uniqueness: true, email: true validate :unique_email, if: ->(email) { email.email_changed? } + devise :confirmable + self.reconfirmable = false # currently email can't be changed, no need to reconfirm + def email=(value) write_attribute(:email, value.downcase.strip) end diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index e2a80db06a6..8d5da459882 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -31,13 +31,6 @@ class NotificationService end end - # Always notify user about email added to profile - def new_email(email) - if email.user&.can?(:receive_notifications) - mailer.new_email_email(email.id).deliver_later - end - end - # When create an issue we should send an email to: # # * issue assignee if their notification level is not Disabled diff --git a/app/views/devise/mailer/_confirmation_instructions_secondary.html.haml b/app/views/devise/mailer/_confirmation_instructions_secondary.html.haml new file mode 100644 index 00000000000..a716d98415c --- /dev/null +++ b/app/views/devise/mailer/_confirmation_instructions_secondary.html.haml @@ -0,0 +1,8 @@ +#content + = email_default_heading("#{@resource.user.name}, you've added a secondary email!") + %p Click the link below to confirm your email address (#{@resource.email}) +#cta + = link_to 'Confirm your email address', confirmation_url(@resource, confirmation_token: @token) +%p + If this email was added in error, you can remove it here: + = link_to "Emails", profile_emails_url diff --git a/app/views/devise/mailer/_confirmation_instructions_secondary.text.erb b/app/views/devise/mailer/_confirmation_instructions_secondary.text.erb new file mode 100644 index 00000000000..2d8de854cf6 --- /dev/null +++ b/app/views/devise/mailer/_confirmation_instructions_secondary.text.erb @@ -0,0 +1,7 @@ +<%= @resource.user.name %>, you've added a secondary email! + +You can confirm your email (<%= @resource.email %>) through the link below: + +<%= confirmation_url(@resource, confirmation_token: @token) %> + +If this email was added in error, you can remove it here: <%= profile_emails_url %> diff --git a/app/views/devise/mailer/confirmation_instructions.html.haml b/app/views/devise/mailer/confirmation_instructions.html.haml index a508b7537a2..c9e13a636d7 100644 --- a/app/views/devise/mailer/confirmation_instructions.html.haml +++ b/app/views/devise/mailer/confirmation_instructions.html.haml @@ -1,15 +1,18 @@ -- if @resource.unconfirmed_email.present? - #content - = email_default_heading(@resource.unconfirmed_email) - %p Click the link below to confirm your email address. - #cta - = link_to 'Confirm your email address', confirmation_url(@resource, confirmation_token: @token) +- if @resource.is_a?(Email) + = render partial: 'confirmation_instructions_secondary' - else - #content - - if Gitlab.com? - = email_default_heading('Thanks for signing up to GitLab!') - - else - = email_default_heading("Welcome, #{@resource.name}!") - %p To get started, click the link below to confirm your account. - #cta - = link_to 'Confirm your account', confirmation_url(@resource, confirmation_token: @token) + - if @resource.unconfirmed_email.present? + #content + = email_default_heading(@resource.unconfirmed_email) + %p Click the link below to confirm your email address. + #cta + = link_to 'Confirm your email address', confirmation_url(@resource, confirmation_token: @token) + - else + #content + - if Gitlab.com? + = email_default_heading('Thanks for signing up to GitLab!') + - else + = email_default_heading("Welcome, #{@resource.name}!") + %p To get started, click the link below to confirm your account. + #cta + = link_to 'Confirm your account', confirmation_url(@resource, confirmation_token: @token) diff --git a/app/views/devise/mailer/confirmation_instructions.text.erb b/app/views/devise/mailer/confirmation_instructions.text.erb index 9f76edb76a4..d4bfb3af76f 100644 --- a/app/views/devise/mailer/confirmation_instructions.text.erb +++ b/app/views/devise/mailer/confirmation_instructions.text.erb @@ -1,3 +1,6 @@ +<% if @resource.is_a?(Email) %> +<%= render partial: 'confirmation_instructions_secondary' %> +<% else %> Welcome, <%= @resource.name %>! <% if @resource.unconfirmed_email.present? %> @@ -7,3 +10,4 @@ You can confirm your account through the link below: <% end %> <%= confirmation_url(@resource, confirmation_token: @token) %> +<% end %> diff --git a/app/views/notify/new_email_email.html.haml b/app/views/notify/new_email_email.html.haml deleted file mode 100644 index 4a0448a573c..00000000000 --- a/app/views/notify/new_email_email.html.haml +++ /dev/null @@ -1,10 +0,0 @@ -%p - Hi #{@user.name}! -%p - A new email was added to your account: -%p - email: - %code= @email.email -%p - If this email was added in error, you can remove it here: - = link_to "Emails", profile_emails_url diff --git a/app/views/notify/new_email_email.text.erb b/app/views/notify/new_email_email.text.erb deleted file mode 100644 index 51cba99ad0d..00000000000 --- a/app/views/notify/new_email_email.text.erb +++ /dev/null @@ -1,7 +0,0 @@ -Hi <%= @user.name %>! - -A new email was added to your account: - -email.................. <%= @email.email %> - -If this email was added in error, you can remove it here: <%= profile_emails_url %> diff --git a/app/views/profiles/emails/index.html.haml b/app/views/profiles/emails/index.html.haml index 612ecbbb96a..a653df98bc1 100644 --- a/app/views/profiles/emails/index.html.haml +++ b/app/views/profiles/emails/index.html.haml @@ -47,4 +47,6 @@ %span.label.label-info Public email - if email.email === current_user.notification_email %span.label.label-info Notification email + - if !email.confirmed? + %span.label.label-warning Unconfirmed = link_to 'Remove', profile_email_path(email), data: { confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-sm btn-warning prepend-left-10' |