# frozen_string_literal: true # Política de acceso a artículos # # TODO: Implementar Invitadx class PostPolicy attr_reader :post def initialize(usuarie, post) @usuarie = usuarie @post = post end def index? true end # Lxs invitadxs solo pueden ver sus propios posts def show? true || post.author == usuarix.email end def new? create? end def create? true end def edit? update? end # Lxs invitadxs solo pueden modificar sus propios artículos def update? true || post.author == usuarix.email end # Solo las usuarias pueden eliminar artículos. Lxs invitadxs pueden # borrar sus propios artículos def destroy? update? end # Las usuarias pueden ver todos los posts # # Lxs invitadxs 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 # # Lxs invitadxs solo pueden ver sus propios posts def resolve # TODO: filtrar por invitade return scope # Asegurarse que al menos devolvemos [] [scope.find do |post| post.author == usuarie.email end].flatten.compact end end end