Module: Emails::Profile

Includes:
SafeFormatHelper
Included in:
Notify
Defined in:
app/mailers/emails/profile.rb

Instance Method Summary collapse

Methods included from SafeFormatHelper

#safe_format, #tag_pair

Instance Method Details

#access_token_about_to_expire_email(user, token_names, params = {}) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'app/mailers/emails/profile.rb', line 105

def access_token_about_to_expire_email(user, token_names, params = {})
  return unless user

  params = params.with_indifferent_access

  @user = user
  @token_names = token_names
  @target_url = 
  @days_to_expire = params.fetch(: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

#access_token_created_email(user, token_name) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
# File 'app/mailers/emails/profile.rb', line 92

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

  @user = user
  @target_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

#access_token_expired_email(user, token_names = []) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
# File 'app/mailers/emails/profile.rb', line 125

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

  @user = user
  @token_names = token_names
  @target_url = 

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

#access_token_revoked_email(user, token_name, source = nil) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'app/mailers/emails/profile.rb', line 138

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

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

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

#access_token_rotated_email(user, token_name) ⇒ Object



152
153
154
155
156
157
158
159
160
161
162
163
# File 'app/mailers/emails/profile.rb', line 152

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

  @user = user
  @token_name = token_name
  @target_url = 

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

#bot_resource_access_token_about_to_expire_email(recipient, resource, token_name, params = {}) ⇒ Object

resource owners are sent mail about expiring access tokens which belong to a bot user



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'app/mailers/emails/profile.rb', line 67

def bot_resource_access_token_about_to_expire_email(recipient, resource, token_name, params = {})
  params = params.with_indifferent_access
  @user = recipient
  @token_name = token_name
  @days_to_expire = params.fetch(: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 either an Owner or Maintainer of the project.')
  end

  email_with_layout(
    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

#deploy_token_about_to_expire_email(user, token_name, project, params = {}) ⇒ Object



165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'app/mailers/emails/profile.rb', line 165

def deploy_token_about_to_expire_email(user, token_name, project, params = {})
  params = params.with_indifferent_access

  @user = user
  @project = project
  @target_url = project_settings_repository_url(project, anchor: "js-deploy-tokens")
  @days_to_expire = params.fetch(:days_to_expire, DeployToken::DAYS_TO_EXPIRE)
  @token_name = token_name
  @user_role = project.team.owner?(user) ? _('an Owner') : _('a Maintainer')

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

#disabled_two_factor_email(user) ⇒ Object



258
259
260
261
262
263
264
265
266
267
# File 'app/mailers/emails/profile.rb', line 258

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

#disabled_two_factor_otp_email(user) ⇒ Object



269
270
271
272
273
274
275
276
277
278
# File 'app/mailers/emails/profile.rb', line 269

def disabled_two_factor_otp_email(user)
  return unless user

  @user = user

  email_with_layout(
    to: @user.notification_email_or_default,
    subject: subject(_("One-time password authenticator deleted"))
  )
end

#disabled_two_factor_webauthn_email(user, device_name, type = :webauthn) ⇒ Object



280
281
282
283
284
285
286
287
288
289
290
291
# File 'app/mailers/emails/profile.rb', line 280

def disabled_two_factor_webauthn_email(user, device_name, type = :webauthn)
  return unless user

  @user = user
  @device_name = device_name
  @type = type

  email_with_layout(
    to: @user.notification_email_or_default,
    subject: subject(type == :webauthn ? _("WebAuthn device deleted") : _("Passkey deleted"))
  )
end

#enabled_two_factor_otp_email(user) ⇒ Object



233
234
235
236
237
238
239
240
241
242
# File 'app/mailers/emails/profile.rb', line 233

def enabled_two_factor_otp_email(user)
  return unless user

  @user = user

  email_with_layout(
    to: @user.notification_email_or_default,
    subject: subject(_("One-time password authenticator registered"))
  )
end

#enabled_two_factor_webauthn_email(user, device_name, type = :webauthn) ⇒ Object



244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'app/mailers/emails/profile.rb', line 244

def enabled_two_factor_webauthn_email(user, device_name, type = :webauthn)
  return unless user

  @user = user
  @device_name = device_name
  @type = type

  email_with_layout(
    to: @user.notification_email_or_default,
    subject: subject(
      type == :webauthn ? _("WebAuthn device registered") : _("Passkey registered"))
  )
end

#instance_access_request_email(user, recipient) ⇒ Object



14
15
16
17
18
19
20
21
# File 'app/mailers/emails/profile.rb', line 14

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

#new_achievement_email(user, achievement) ⇒ Object



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'app/mailers/emails/profile.rb', line 302

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

#new_email_address_added_email(user, email) ⇒ Object



293
294
295
296
297
298
299
300
# File 'app/mailers/emails/profile.rb', line 293

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

#new_gpg_key_email(gpg_key_id) ⇒ Object

rubocop: disable CodeReuse/ActiveRecord



54
55
56
57
58
59
60
61
62
63
# File 'app/mailers/emails/profile.rb', line 54

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)
  email_with_layout(to: @user.notification_email_or_default,
    subject: subject(_("GPG key was added to your account")))
end

#new_ssh_key_email(key_id) ⇒ Object

rubocop: disable CodeReuse/ActiveRecord



41
42
43
44
45
46
47
48
49
50
# File 'app/mailers/emails/profile.rb', line 41

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)
  email_with_layout(to: @user.notification_email_or_default,
    subject: subject(_("SSH key was added to your account")))
end

#new_user_email(user_id, token = nil) ⇒ Object



7
8
9
10
11
12
# File 'app/mailers/emails/profile.rb', line 7

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

#ssh_key_expired_email(user, fingerprints) ⇒ Object



185
186
187
188
189
190
191
192
193
# File 'app/mailers/emails/profile.rb', line 185

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

  @user = user
  @fingerprints = fingerprints
  @target_url = 

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

#ssh_key_expiring_soon_email(user, fingerprints) ⇒ Object



195
196
197
198
199
200
201
202
203
# File 'app/mailers/emails/profile.rb', line 195

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

  @user = user
  @fingerprints = fingerprints
  @target_url = 

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

#two_factor_otp_attempt_failed_email(user, ip, time = Time.current) ⇒ Object



218
219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'app/mailers/emails/profile.rb', line 218

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

#unknown_sign_in_email(user, ip, time, request_info = {}) ⇒ Object



205
206
207
208
209
210
211
212
213
214
215
216
# File 'app/mailers/emails/profile.rb', line 205

def (user, ip, time, request_info = {})
  @user = user
  @ip = ip
  @city = request_info[:city]
  @country = request_info[:country]
  @time = time
  @target_url = 

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

#user_admin_rejection_email(name, email) ⇒ Object



23
24
25
26
27
28
29
# File 'app/mailers/emails/profile.rb', line 23

def user_admin_rejection_email(name, email)
  @name = name

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

#user_deactivated_email(name, email) ⇒ Object



31
32
33
34
35
36
37
38
# File 'app/mailers/emails/profile.rb', line 31

def user_deactivated_email(name, email)
  @name = name
  @host = Gitlab.config.gitlab.host

  email_with_layout(
    to: email,
    subject: subject(_('Your account has been deactivated')))
end