5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-03 12:36:08 +00:00

Merge branch 'issue-13247' into panel.sutty.nl

This commit is contained in:
f 2023-04-25 11:20:54 -03:00
commit d4a93698a9
5 changed files with 28 additions and 3 deletions

View file

@ -96,6 +96,13 @@ class UsuariesController < ApplicationController
# XXX: La invitación tiene que ser enviada luego de crear el rol # XXX: La invitación tiene que ser enviada luego de crear el rol
if role.persisted? 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 usuarie.deliver_invitation
else else
raise ArgumentError, role.errors.full_messages raise ArgumentError, role.errors.full_messages

View file

@ -12,6 +12,7 @@ class Usuarie < ApplicationRecord
validates_with EmailAddress::ActiveRecordValidator, field: :email validates_with EmailAddress::ActiveRecordValidator, field: :email
before_create :lang_from_locale! before_create :lang_from_locale!
before_update :remove_confirmation_invitation_inconsistencies!
before_update :accept_invitation_after_confirmation! before_update :accept_invitation_after_confirmation!
has_many :roles has_many :roles
@ -50,12 +51,25 @@ class Usuarie < ApplicationRecord
end end
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 private
def lang_from_locale! def lang_from_locale!
self.lang = I18n.locale.to_s self.lang = I18n.locale.to_s
end 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, # Si le usuarie (re)confirma su cuenta con una invitación pendiente,
# considerarla aceptada también. # considerarla aceptada también.
def accept_invitation_after_confirmation! def accept_invitation_after_confirmation!

View file

@ -8,7 +8,7 @@
%h1= site.title %h1= site.title
%p= site.description %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'), %p= link_to t('devise.mailer.invitation_instructions.accept'),
accept_invitation_url(@resource, invitation_token: @token, change_locale_to: @resource.lang) accept_invitation_url(@resource, invitation_token: @token, change_locale_to: @resource.lang)
@ -18,5 +18,7 @@
format: :'devise.mailer.invitation_instructions.accept_until_format')) format: :'devise.mailer.invitation_instructions.accept_until_format'))
%p= t('devise.mailer.invitation_instructions.ignore') %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 - else
%p= link_to t('devise.mailer.invitation_instructions.sign_in'), root_url(change_locale_to: @resource.lang) %p= link_to t('devise.mailer.invitation_instructions.sign_in'), root_url(change_locale_to: @resource.lang)

View file

@ -9,7 +9,7 @@
\ \
= site.description = 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) = accept_invitation_url(@resource, invitation_token: @token, change_locale_to: @resource.lang)
\ \
- if @resource.invitation_due_at - if @resource.invitation_due_at
@ -18,6 +18,8 @@
format: :'devise.mailer.invitation_instructions.accept_until_format')) format: :'devise.mailer.invitation_instructions.accept_until_format'))
\ \
= t('devise.mailer.invitation_instructions.ignore') = 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 - else
= root_url(change_locale_to: @resource.lang) = root_url(change_locale_to: @resource.lang)
= t('devise.mailer.invitation_instructions.sign_in') = t('devise.mailer.invitation_instructions.sign_in')

View file

@ -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." 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: "Aceptar la invitación"
accept_until: "La invitación vencerá el %{due_date}." 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." sign_in: "Iniciá sesión con tu cuenta para aceptar o rechazar la invitación."
time: time:
formats: formats: