5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-02 13:26:07 +00:00

los sitios pueden tener varias direcciones

This commit is contained in:
f 2020-06-02 16:39:54 -03:00
parent 0f272f0105
commit 91828c8277
2 changed files with 31 additions and 15 deletions

View file

@ -83,9 +83,13 @@ module Api
head :precondition_required if site.nil?
end
# Comprueba que el mensaje vino fue enviado desde el sitio
# Comprueba que el mensaje fue enviado desde el sitio o uno
# de los sitios permitidos.
#
# XXX: Este header se puede falsificar de todas formas pero al
# menos es una trampa.
def site_is_origin?
return if origin.to_s.start_with? site.url(slash: false)
return if site.urls(slash: false).any? { |u| origin.to_s.start_with? u }
head :precondition_required
end

View file

@ -83,13 +83,34 @@ class Site < ApplicationRecord
# @param slash Boolean Agregar / al final o no
# @return String La URL con o sin / al final
def url(slash: true)
if slash
'https://' + hostname + '/'
else
'https://' + hostname
'https://' + hostname + (slash ? '/' : '')
end
# Obtiene los dominios alternativos
#
# @return Array
def alternative_hostnames
deploys.where(type: 'DeployAlternativeDomain').map(&:hostname).map do |h|
h.end_with?('.') ? h[0..-2] : h + '.' + Site.domain
end
end
# Obtiene todas las URLs alternativas para este sitio
#
# @return Array
def alternative_urls(slash: true)
alternative_hostnames.map do |h|
'https://' + h + (slash ? '/' : '')
end
end
# Todas las URLs posibles para este sitio
#
# @return Array
def urls(slash: true)
alternative_urls << url(slash: slash)
end
def invitade?(usuarie)
!invitades.where(id: usuarie).empty?
end
@ -113,15 +134,6 @@ class Site < ApplicationRecord
File.join(Site.site_path, name_was)
end
def cover
"/covers/#{name}.png"
end
# Define si el sitio tiene un glosario
def glossary?
config.fetch('glossary', false)
end
# Obtiene la lista de traducciones actuales
#
# Siempre tiene que tener algo porque las traducciones están