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 # Duración de la Cookie de invitade
# @see Api::V1::ProtectedController # @see Api::V1::ProtectedController
COOKIE_DURATION=30 COOKIE_DURATION=30
# Dominio de la tienda
TIENDA=tienda.sutty.local

View file

@ -137,6 +137,7 @@ class SitesController < ApplicationController
params.require(:site) params.require(:site)
.permit(:name, :design_id, :licencia_id, :description, :title, .permit(:name, :design_id, :licencia_id, :description, :title,
:colaboracion_anonima, :contact, :acepta_invitades, :colaboracion_anonima, :contact, :acepta_invitades,
:tienda_api_key, :tienda_url,
deploys_attributes: %i[type id _destroy]) deploys_attributes: %i[type id _destroy])
end end
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, 'HOME' => home_dir,
'PATH' => paths.join(':'), 'PATH' => paths.join(':'),
'SPREE_API_KEY' => site.tienda_api_key,
'SPREE_URL' => site.tienda_url,
'JEKYLL_ENV' => Rails.env, 'JEKYLL_ENV' => Rails.env,
'LANG' => ENV['LANG'] 'LANG' => ENV['LANG']
} }

View file

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

View file

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

View file

@ -104,6 +104,26 @@
%hr/ %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? - if site.persisted?
.form-group#contact .form-group#contact
%h2= t('.contact.title') %h2= t('.contact.title')

View file

@ -126,6 +126,8 @@ es:
acepta_invitades: Habilitar colaboración de otres usuaries acepta_invitades: Habilitar colaboración de otres usuaries
colaboracion_anonima: Habilitar colaboración anónima colaboracion_anonima: Habilitar colaboración anónima
contact: Habilitar formularios de contacto contact: Habilitar formularios de contacto
tienda_url: Dirección de la tienda
tienda_api_key: Clave de acceso
errors: errors:
models: models:
site: site:
@ -418,6 +420,10 @@ es:
contact: contact:
title: 'Habilitar formularios de contacto' 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í.' 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: fetch:
title: 'Actualizar el sitio' title: 'Actualizar el sitio'
help: 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