summaryrefslogtreecommitdiff
path: root/app/mailers/emails/profile.rb
blob: f967323f849cdc2f2790fad7ce3868df5cb9cc91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# frozen_string_literal: true

module Emails
  module Profile
    def new_user_email(user_id, token = nil)
      @current_user = @user = User.find(user_id)
      @target_url = user_url(@user)
      @token = token
      mail(to: @user.notification_email, subject: subject("Account was created for you"))
    end

    def instance_access_request_email(user, recipient)
      @user = user
      @recipient = recipient

      profile_email_with_layout(
        to: recipient.notification_email,
        subject: subject(_("GitLab Account Request")))
    end

    def user_admin_rejection_email(name, email)
      @name = name

      profile_email_with_layout(
        to: email,
        subject: subject(_("GitLab account request rejected")))
    end

    # rubocop: disable CodeReuse/ActiveRecord
    def new_ssh_key_email(key_id)
      @key = Key.find_by(id: key_id)

      return unless @key

      @current_user = @user = @key.user
      @target_url = user_url(@user)
      mail(to: @user.notification_email, subject: subject("SSH key was added to your account"))
    end
    # rubocop: enable CodeReuse/ActiveRecord

    # rubocop: disable CodeReuse/ActiveRecord
    def new_gpg_key_email(gpg_key_id)
      @gpg_key = GpgKey.find_by(id: gpg_key_id)

      return unless @gpg_key

      @current_user = @user = @gpg_key.user
      @target_url = user_url(@user)
      mail(to: @user.notification_email, subject: subject("GPG key was added to your account"))
    end
    # rubocop: enable CodeReuse/ActiveRecord

    def access_token_about_to_expire_email(user, token_names)
      return unless user

      @user = user
      @token_names = token_names
      @target_url = profile_personal_access_tokens_url
      @days_to_expire = PersonalAccessToken::DAYS_TO_EXPIRE

      Gitlab::I18n.with_locale(@user.preferred_language) do
        mail(to: @user.notification_email, subject: subject(_("Your personal access tokens will expire in %{days_to_expire} days or less") % { days_to_expire: @days_to_expire }))
      end
    end

    def access_token_expired_email(user)
      return unless user && user.active?

      @user = user
      @target_url = profile_personal_access_tokens_url

      Gitlab::I18n.with_locale(@user.preferred_language) do
        mail(to: @user.notification_email, subject: subject(_("Your personal access token has expired")))
      end
    end

    def ssh_key_expired_email(user, fingerprints)
      return unless user&.active?

      @user = user
      @fingerprints = fingerprints
      @target_url = profile_keys_url

      Gitlab::I18n.with_locale(@user.preferred_language) do
        mail(to: @user.notification_email, subject: subject(_("Your SSH key has expired")))
      end
    end

    def ssh_key_expiring_soon_email(user, fingerprints)
      return unless user&.active?

      @user = user
      @fingerprints = fingerprints
      @target_url = profile_keys_url

      Gitlab::I18n.with_locale(@user.preferred_language) do
        mail(to: @user.notification_email, subject: subject(_("Your SSH key is expiring soon.")))
      end
    end

    def unknown_sign_in_email(user, ip, time)
      @user = user
      @ip = ip
      @time = time
      @target_url = edit_profile_password_url

      Gitlab::I18n.with_locale(@user.preferred_language) do
        profile_email_with_layout(
          to: @user.notification_email,
          subject: subject(_("%{host} sign-in from new location") % { host: Gitlab.config.gitlab.host }))
      end
    end

    def disabled_two_factor_email(user)
      return unless user

      @user = user

      Gitlab::I18n.with_locale(@user.preferred_language) do
        mail(to: @user.notification_email, subject: subject(_("Two-factor authentication disabled")))
      end
    end

    private

    def profile_email_with_layout(to:, subject:, layout: 'mailer')
      mail(to: to, subject: subject) do |format|
        format.html { render layout: layout }
        format.text { render layout: layout }
      end
    end
  end
end

Emails::Profile.prepend_if_ee('EE::Emails::Profile')