5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-17 04:26:21 +00:00
panel/app/policies/site_policy.rb
f f77a907753 version privadas del sitio #180
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.
2020-08-22 21:04:46 -03:00

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