5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 15:36:22 +00:00
panel/app/policies/post_policy.rb

71 lines
1.4 KiB
Ruby

# frozen_string_literal: true
# Política de acceso a artículos
#
# TODO: Implementar Invitadx
class PostPolicy
attr_reader :post, :usuarie
def initialize(usuarie, post)
@usuarie = usuarie
@post = post
end
def index?
true
end
# Les invitades solo pueden ver sus propios posts
def show?
post.site.usuarie?(usuarie) || post.author == usuarie.email
end
def new?
create?
end
def create?
true
end
def edit?
update?
end
# Les invitades solo pueden modificar sus propios artículos
def update?
post.site.usuarie?(usuarie) || post.author == usuarie.email
end
# Solo las usuarias pueden eliminar artículos. Les invitades pueden
# borrar sus propios artículos
def destroy?
update?
end
# Las usuarias pueden ver todos los posts
#
# Les invitades solo pueden ver sus propios posts
class Scope
attr_reader :usuarie, :scope
def initialize(usuarie, scope)
@usuarie = usuarie
@scope = scope
end
# Las usuarias pueden ver todos los posts
#
# Les invitades solo pueden ver sus propios posts
#
# TODO: Arreglar
def resolve
return scope if scope.try(:first).try(:site).try(:usuarie?, usuarie)
# Asegurarse que al menos devolvemos []
[scope.find do |post|
post.author.value == usuarie.email
end].flatten.compact
end
end
end