diff --git a/app/controllers/usuaries_controller.rb b/app/controllers/usuaries_controller.rb index 28513e63..76d17541 100644 --- a/app/controllers/usuaries_controller.rb +++ b/app/controllers/usuaries_controller.rb @@ -99,7 +99,7 @@ class UsuariesController < ApplicationController # Si es una cuenta manual que no está confirmada aun, # aprovechar para reconfirmarla. if !usuarie.confirmed? && !usuarie.created_by_invite? - usuarie.generate_confirmation_token! + usuarie.send :generate_confirmation_token! end usuarie.deliver_invitation diff --git a/app/models/usuarie.rb b/app/models/usuarie.rb index e25a6785..2bc7a1b5 100644 --- a/app/models/usuarie.rb +++ b/app/models/usuarie.rb @@ -12,6 +12,7 @@ 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 @@ -62,6 +63,13 @@ class Usuarie < ApplicationRecord 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!