mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-26 05:56:22 +00:00
llevar registro de cuales usuaries modificaron un articulo
para poder dar los permisos correspondientes
This commit is contained in:
parent
e6b2793953
commit
5c3bdbe4ee
4 changed files with 16 additions and 2 deletions
|
@ -133,6 +133,7 @@ class Post < OpenStruct
|
||||||
yaml['layout'] = layout.name.to_s
|
yaml['layout'] = layout.name.to_s
|
||||||
# Y que no se procese liquid
|
# Y que no se procese liquid
|
||||||
yaml['liquid'] = false
|
yaml['liquid'] = false
|
||||||
|
yaml['usuaries'] = usuaries.map(&:id).uniq
|
||||||
|
|
||||||
"#{yaml.to_yaml}---\n\n#{body}"
|
"#{yaml.to_yaml}---\n\n#{body}"
|
||||||
end
|
end
|
||||||
|
@ -234,8 +235,16 @@ class Post < OpenStruct
|
||||||
end
|
end
|
||||||
alias update update_attributes
|
alias update update_attributes
|
||||||
|
|
||||||
|
def usuaries
|
||||||
|
@usuaries ||= Usuarie.where(id: document_usuaries).to_a
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def document_usuaries
|
||||||
|
document.data.fetch('usuaries', [])
|
||||||
|
end
|
||||||
|
|
||||||
def new_attribute_was(method)
|
def new_attribute_was(method)
|
||||||
attr_was = (attribute_name(method).to_s + '_was').to_sym
|
attr_was = (attribute_name(method).to_s + '_was').to_sym
|
||||||
return attr_was if singleton_class.method_defined? attr_was
|
return attr_was if singleton_class.method_defined? attr_was
|
||||||
|
|
|
@ -17,7 +17,7 @@ class PostPolicy
|
||||||
|
|
||||||
# Les invitades solo pueden ver sus propios posts
|
# Les invitades solo pueden ver sus propios posts
|
||||||
def show?
|
def show?
|
||||||
post.site.usuarie?(usuarie) || post.author == usuarie.email
|
post.site.usuarie?(usuarie) || post.usuaries.include?(usuarie)
|
||||||
end
|
end
|
||||||
|
|
||||||
def new?
|
def new?
|
||||||
|
@ -34,7 +34,7 @@ class PostPolicy
|
||||||
|
|
||||||
# Les invitades solo pueden modificar sus propios artículos
|
# Les invitades solo pueden modificar sus propios artículos
|
||||||
def update?
|
def update?
|
||||||
post.site.usuarie?(usuarie) || post.author == usuarie.email
|
post.site.usuarie?(usuarie) || post.usuaries.include?(usuarie)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Solo las usuarias pueden eliminar artículos. Les invitades pueden
|
# Solo las usuarias pueden eliminar artículos. Les invitades pueden
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
# Este servicio se encarga de crear artículos y guardarlos en git,
|
# Este servicio se encarga de crear artículos y guardarlos en git,
|
||||||
# asignándoselos a une usuarie
|
# asignándoselos a une usuarie
|
||||||
|
# rubocop:disable Metrics/BlockLength
|
||||||
PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
||||||
# Crea un artículo nuevo
|
# Crea un artículo nuevo
|
||||||
#
|
#
|
||||||
|
@ -9,6 +10,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
||||||
def create
|
def create
|
||||||
# TODO: Implementar layout
|
# TODO: Implementar layout
|
||||||
self.post = site.posts(lang: params[:post][:lang] || I18n.locale).build
|
self.post = site.posts(lang: params[:post][:lang] || I18n.locale).build
|
||||||
|
post.usuaries << usuarie
|
||||||
|
|
||||||
commit(action: :created) if post.update(post_params)
|
commit(action: :created) if post.update(post_params)
|
||||||
|
|
||||||
|
@ -18,6 +20,7 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
post.usuaries << usuarie
|
||||||
commit(action: :updated) if post.update(post_params)
|
commit(action: :updated) if post.update(post_params)
|
||||||
|
|
||||||
# Devolver el post aunque no se haya salvado para poder rescatar los
|
# Devolver el post aunque no se haya salvado para poder rescatar los
|
||||||
|
@ -48,3 +51,4 @@ PostService = Struct.new(:site, :usuarie, :post, :params, keyword_init: true) do
|
||||||
params.require(:post).permit(post.params)
|
params.require(:post).permit(post.params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
# rubocop:enable Metrics/BlockLength
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
%table.table.table-condensed
|
%table.table.table-condensed
|
||||||
%tbody
|
%tbody
|
||||||
- @posts.each do |post|
|
- @posts.each do |post|
|
||||||
|
- next unless policy(post).show?
|
||||||
-#
|
-#
|
||||||
saltearse el post a menos que esté en la categoría por
|
saltearse el post a menos que esté en la categoría por
|
||||||
la que estamos filtrando
|
la que estamos filtrando
|
||||||
|
|
Loading…
Reference in a new issue