mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-17 04:26:21 +00:00
f77a907753
se puede compilar una versión privada del sitio solo accesible a través del panel, es decir con los mismos niveles de acceso. en combinación con el complemento de jekyll correspondiente, sería posible ver un sitio con otros datos que no se publican.
93 lines
1.3 KiB
Ruby
93 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Política de acceso para sitios
|
|
class SitePolicy
|
|
attr_reader :site, :usuarie
|
|
|
|
def initialize(usuarie, site)
|
|
@usuarie = usuarie
|
|
@site = site
|
|
end
|
|
|
|
# Todes les usuaries pueden ver sus propios sitios
|
|
def index?
|
|
true
|
|
end
|
|
|
|
# Puede ver la versión privada del sitio?
|
|
def private?
|
|
edit? && site.deploys.find_by_type('DeployPrivate')
|
|
end
|
|
|
|
# Todes les usuaries pueden ver el sitio si aceptaron la invitación
|
|
def show?
|
|
!current_role.temporal
|
|
end
|
|
|
|
# Todes pueden crear nuevos sitios
|
|
def new?
|
|
true
|
|
end
|
|
|
|
def create?
|
|
new?
|
|
end
|
|
|
|
# Para poder editarlos también tienen que haber aceptado la invitación
|
|
def edit?
|
|
show? && usuarie?
|
|
end
|
|
|
|
def update?
|
|
edit?
|
|
end
|
|
|
|
def destroy?
|
|
edit?
|
|
end
|
|
|
|
# Les invitades no pueden generar el sitio y les usuaries solo hasta
|
|
# que aceptan la invitación
|
|
def build?
|
|
show? && usuarie?
|
|
end
|
|
|
|
def enqueue?
|
|
build?
|
|
end
|
|
|
|
def reorder_posts?
|
|
build?
|
|
end
|
|
|
|
def pull?
|
|
build?
|
|
end
|
|
|
|
def fetch?
|
|
pull?
|
|
end
|
|
|
|
def merge?
|
|
pull?
|
|
end
|
|
|
|
# Solo les usuaries pueden reordenar artículos
|
|
def reorder?
|
|
site.usuarie? usuarie
|
|
end
|
|
|
|
private
|
|
|
|
def current_role
|
|
usuarie.rol_for_site(site)
|
|
end
|
|
|
|
def usuarie?
|
|
site.usuarie? usuarie
|
|
end
|
|
|
|
def invitade?
|
|
site.invitade? usuarie
|
|
end
|
|
end
|