5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-04 16:25:45 +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? head :precondition_required if site.nil?
end 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? 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 head :precondition_required
end end

View file

@ -83,13 +83,34 @@ class Site < ApplicationRecord
# @param slash Boolean Agregar / al final o no # @param slash Boolean Agregar / al final o no
# @return String La URL con o sin / al final # @return String La URL con o sin / al final
def url(slash: true) def url(slash: true)
if slash 'https://' + hostname + (slash ? '/' : '')
'https://' + hostname + '/' end
else
'https://' + hostname # 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
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) def invitade?(usuarie)
!invitades.where(id: usuarie).empty? !invitades.where(id: usuarie).empty?
end end
@ -113,15 +134,6 @@ class Site < ApplicationRecord
File.join(Site.site_path, name_was) File.join(Site.site_path, name_was)
end 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 # Obtiene la lista de traducciones actuales
# #
# Siempre tiene que tener algo porque las traducciones están # Siempre tiene que tener algo porque las traducciones están