integración con tienda

This commit is contained in:
f 2020-11-11 18:15:58 -03:00
parent 59a6b94f5e
commit e4e8508e57
9 changed files with 66 additions and 0 deletions

View file

@ -20,3 +20,5 @@ DEBUG_FORMS=
# Duración de la Cookie de invitade
# @see Api::V1::ProtectedController
COOKIE_DURATION=30
# Dominio de la tienda
TIENDA=tienda.sutty.local

View file

@ -137,6 +137,7 @@ class SitesController < ApplicationController
params.require(:site)
.permit(:name, :design_id, :licencia_id, :description, :title,
:colaboracion_anonima, :contact, :acepta_invitades,
:tienda_api_key, :tienda_url,
deploys_attributes: %i[type id _destroy])
end
end

View file

@ -0,0 +1,23 @@
# frozen_string_literal: true
# Integración con la tienda
module Tienda
extend ActiveSupport::Concern
included do
encrypts :tienda_api_key
def tienda?
tienda_api_key.present? && tienda_url.present?
end
# Sugerir una dirección al configurar por primera vez
def tienda_url
t = read_attribute(:tienda_url)
return t if new_record?
t.blank? ? 'https://' + name + '.' + ENV.fetch('TIENDA', 'tienda.sutty.nl') : t
end
end
end

View file

@ -57,6 +57,8 @@ class DeployLocal < Deploy
{
'HOME' => home_dir,
'PATH' => paths.join(':'),
'SPREE_API_KEY' => site.tienda_api_key,
'SPREE_URL' => site.tienda_url,
'JEKYLL_ENV' => Rails.env,
'LANG' => ENV['LANG']
}

View file

@ -6,6 +6,7 @@ class Site < ApplicationRecord
include FriendlyId
include Site::Forms
include Site::FindAndReplace
include Tienda
# Cifrar la llave privada que cifra y decifra campos ocultos. Sutty
# tiene acceso pero los datos se guardan cifrados en el sitio. Esto

View file

@ -21,6 +21,11 @@
- if current_usuarie
%ul.navbar-nav
- if @site&.tienda?
%li.nav-item
= link_to t('.tienda'), @site.tienda_url,
role: 'button', class: 'btn'
%li.nav-item
= link_to t('.logout'), destroy_usuarie_session_path,
method: :delete, role: 'button', class: 'btn'

View file

@ -104,6 +104,26 @@
%hr/
.form-group#tienda
%h2= t('.tienda.title')
%p.lead
- if site.tienda?
= t('.tienda.help')
- else
= t('.tienda.first_time_html')
.row
.col
.form-group
= f.label :tienda_url
= f.url_field :tienda_url, class: 'form-control'
.col
.form-group
= f.label :tienda_api_key
= f.text_field :tienda_api_key, class: 'form-control'
%hr/
- if site.persisted?
.form-group#contact
%h2= t('.contact.title')

View file

@ -126,6 +126,8 @@ es:
acepta_invitades: Habilitar colaboración de otres usuaries
colaboracion_anonima: Habilitar colaboración anónima
contact: Habilitar formularios de contacto
tienda_url: Dirección de la tienda
tienda_api_key: Clave de acceso
errors:
models:
site:
@ -418,6 +420,10 @@ es:
contact:
title: 'Habilitar formularios de contacto'
help: 'Si tu sitio tiene formularios de contacto, con esta opción habilitas su funcionamiento. Si tu sitio está bajo ataque de spam o trolls, puedes deshabilitarlos temporalmente aquí.'
tienda:
title: Tienda
first_time_html: 'Para configurar tu tienda, <a href="https://sutty.nl/#contacto">ponte en contacto con nosotres</a> :)'
help: 'Puedes configurar tu tienda aquí.'
fetch:
title: 'Actualizar el sitio'
help:

View file

@ -0,0 +1,6 @@
class AddTiendaToSite < ActiveRecord::Migration[6.0]
def change
add_column :sites, :tienda_api_key_ciphertext, :string, default: ''
add_column :sites, :tienda_url, :string, default: ''
end
end