mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 23:36:21 +00:00
Merge branch 'issue-13247' into 'rails'
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
fix: aceptar la invitación al confirmar la cuenta #13247 See merge request sutty/sutty!178
This commit is contained in:
commit
413c0b963c
5 changed files with 38 additions and 3 deletions
|
@ -96,6 +96,13 @@ class UsuariesController < ApplicationController
|
|||
|
||||
# XXX: La invitación tiene que ser enviada luego de crear el rol
|
||||
if role.persisted?
|
||||
# Si es una cuenta manual que no está confirmada aun,
|
||||
# aprovechar para reconfirmarla.
|
||||
if !usuarie.confirmed? && !usuarie.created_by_invite?
|
||||
usuarie.confirmation_token = nil
|
||||
usuarie.send :generate_confirmation_token!
|
||||
end
|
||||
|
||||
usuarie.deliver_invitation
|
||||
else
|
||||
raise ArgumentError, role.errors.full_messages
|
||||
|
|
|
@ -12,6 +12,8 @@ class Usuarie < ApplicationRecord
|
|||
validates_with EmailAddress::ActiveRecordValidator, field: :email
|
||||
|
||||
before_create :lang_from_locale!
|
||||
before_update :remove_confirmation_invitation_inconsistencies!
|
||||
before_update :accept_invitation_after_confirmation!
|
||||
|
||||
has_many :roles
|
||||
has_many :sites, through: :roles
|
||||
|
@ -49,9 +51,31 @@ class Usuarie < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
# Les usuaries necesitan link de invitación si no tenían cuenta
|
||||
# y todavía no aceptaron la invitación anterior.
|
||||
def needs_invitation_link?
|
||||
created_by_invite? && !invitation_accepted?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def lang_from_locale!
|
||||
self.lang = I18n.locale.to_s
|
||||
end
|
||||
|
||||
# El invitation_token solo es necesario cuando fue creade por otre
|
||||
# usuarie. De lo contrario lo que queremos es un proceso de
|
||||
# confirmación.
|
||||
def remove_confirmation_invitation_inconsistencies!
|
||||
self.invitation_token = nil unless created_by_invite?
|
||||
end
|
||||
|
||||
# Si le usuarie (re)confirma su cuenta con una invitación pendiente,
|
||||
# considerarla aceptada también.
|
||||
def accept_invitation_after_confirmation!
|
||||
if confirmed?
|
||||
self.invitation_token = nil
|
||||
self.invitation_accepted_at ||= Time.now.utc
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
%h1= site.title
|
||||
%p= site.description
|
||||
|
||||
- if @resource.created_by_invite? && !@resource.invitation_accepted?
|
||||
- if @resource.needs_invitation_link?
|
||||
%p= link_to t('devise.mailer.invitation_instructions.accept'),
|
||||
accept_invitation_url(@resource, invitation_token: @token, change_locale_to: @resource.lang)
|
||||
|
||||
|
@ -18,5 +18,7 @@
|
|||
format: :'devise.mailer.invitation_instructions.accept_until_format'))
|
||||
|
||||
%p= t('devise.mailer.invitation_instructions.ignore')
|
||||
- elsif !@resource.confirmed? && @resource.confirmation_token
|
||||
= confirmation_url(@resource, confirmation_token: @resource.confirmation_token, change_locale_to: @resource.lang)
|
||||
- else
|
||||
%p= link_to t('devise.mailer.invitation_instructions.sign_in'), root_url
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
\
|
||||
= site.description
|
||||
\
|
||||
- if @resource.created_by_invite? && !@resource.invitation_accepted?
|
||||
- if @resource.needs_invitation_link?
|
||||
= accept_invitation_url(@resource, invitation_token: @token, change_locale_to: @resource.lang)
|
||||
\
|
||||
- if @resource.invitation_due_at
|
||||
|
@ -18,6 +18,8 @@
|
|||
format: :'devise.mailer.invitation_instructions.accept_until_format'))
|
||||
\
|
||||
= t('devise.mailer.invitation_instructions.ignore')
|
||||
- elsif !@resource.confirmed? && @resource.confirmation_token
|
||||
= confirmation_url(@resource, confirmation_token: @resource.confirmation_token, change_locale_to: @resource.lang)
|
||||
- else
|
||||
= root_url(change_locale_to: @resource.lang)
|
||||
= t('devise.mailer.invitation_instructions.sign_in')
|
||||
|
|
|
@ -22,7 +22,7 @@ es:
|
|||
someone_invited_you: "Alguien te ha invitado a colaborar en %{url}, podés aceptar la invitación con el enlace a continuación."
|
||||
accept: "Aceptar la invitación"
|
||||
accept_until: "La invitación vencerá el %{due_date}."
|
||||
ignore: "Si no querés aceptar la invitación, por favor ignora este correo. Tu cuenta no será creada hasta que aceptes la invitación y configures una contraseña."
|
||||
ignore: "Si no querés aceptar la invitación, por favor ignorá este correo. Tu cuenta no será creada hasta que aceptes la invitación y configures una contraseña."
|
||||
sign_in: "Iniciá sesión con tu cuenta para aceptar o rechazar la invitación."
|
||||
time:
|
||||
formats:
|
||||
|
|
Loading…
Reference in a new issue