mirror of
https://0xacab.org/sutty/sutty
synced 2025-01-19 17:03:38 +00:00
fix: enviar las invitaciones luego de crear el rol
This commit is contained in:
parent
1fa37b20e1
commit
1bfff4dfdb
1 changed files with 15 additions and 9 deletions
|
@ -81,21 +81,25 @@ class UsuariesController < ApplicationController
|
||||||
authorize SiteUsuarie.new(@site, current_usuarie)
|
authorize SiteUsuarie.new(@site, current_usuarie)
|
||||||
|
|
||||||
# Enviar la invitación si es necesario y agregar al sitio
|
# Enviar la invitación si es necesario y agregar al sitio
|
||||||
invitaciones.each do |invitacion|
|
invitaciones.each do |address|
|
||||||
attributes = { email: invitacion.address, skip_invitation: true }
|
next if Usuarie.where(id: @site.roles.pluck(:usuarie_id)).find_by_email(address)
|
||||||
|
|
||||||
next if Usuarie.where(id: @site.roles.pluck(:usuarie_id)).find_by(attributes)
|
|
||||||
|
|
||||||
Usuarie.transaction do
|
Usuarie.transaction do
|
||||||
usuarie = Usuarie.find_by attributes
|
usuarie = Usuarie.find_by_email(address)
|
||||||
usuarie ||= Usuarie.invite!(attributes).tap do |u|
|
usuarie ||= Usuarie.invite!({ email: address, skip_invitation: true }).tap do |u|
|
||||||
u.send :generate_invitation_token!
|
u.send :generate_invitation_token!
|
||||||
end
|
end
|
||||||
|
|
||||||
@site.roles.create(usuarie: usuarie, temporal: true, rol: invited_as)
|
role = @site.roles.create(usuarie: usuarie, temporal: true, rol: invited_as)
|
||||||
|
|
||||||
# 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
|
||||||
usuarie.deliver_invitation
|
if role.persisted?
|
||||||
|
usuarie.deliver_invitation
|
||||||
|
else
|
||||||
|
raise ArgumentError, role.errors.full_messages
|
||||||
|
end
|
||||||
|
rescue ArgumentError => e
|
||||||
|
ExceptionNotifier.notify_exception(e, data: { site: @site.name, address: address })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -137,6 +141,8 @@ class UsuariesController < ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
# Traer todas las invitaciones que al menos tengan usuarie y dominio
|
# Traer todas las invitaciones que al menos tengan usuarie y dominio
|
||||||
|
#
|
||||||
|
# @return [Array]
|
||||||
def invitaciones
|
def invitaciones
|
||||||
# XXX: Podríamos usar EmailAddress pero hace chequeos más lentos
|
# XXX: Podríamos usar EmailAddress pero hace chequeos más lentos
|
||||||
params[:invitaciones]&.tr("\r", '')&.split("\n")&.map do |m|
|
params[:invitaciones]&.tr("\r", '')&.split("\n")&.map do |m|
|
||||||
|
@ -145,7 +151,7 @@ class UsuariesController < ApplicationController
|
||||||
nil
|
nil
|
||||||
end.compact.select do |m|
|
end.compact.select do |m|
|
||||||
m.local && m.domain
|
m.local && m.domain
|
||||||
end
|
end.map(&:address)
|
||||||
end
|
end
|
||||||
|
|
||||||
# El tipo de invitación que tenemos que enviar, si alguien mandó
|
# El tipo de invitación que tenemos que enviar, si alguien mandó
|
||||||
|
|
Loading…
Reference in a new issue