mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-16 17:36:22 +00:00
feat: agregar política de privacidad
This commit is contained in:
parent
0263169074
commit
0817139032
5 changed files with 178 additions and 1 deletions
14
app/models/privacy_policy.rb
Normal file
14
app/models/privacy_policy.rb
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Políticas de privacidad
|
||||||
|
class PrivacyPolicy < ApplicationRecord
|
||||||
|
extend Mobility
|
||||||
|
|
||||||
|
translates :title, type: :string, locale_accessors: true
|
||||||
|
translates :description, type: :text, locale_accessors: true
|
||||||
|
translates :content, type: :text, locale_accessors: true
|
||||||
|
|
||||||
|
validates :title, presence: true, uniqueness: true
|
||||||
|
validates :description, presence: true
|
||||||
|
validates :content, presence: true
|
||||||
|
end
|
|
@ -16,7 +16,8 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
|
||||||
site.config.write &&
|
site.config.write &&
|
||||||
commit_config(action: :create) &&
|
commit_config(action: :create) &&
|
||||||
add_licencias &&
|
add_licencias &&
|
||||||
add_code_of_conduct
|
add_code_of_conduct &&
|
||||||
|
add_privacy_policy
|
||||||
end
|
end
|
||||||
|
|
||||||
site
|
site
|
||||||
|
@ -172,6 +173,29 @@ SiteService = Struct.new(:site, :usuarie, :params, keyword_init: true) do
|
||||||
end.compact.map(&:valid?).all?
|
end.compact.map(&:valid?).all?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Agrega política de privacidad
|
||||||
|
#
|
||||||
|
# @return [Boolean]
|
||||||
|
def add_privacy_policy
|
||||||
|
return true unless site.layout?(:privacy_policy) || site.layout?(:page)
|
||||||
|
|
||||||
|
pp = PrivacyPolicy.first
|
||||||
|
|
||||||
|
with_all_locales do |locale|
|
||||||
|
params = ActionController::Parameters.new(
|
||||||
|
post: {
|
||||||
|
layout: site.layout?(:privacy_policy) ? 'privacy_policy' : 'page',
|
||||||
|
lang: locale.to_s,
|
||||||
|
title: pp.title,
|
||||||
|
description: pp.description,
|
||||||
|
content: CommonMarker.render_html(pp.content)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
PostService.new(site: site, usuarie: usuarie, params: params).create
|
||||||
|
end.compact.map(&:valid?).all?
|
||||||
|
end
|
||||||
|
|
||||||
# Crea los deploys necesarios para sincronizar a otros nodos de Sutty
|
# Crea los deploys necesarios para sincronizar a otros nodos de Sutty
|
||||||
def sync_nodes
|
def sync_nodes
|
||||||
Rails.application.nodes.each do |node|
|
Rails.application.nodes.each do |node|
|
||||||
|
|
|
@ -15,6 +15,8 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
|
||||||
inflect.singular 'rollups', 'rollup'
|
inflect.singular 'rollups', 'rollup'
|
||||||
inflect.plural 'code_of_conduct', 'codes_of_conduct'
|
inflect.plural 'code_of_conduct', 'codes_of_conduct'
|
||||||
inflect.singular 'codes_of_conduct', 'code_of_conduct'
|
inflect.singular 'codes_of_conduct', 'code_of_conduct'
|
||||||
|
inflect.plural 'privacy_policy', 'privacy_policies'
|
||||||
|
inflect.singular 'privacy_policies', 'privacy_policy'
|
||||||
end
|
end
|
||||||
|
|
||||||
ActiveSupport::Inflector.inflections(:es) do |inflect|
|
ActiveSupport::Inflector.inflections(:es) do |inflect|
|
||||||
|
@ -32,4 +34,6 @@ ActiveSupport::Inflector.inflections(:es) do |inflect|
|
||||||
inflect.singular 'rollups', 'rollup'
|
inflect.singular 'rollups', 'rollup'
|
||||||
inflect.plural 'code_of_conduct', 'codes_of_conduct'
|
inflect.plural 'code_of_conduct', 'codes_of_conduct'
|
||||||
inflect.singular 'codes_of_conduct', 'code_of_conduct'
|
inflect.singular 'codes_of_conduct', 'code_of_conduct'
|
||||||
|
inflect.plural 'privacy_policy', 'privacy_policies'
|
||||||
|
inflect.singular 'privacy_policies', 'privacy_policy'
|
||||||
end
|
end
|
||||||
|
|
22
db/migrate/20230322231344_add_privacy_policy.rb
Normal file
22
db/migrate/20230322231344_add_privacy_policy.rb
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Agrega políticas de privacidad
|
||||||
|
class AddPrivacyPolicy < ActiveRecord::Migration[6.1]
|
||||||
|
def up
|
||||||
|
create_table :privacy_policies do |t|
|
||||||
|
t.timestamps
|
||||||
|
t.string :title
|
||||||
|
t.text :description
|
||||||
|
t.text :content
|
||||||
|
end
|
||||||
|
|
||||||
|
# XXX: En lugar de ponerlo en las seeds
|
||||||
|
YAML.safe_load(File.read('db/seeds/privacy_policies.yml')).each do |pp|
|
||||||
|
PrivacyPolicy.new(**pp).save!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
drop_table :privacy_policies
|
||||||
|
end
|
||||||
|
end
|
113
db/seeds/privacy_policies.yml
Normal file
113
db/seeds/privacy_policies.yml
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
---
|
||||||
|
- title_en: "Privacy Policy"
|
||||||
|
title_es: "Políticas de privacidad"
|
||||||
|
description_en: "With what care does this site handles personal data of its users and visitors?"
|
||||||
|
description_es: "¿Cuáles son los cuidados de este sitio con respecto a sus usuaries y visitantes?"
|
||||||
|
content_en: |
|
||||||
|
> We use "them" as neutral pronoun to refer to people regardless of
|
||||||
|
> gender identity.
|
||||||
|
|
||||||
|
This document details Sutty's privacy policy, including web site,
|
||||||
|
platform, other infrastructure (support channels, etc.) and web sites
|
||||||
|
generated by users.
|
||||||
|
|
||||||
|
## This is too long!
|
||||||
|
|
||||||
|
* Sutty doesn't collect any kind of personal data.
|
||||||
|
|
||||||
|
* Sutty may only collect statistical data that doesn't identify
|
||||||
|
individuals.
|
||||||
|
|
||||||
|
## Analytic data
|
||||||
|
|
||||||
|
Sutty may only collect data for analytics (number of visits, duration,
|
||||||
|
etc.), not associated to personal data.
|
||||||
|
|
||||||
|
Analytical data collected for every web site can only be used internally
|
||||||
|
by Sutty. Sutty doesn't share any data privately with any third
|
||||||
|
parties. Selected analytical data could be used publicly.
|
||||||
|
|
||||||
|
Sutty doesn't recommend personal data collection in any way, but it
|
||||||
|
doesn't monitor if its users use third party services with their own
|
||||||
|
privacy policies. We recommend users and visitors to inform themselves
|
||||||
|
before using third parties analytics services.
|
||||||
|
|
||||||
|
## No personal data collection
|
||||||
|
|
||||||
|
Sutty doesn't collect IP addresses from users nor visitors in any way.
|
||||||
|
|
||||||
|
Sutty doesn't ask for personal data for registering user accounts in its
|
||||||
|
platform.
|
||||||
|
|
||||||
|
Sutty only uses session "cookies" to identify users during their use of
|
||||||
|
the platform. It doesn't use "cookies" to identify visitors of web
|
||||||
|
sites hosted by Sutty.
|
||||||
|
|
||||||
|
The only exception where Sutty could collect personal data is during
|
||||||
|
service payment. Digital safety measures will be taken to keep this
|
||||||
|
information and to discard it if possible after needed.
|
||||||
|
|
||||||
|
Users will be notified when their personal data is removed.
|
||||||
|
|
||||||
|
If users decide to host their web sites with third parties, they must
|
||||||
|
inform themselves about the corresponding privacy policies. Sutty only
|
||||||
|
recommends third parties with privacy policies compatible with these.
|
||||||
|
content_es: |
|
||||||
|
> Utilizamos la e como pronombre neutro para referirnos a personas
|
||||||
|
> independientemente de su identidad de género, por ejemplo “usuarie”.
|
||||||
|
|
||||||
|
Este documento detalla la política de privacidad de Sutty, incluyendo
|
||||||
|
sitio web, plataforma de edición, infraestructura relacionada (salas de
|
||||||
|
chat, etc.) y sitios creados por sus usuaries a través de la plataforma,
|
||||||
|
en adelante "Sutty".
|
||||||
|
|
||||||
|
## ¡Esto es demasiado largo!
|
||||||
|
|
||||||
|
Un resumen:
|
||||||
|
|
||||||
|
* Sutty no recolecta datos personales de ningún tipo
|
||||||
|
|
||||||
|
* Sutty solo recolectaría datos analíticos que no identifican a
|
||||||
|
personas
|
||||||
|
|
||||||
|
## Datos analíticos
|
||||||
|
|
||||||
|
La única recolección de datos realizada por Sutty es con fines
|
||||||
|
analíticos (cantidad de visitas, duración, etc.), no asociados a datos
|
||||||
|
personales.
|
||||||
|
|
||||||
|
Los datos analíticos recolectados por cada sitio podrán ser utilizados
|
||||||
|
internamente por Sutty. Sutty no comparte datos analíticos con
|
||||||
|
terceros en forma privada. Datos analíticos seleccionados podrán ser
|
||||||
|
utilizados públicamente.
|
||||||
|
|
||||||
|
Sutty no recomienda la recolección de datos personales de ninguna forma,
|
||||||
|
pero no monitorea que les usuaries utilicen servicios de terceros con
|
||||||
|
sus propias políticas de privacidad. Recomendamos a les usuaries y
|
||||||
|
visitantes informarse antes de utilizar servicios de estadísticas de
|
||||||
|
terceros.
|
||||||
|
|
||||||
|
## No registro de datos personales
|
||||||
|
|
||||||
|
Sutty no registra direcciones IP de usuaries ni de visitantes de ninguna
|
||||||
|
forma.
|
||||||
|
|
||||||
|
Sutty no solicita datos personales para el registro de cuentas de
|
||||||
|
usuarie en su plataforma.
|
||||||
|
|
||||||
|
Sutty solo utiliza “cookies” de sesión para identificar usuaries
|
||||||
|
mientras utilicen la plataforma. No se utilizan “cookies” para
|
||||||
|
identificar visitantes a los sitios alojados por Sutty.
|
||||||
|
|
||||||
|
El único caso en el que Sutty podría solicitar datos personales es
|
||||||
|
durante el pago de servicios. Se tomarán medidas de seguridad digital
|
||||||
|
para salvaguardar esta información y descartar lo que sea posible una
|
||||||
|
vez que ya no sea necesaria.
|
||||||
|
|
||||||
|
Se notificará a les usuaries cuando su información personal sea
|
||||||
|
eliminada.
|
||||||
|
|
||||||
|
Si les usuaries deciden alojar sus sitios con terceros, deberán
|
||||||
|
informarse de las políticas de privacidad correspondientes. Sutty
|
||||||
|
recomienda servicios de terceros con políticas de privacidad coherentes
|
||||||
|
con estas.
|
Loading…
Reference in a new issue