diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index b2ba6f8..1e5dd49 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -59,7 +59,7 @@ class PostsController < ApplicationController if @site.usuarie? current_usuarie @post.update_attributes(author: params[:post][:author]) else - # Todo lo que crean lxs invitadxs es borrador + # Todo lo que crean les invitades es borrador @post.update_attributes(draft: true) end unless @post.author @@ -105,7 +105,7 @@ class PostsController < ApplicationController end @post.update_attributes(draft: false) else - # Todo lo que crean lxs invitadxs es borrador + # Todo lo que crean les invitades es borrador @post.update_attributes(draft: true) end diff --git a/app/models/invitadx.rb b/app/models/invitadx.rb deleted file mode 100644 index c9e5393..0000000 --- a/app/models/invitadx.rb +++ /dev/null @@ -1,86 +0,0 @@ -# frozen_string_literal: true - -class Invitadx < ApplicationRecord - has_secure_password - validates_uniqueness_of :email - validate :acepto_politicas_de_privacidad - - after_create :create_invitadx_directory! - after_save :add_sites! - - # Para facilitar la serialización de Warden - def username - email - end - - def path - File.join(Rails.root, '_invitadxs', email) - end - - # TODO: convertir el Pathname en un helper - def site_dirs - return [] unless Dir.exist? path - - Pathname.new(path).children.map(&:expand_path).map(&:to_s) - end - - def sites - @sites ||= site_dirs.map do |site| - Site.find(File.basename(site)) - end.compact - end - - private - - def acepto_politicas_de_privacidad - unless acepta_politicas_de_privacidad? - errors.add(:acepta_politicas_de_privacidad, - :no_acepta_politicas_de_privacidad) - end - end - - # Crea el directorio en _sites - def create_invitadx_directory! - FileUtils.mkdir_p(path) - end - - # Agrega el sitio a las invitadxs y viceversa - def add_sites! - sites.each do |site| - dir = File.join(path, site.name) - file = site.invitadxs_file - - unless File.exist? dir - FileUtils.ln_s File.join('..', '..', '_sites', site.name), dir - end - - if File.exist? file - invitadxs = File.read(file).split("\n") - invitadxs_orig = invitadxs.dup - invitadxs << email unless invitadxs.include? email - else - invitadxs_orig = [] - invitadxs = [email] - end - - # Solo escribir los cambios si hubo cambios en la lista - return if invitadxs_orig == invitadxs - - r = File.open(file, File::RDWR | File::CREAT, 0o640) do |f| - # Bloquear el archivo para que no sea accedido por otro - # proceso u otra editora - f.flock(File::LOCK_EX) - - # Empezar por el principio - f.rewind - - # Escribir la fecha de creación - f.write(invitadxs.join("\n")) - - # Eliminar el resto - f.flush - f.truncate(f.pos) - end - end - end -end diff --git a/app/policies/invitadx_policy.rb b/app/policies/invitadx_policy.rb deleted file mode 100644 index 80fab60..0000000 --- a/app/policies/invitadx_policy.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -# Política de acceso para Invitades -# -# TODO: Incorporar a Usuarie y eliminar -class InvitadxPolicy - attr_reader :usuarix, :model - - def initialize(usuarix, model) - @usuarix = usuarix - @model = model - end - - def new? - create? - end - - # Al crear, el modelo recibido es un sitio - def create? - unless model.class == Site - raise ArgumentError, - "#{model.class} must be Site" - end - - # El sitio acepta invitadxs - model.invitadxs? - end -end diff --git a/app/policies/post_policy.rb b/app/policies/post_policy.rb index d1bb993..103423f 100644 --- a/app/policies/post_policy.rb +++ b/app/policies/post_policy.rb @@ -15,7 +15,7 @@ class PostPolicy true end - # Lxs invitadxs solo pueden ver sus propios posts + # Les invitades solo pueden ver sus propios posts def show? post.site.usuarie?(usuarie) || post.author == usuarie.email end @@ -32,12 +32,12 @@ class PostPolicy update? end - # Lxs invitadxs solo pueden modificar sus propios artículos + # 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. Lxs invitadxs pueden + # Solo las usuarias pueden eliminar artículos. Les invitades pueden # borrar sus propios artículos def destroy? update? @@ -45,7 +45,7 @@ class PostPolicy # Las usuarias pueden ver todos los posts # - # Lxs invitadxs solo pueden ver sus propios posts + # Les invitades solo pueden ver sus propios posts class Scope attr_reader :usuarie, :scope @@ -56,7 +56,7 @@ class PostPolicy # Las usuarias pueden ver todos los posts # - # Lxs invitadxs solo pueden ver sus propios posts + # Les invitades solo pueden ver sus propios posts def resolve return scope if scope.try(:first).try(:site).try(:usuarie?, usuarie)