Welcome to mirror list, hosted at ThFree Co, Russian Federation.

profile.rb « emails « mailers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2be4cdf734a874e0d7ff4a837e387c5a865fd74b (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# frozen_string_literal: true

module Emails
  module Profile
    include SafeFormatHelper

    def new_user_email(user_id, token = nil)
      @current_user = @user = User.find(user_id)
      @target_url = user_url(@user)
      @token = token
      email_with_layout(to: @user.notification_email_or_default, subject: subject("Account was created for you"))
    end

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

      email_with_layout(
        to: recipient.notification_email_or_default,
        subject: subject(_("GitLab Account Request")))
    end

    def user_admin_rejection_email(name, email)
      @name = name

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

    def user_deactivated_email(name, email)
      @name = name

      email_with_layout(
        to: email,
        subject: subject(_('Your account has been deactivated')))
    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_with_locale(to: @user.notification_email_or_default, 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_with_locale(to: @user.notification_email_or_default, subject: subject("GPG key was added to your account"))
    end
    # rubocop: enable CodeReuse/ActiveRecord

    def resource_access_tokens_about_to_expire_email(recipient, resource, token_names)
      @user = recipient
      @token_names = token_names
      @days_to_expire = PersonalAccessToken::DAYS_TO_EXPIRE
      @resource = resource
      if resource.is_a?(Group)
        @target_url = group_settings_access_tokens_url(resource)
        @reason_text = _('You are receiving this email because you are an Owner of the Group.')
      else
        @target_url = project_settings_access_tokens_url(resource)
        @reason_text = _('You are receiving this email because you are a Maintainer of the Project.')
      end

      mail_with_locale(
        to: recipient.notification_email_or_default,
        subject: subject(
          safe_format(
            _("Your resource access tokens will expire in %{days_to_expire} or less"),
            days_to_expire: pluralize(@days_to_expire, _('day'))
          )
        )
      )
    end

    def access_token_created_email(user, token_name)
      return unless user&.active?

      @user = user
      @target_url = profile_personal_access_tokens_url
      @token_name = token_name

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("A new personal access token has been created")))
    end

    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

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("Your personal access tokens will expire in %{days_to_expire} days or less") % { days_to_expire: @days_to_expire }))
    end

    def access_token_expired_email(user, token_names = [])
      return unless user && user.active?

      @user = user
      @token_names = token_names
      @target_url = profile_personal_access_tokens_url

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("Your personal access tokens have expired")))
    end

    def access_token_revoked_email(user, token_name, source = nil)
      return unless user&.active?

      @user = user
      @token_name = token_name
      @target_url = profile_personal_access_tokens_url
      @source = source

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("Your personal access token has been revoked")))
    end

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

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

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("Your SSH key has expired")))
    end

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

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

      mail_with_locale(to: @user.notification_email_or_default, subject: subject(_("Your SSH key is expiring soon.")))
    end

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

      email_with_layout(
        to: @user.notification_email_or_default,
        subject: subject(_("%{host} sign-in from new location") % { host: Gitlab.config.gitlab.host }))
    end

    def two_factor_otp_attempt_failed_email(user, ip, time = Time.current)
      @user = user
      @ip = ip
      @time = time

      email_with_layout(
        to: @user.notification_email_or_default,
        subject: subject(_("Attempted sign in to %{host} using an incorrect verification code") % { host: Gitlab.config.gitlab.host }))
    end

    def disabled_two_factor_email(user)
      return unless user

      @user = user

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("Two-factor authentication disabled")))
    end

    def new_email_address_added_email(user, email)
      return unless user

      @user = user
      @email = email

      email_with_layout(to: @user.notification_email_or_default, subject: subject(_("New email address added")))
    end

    def new_achievement_email(user, achievement)
      return unless user&.active?

      @user = user
      @achievement = achievement

      email_with_layout(
        to: @user.notification_email_or_default,
        subject: subject(s_("Achievements|%{namespace_full_path} awarded you the %{achievement_name} achievement") % { namespace_full_path: @achievement.namespace.full_path, achievement_name: @achievement.name }))
    end
  end
end

Emails::Profile.prepend_mod_with('Emails::Profile')