integración con tienda
This commit is contained in:
parent
59a6b94f5e
commit
e4e8508e57
9 changed files with 66 additions and 0 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
23
app/models/concerns/tienda.rb
Normal file
23
app/models/concerns/tienda.rb
Normal 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
|
|
@ -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']
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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:
|
||||||
|
|
6
db/migrate/20201111203031_add_tienda_to_site.rb
Normal file
6
db/migrate/20201111203031_add_tienda_to_site.rb
Normal 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
|
Loading…
Reference in a new issue