pg_rails 7.6.21.pre.11 → 7.6.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/pg_associable/app/helpers/pg_associable/form_builder_methods.rb +1 -0
- data/pg_engine/app/controllers/pg_engine/base_controller.rb +2 -0
- data/pg_engine/app/controllers/pg_engine/base_users_controller.rb +2 -0
- data/pg_engine/app/controllers/tenant/user_accounts_controller.rb +7 -16
- data/pg_engine/app/controllers/users/accounts_controller.rb +1 -1
- data/pg_engine/app/controllers/users/invitations_controller.rb +10 -4
- data/pg_engine/app/controllers/users/registrations_controller.rb +0 -2
- data/pg_engine/app/decorators/account_decorator.rb +3 -1
- data/pg_engine/app/decorators/pg_engine/base_record_decorator.rb +3 -2
- data/pg_engine/app/decorators/user_account_decorator.rb +4 -1
- data/pg_engine/app/helpers/pg_engine/flash_helper.rb +1 -1
- data/pg_engine/app/lib/pg_engine/default_url_options.rb +16 -12
- data/pg_engine/app/mailers/pg_engine/base_devise_mailer.rb +4 -0
- data/pg_engine/app/mailers/pg_engine/base_mailer.rb +16 -1
- data/pg_engine/app/models/account.rb +2 -6
- data/pg_engine/app/models/current.rb +1 -2
- data/pg_engine/app/models/email.rb +1 -1
- data/pg_engine/app/models/user.rb +6 -8
- data/pg_engine/app/models/user_account.rb +0 -4
- data/pg_engine/app/policies/account_policy.rb +9 -4
- data/pg_engine/app/policies/user_account_policy.rb +1 -5
- data/pg_engine/app/views/layouts/_logo.html.slim +8 -0
- data/pg_engine/app/views/users/accounts/show.html.slim +4 -3
- data/pg_engine/config/locales/es.rb +2 -0
- data/pg_engine/config/locales/es.yml +7 -2
- data/pg_engine/lib/pg_engine/active_job_extensions.rb +15 -0
- data/pg_engine/lib/pg_engine/configuracion.rb +2 -0
- data/pg_engine/lib/pg_engine/engine.rb +0 -3
- data/pg_engine/lib/pg_engine/site_brand.rb +39 -0
- data/pg_engine/lib/pg_engine/test/dummy_brand.rb +81 -0
- data/pg_engine/lib/pg_engine.rb +11 -1
- data/pg_engine/spec/factories/users.rb +6 -3
- data/pg_engine/spec/mailers/pg_engine/base_mailer_spec.rb +53 -0
- data/pg_engine/spec/requests/devise/invitations_spec.rb +13 -4
- data/pg_engine/spec/requests/users/accounts_spec.rb +19 -10
- data/pg_engine/spec/requests/users/base_controller_spec.rb +13 -12
- data/pg_engine/spec/requests/users/registrations_spec.rb +19 -18
- data/pg_engine/spec/requests/users/user_accounts_spec.rb +37 -1
- data/pg_layout/app/views/devise/invitations/new.html.erb +2 -1
- data/pg_layout/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
- data/pg_layout/app/views/devise/mailer/invitation_instructions.text.erb +1 -1
- data/pg_layout/app/views/layouts/pg_layout/base.html.slim +1 -1
- data/pg_layout/app/views/layouts/pg_layout/container_logo.html.slim +2 -3
- data/pg_layout/app/views/layouts/pg_layout/containerized.html.slim +2 -1
- data/pg_layout/app/views/layouts/pg_layout/devise_mailer.html.slim +3 -7
- data/pg_layout/app/views/layouts/pg_layout/devise_mailer.text.erb +2 -4
- data/pg_layout/app/views/layouts/pg_layout/mailer.html.slim +3 -7
- data/pg_layout/app/views/layouts/pg_layout/mailer.text.erb +2 -4
- data/pg_layout/app/views/pg_layout/_navbar.html.slim +7 -8
- data/pg_layout/app/views/pg_layout/_sidebar.html.slim +1 -1
- data/pg_layout/app/views/pg_layout/_sidebar_mobile.html.slim +1 -1
- data/pg_layout/app/views/pg_layout/_signed_in_links.html.slim +4 -4
- data/pg_rails/lib/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b28992b6ab1d70765599e7b9cb91d80c7205e4568a8d3de1bdab30b475c6e87
|
4
|
+
data.tar.gz: 3bcd1df50768a9d0a97e6e33f747e2fc9981d0b8ceedba6e63270be3d9ae35eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef507cf518054e617a1678d7b29df9dc3bf24b916c26475a835e168054fd1418d794a5210187c7604b018f0d070b016dcbaf88e8a259230db791015164a56b07
|
7
|
+
data.tar.gz: c8b47adeb7ee28e9da2efe5f61a1bd071de1e415654639b4a13d288becac7d752eea6b526a943342dcfde95fd0e323b1716ded877c9cf1e810136b3c40a6c7da
|
@@ -16,6 +16,8 @@ module PgEngine
|
|
16
16
|
Current.user = current_user
|
17
17
|
Current.controller = self
|
18
18
|
|
19
|
+
Current.app_name = PgEngine.site_brand.detect(request)
|
20
|
+
|
19
21
|
if Current.user.present?
|
20
22
|
active_user_accounts = Current.user.user_accounts.ua_active.to_a
|
21
23
|
if ActsAsTenant.current_tenant.present? && !Rails.env.test?
|
@@ -6,6 +6,8 @@ module PgEngine
|
|
6
6
|
# TODO!: requisito que esto esté seteado
|
7
7
|
Current.namespace = :users
|
8
8
|
|
9
|
+
# FIXME: ver que esto esté en todas las pantallas en que esté signed in, ej: en la home y en mi perfil
|
10
|
+
# desduplicar en tenant controller
|
9
11
|
@other_active_accounts = ActsAsTenant.without_tenant do
|
10
12
|
Current.user.user_accounts.ua_active.to_a
|
11
13
|
end
|
@@ -12,24 +12,11 @@ module Tenant
|
|
12
12
|
before_action do
|
13
13
|
@sidebar = false
|
14
14
|
unless modal_targeted? || frame_embedded?
|
15
|
-
add_breadcrumb Account.
|
15
|
+
add_breadcrumb Account.nombre_plural, ->(h) { h.users_accounts_path(tid: nil) }
|
16
16
|
add_breadcrumb ActsAsTenant.current_tenant, users_account_path(Current.account, tid: nil)
|
17
17
|
end
|
18
18
|
unless modal_targeted?
|
19
|
-
add_breadcrumb
|
20
|
-
end
|
21
|
-
@actions = [
|
22
|
-
[
|
23
|
-
'Agregar usuario',
|
24
|
-
new_user_invitation_path(tid: Current.tid),
|
25
|
-
{ class: 'me-1 btn btn-warning btn-sm', 'data-turbo-frame': :_top }
|
26
|
-
]
|
27
|
-
]
|
28
|
-
end
|
29
|
-
|
30
|
-
before_action do
|
31
|
-
unless modal_targeted?
|
32
|
-
# add_breadcrumb @user_account.account, users_account_path(@user_account.account, tid: nil)
|
19
|
+
add_breadcrumb UserAccount.nombre_plural, tenant_user_accounts_path
|
33
20
|
end
|
34
21
|
end
|
35
22
|
|
@@ -50,7 +37,11 @@ module Tenant
|
|
50
37
|
end
|
51
38
|
|
52
39
|
def atributos_para_listar
|
53
|
-
|
40
|
+
if Current.user_account_owner?
|
41
|
+
%i[user user_email_f profiles_f estado_f]
|
42
|
+
else
|
43
|
+
%i[user user_email_f]
|
44
|
+
end
|
54
45
|
end
|
55
46
|
end
|
56
47
|
end
|
@@ -15,7 +15,7 @@ module Users
|
|
15
15
|
self.clase_modelo = Account
|
16
16
|
self.skip_default_breadcrumb = true
|
17
17
|
|
18
|
-
add_breadcrumb Account.
|
18
|
+
add_breadcrumb Account.nombre_plural, ->(h) { h.users_accounts_path(tid: nil) }
|
19
19
|
|
20
20
|
layout :set_layout
|
21
21
|
def set_layout
|
@@ -1,14 +1,20 @@
|
|
1
1
|
module Users
|
2
2
|
class InvitationsController < Devise::InvitationsController
|
3
3
|
include PgEngine::TenantHelper
|
4
|
+
|
4
5
|
before_action only: %i[new create] do
|
5
6
|
set_tenant_from_params_or_fail!
|
6
7
|
|
7
|
-
|
8
|
+
authorize UserAccount
|
9
|
+
|
10
|
+
add_breadcrumb Account.nombre_plural, users_accounts_path(tid: nil)
|
8
11
|
add_breadcrumb ActsAsTenant.current_tenant, users_account_path(ActsAsTenant.current_tenant)
|
9
|
-
add_breadcrumb
|
10
|
-
add_breadcrumb
|
11
|
-
|
12
|
+
add_breadcrumb UserAccount.nombre_plural
|
13
|
+
add_breadcrumb UserAccount.new.decorate.submit_default_value
|
14
|
+
|
15
|
+
# Porque el link for new no tiene turbo-frame="_top"
|
16
|
+
@turbo_page_requires_reload = true
|
17
|
+
|
12
18
|
@no_main_frame = true
|
13
19
|
@container_class = 'container border pb-3 my-3'
|
14
20
|
@container_style = 'max-width: 50em; xborder-left: 1px solid grey'
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module Users
|
2
2
|
class RegistrationsController < Devise::RegistrationsController
|
3
3
|
before_action do
|
4
|
-
@sidebar = false
|
5
4
|
authorize resource, nil, policy_class: UserRegistrationPolicy
|
6
5
|
end
|
7
6
|
|
@@ -12,7 +11,6 @@ module Users
|
|
12
11
|
resource.save
|
13
12
|
yield resource if block_given?
|
14
13
|
if resource.persisted?
|
15
|
-
# FIXME: no va más
|
16
14
|
create_account_for(resource) if ActsAsTenant.current_tenant.blank?
|
17
15
|
|
18
16
|
expire_data_after_sign_in!
|
@@ -22,9 +22,11 @@ class AccountDecorator < PgEngine::BaseRecordDecorator
|
|
22
22
|
ua.reject_invitation_link].compact.join.html_safe
|
23
23
|
end
|
24
24
|
|
25
|
-
def show_link(text:
|
25
|
+
def show_link(text: nil, klass: 'btn-secondary')
|
26
26
|
return unless Pundit.policy!(Current.user, object).show?
|
27
27
|
|
28
|
+
text = 'Usuarios' # rubocop:disable Lint/ShadowedArgument
|
29
|
+
|
28
30
|
helpers.content_tag :span do
|
29
31
|
helpers.link_to object_url, class: "btn btn-sm #{klass}" do
|
30
32
|
helpers.content_tag(:span, nil, class: clase_icono('person')) + text
|
@@ -27,10 +27,11 @@ module PgEngine
|
|
27
27
|
truncate(object.to_s)
|
28
28
|
end
|
29
29
|
|
30
|
+
# Texto para la opción de crear en los pg_associables
|
30
31
|
def text_for_new
|
31
32
|
klass = object.class
|
32
33
|
verb = klass.gender == 'f' ? 'Nueva' : 'Nuevo'
|
33
|
-
"#{verb} #{klass.
|
34
|
+
"#{verb} #{klass.nombre_singular.downcase}"
|
34
35
|
end
|
35
36
|
|
36
37
|
# rubocop:disable Style/MissingRespondToMissing
|
@@ -200,7 +201,7 @@ module PgEngine
|
|
200
201
|
# actionview-7.1.3.2/lib/action_view/helpers/form_helper.rb
|
201
202
|
def submit_default_value
|
202
203
|
key = :create
|
203
|
-
model = object.
|
204
|
+
model = object.class.nombre_singular.downcase
|
204
205
|
defaults = []
|
205
206
|
defaults << :"helpers.submit.#{object.model_name.i18n_key}.#{key}"
|
206
207
|
defaults << :"helpers.submit.#{key}"
|
@@ -4,6 +4,9 @@
|
|
4
4
|
|
5
5
|
class UserAccountDecorator < PgEngine::BaseRecordDecorator
|
6
6
|
delegate_all
|
7
|
+
def new_object_url
|
8
|
+
helpers.new_user_invitation_path
|
9
|
+
end
|
7
10
|
|
8
11
|
def ingresar_link
|
9
12
|
return unless Pundit.policy!(Current.user, object).ingresar?
|
@@ -44,7 +47,7 @@ class UserAccountDecorator < PgEngine::BaseRecordDecorator
|
|
44
47
|
h.link_to [:update_invitation, :users, account, { sign_off: 1 }].flatten,
|
45
48
|
'data-turbo-method': :put,
|
46
49
|
class: 'btn btn-sm btn-outline-danger' do
|
47
|
-
'
|
50
|
+
I18n.t('pg_engine.leave_account', model: Account)
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
@@ -10,7 +10,7 @@ module PgEngine
|
|
10
10
|
|
11
11
|
def render_turbo_stream_title
|
12
12
|
title = [breadcrumbs.last&.name, ActsAsTenant.current_tenant,
|
13
|
-
|
13
|
+
PgEngine.site_brand.name].compact.join(' - ')
|
14
14
|
turbo_stream.update_all 'title', title
|
15
15
|
end
|
16
16
|
end
|
@@ -1,21 +1,25 @@
|
|
1
1
|
module PgEngine
|
2
|
+
# Setea el tid
|
3
|
+
#
|
4
|
+
# Se usa en controllers, y en todo contexto dentro de la webapp
|
5
|
+
# NO se usa en Mailers, ya que no requieren tid
|
2
6
|
module DefaultUrlOptions
|
3
|
-
#
|
4
|
-
#
|
7
|
+
# Aparentemente es necesario definir url_options cuando los parámetros
|
8
|
+
# pueden cambiar a lo largo del lifecycle de la request
|
5
9
|
def url_options
|
6
|
-
|
7
|
-
super.merge(tid: Current.active_user_account.to_param)
|
8
|
-
else
|
9
|
-
super.merge(tid: nil)
|
10
|
-
end
|
10
|
+
super.merge(PgEngine.site_brand.default_url_options).merge(tid: _current_tid)
|
11
11
|
end
|
12
12
|
|
13
|
+
# Aunque parece intuitivo que se podría definir solamente url_options,
|
14
|
+
# es importante que default_url_options también esté definido
|
13
15
|
def default_url_options
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
PgEngine.site_brand.default_url_options.merge(tid: _current_tid)
|
17
|
+
end
|
18
|
+
|
19
|
+
def _current_tid
|
20
|
+
return unless Current.active_user_account
|
21
|
+
|
22
|
+
Current.active_user_account.to_param
|
19
23
|
end
|
20
24
|
end
|
21
25
|
end
|
@@ -2,13 +2,28 @@ module PgEngine
|
|
2
2
|
class BaseMailer < ActionMailer::Base # rubocop:disable Rails/ApplicationMailer
|
3
3
|
class MailNotDelivered < StandardError; end
|
4
4
|
|
5
|
+
def default_url_options
|
6
|
+
super.merge(PgEngine.site_brand.default_url_options)
|
7
|
+
end
|
8
|
+
|
5
9
|
before_action { @email_object = params[:email_object] }
|
6
10
|
|
11
|
+
before_action do
|
12
|
+
png_data = File.read(File.expand_path("app/assets/images/#{logo_footer_name}", Rails.root))
|
13
|
+
attachments.inline[logo_footer_name] = png_data
|
14
|
+
@footer_image_src = attachments[logo_footer_name].url
|
15
|
+
end
|
16
|
+
|
17
|
+
def logo_footer_name
|
18
|
+
PgEngine.site_brand.mailer_base_footer_image_src
|
19
|
+
end
|
20
|
+
|
7
21
|
default from: lambda { |_mailer|
|
8
22
|
if @email_object.present?
|
9
23
|
email_address_with_name(@email_object.from_address, @email_object.from_name)
|
10
24
|
else
|
11
|
-
email_address_with_name(
|
25
|
+
email_address_with_name(PgEngine.site_brand.default_mail_from,
|
26
|
+
PgEngine.site_brand.default_mail_from_name)
|
12
27
|
end
|
13
28
|
},
|
14
29
|
reply_to: ->(_mailer) { @email_object.reply_to if @email_object.present? },
|
@@ -30,7 +30,7 @@ class Account < ApplicationRecord
|
|
30
30
|
belongs_to :creado_por, optional: true, class_name: 'User'
|
31
31
|
belongs_to :actualizado_por, optional: true, class_name: 'User'
|
32
32
|
|
33
|
-
enumerize :plan, in:
|
33
|
+
enumerize :plan, in: PgEngine.site_brand.account_plan_options
|
34
34
|
|
35
35
|
validates :plan, :nombre, presence: true
|
36
36
|
|
@@ -56,10 +56,6 @@ class Account < ApplicationRecord
|
|
56
56
|
self.plan = 0 if plan.blank?
|
57
57
|
end
|
58
58
|
|
59
|
-
def self.gender
|
60
|
-
'm'
|
61
|
-
end
|
62
|
-
|
63
59
|
def to_s
|
64
60
|
# TODO: nombre_in_database?
|
65
61
|
nombre
|
@@ -71,7 +67,7 @@ class Account < ApplicationRecord
|
|
71
67
|
user_accounts.ua_active.owners.first&.user
|
72
68
|
end
|
73
69
|
|
74
|
-
raise PgEngine::Error, 'orphan account' if @owner.nil?
|
70
|
+
raise PgEngine::Error, 'orphan account' if @owner.nil? && Current.namespace != :admin
|
75
71
|
|
76
72
|
@owner
|
77
73
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class Current < ActiveSupport::CurrentAttributes
|
2
|
-
attribute :user, :namespace, :controller, :active_user_account
|
3
|
-
attribute :app_name, default: :procura
|
2
|
+
attribute :user, :namespace, :controller, :active_user_account, :app_name
|
4
3
|
# attribute :request_id, :user_agent, :ip_address
|
5
4
|
|
6
5
|
# resets { Time.zone = nil }
|
@@ -77,7 +77,7 @@ class Email < ApplicationRecord
|
|
77
77
|
format: { with: /\A[^\n<>&]*\z/, message: 'contiene caracteres inválidos' }
|
78
78
|
|
79
79
|
after_initialize do
|
80
|
-
self.from_address =
|
80
|
+
self.from_address = PgEngine.site_brand.default_mail_from if from_address.blank?
|
81
81
|
end
|
82
82
|
|
83
83
|
# validates_format_of :subject, with: /\A[[[:alpha:]]\(\)\w\s.,;!¡?¿-]+\z/
|
@@ -89,14 +89,6 @@ class User < ApplicationRecord
|
|
89
89
|
user_accounts.first.invitation_status = :ist_invited
|
90
90
|
end
|
91
91
|
|
92
|
-
def invited_to_app
|
93
|
-
user_accounts.first.account.plan || 'procura'
|
94
|
-
rescue StandardError => e
|
95
|
-
pg_err(e)
|
96
|
-
|
97
|
-
'procura'
|
98
|
-
end
|
99
|
-
|
100
92
|
attr_accessor :orphan
|
101
93
|
|
102
94
|
def active_for_authentication?
|
@@ -140,6 +132,12 @@ class User < ApplicationRecord
|
|
140
132
|
|
141
133
|
def first_first_name
|
142
134
|
nombre.strip.split.first.presence || to_s
|
135
|
+
rescue StandardError => e
|
136
|
+
# :nocov:
|
137
|
+
pg_warn(e)
|
138
|
+
|
139
|
+
to_s
|
140
|
+
# :nocov:
|
143
141
|
end
|
144
142
|
|
145
143
|
class Error < PgEngine::Error; end
|
@@ -37,7 +37,7 @@ class AccountPolicy < ApplicationPolicy
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def show?
|
40
|
-
base_access_to_record?
|
40
|
+
Current.namespace == :admin || (base_access_to_record? && !user_account.ua_invite_pending?)
|
41
41
|
end
|
42
42
|
|
43
43
|
def index?
|
@@ -49,11 +49,16 @@ class AccountPolicy < ApplicationPolicy
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def base_access_to_record?
|
52
|
-
|
53
|
-
Current.namespace == :admin || (ua.present? && !ua.ua_invite_pending?)
|
52
|
+
Current.namespace == :admin || user_belongs_to_account?
|
54
53
|
end
|
55
54
|
|
56
55
|
def user_belongs_to_account?
|
57
|
-
|
56
|
+
user_account.present?
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def user_account
|
62
|
+
@user_account ||= user.user_account_for(record)
|
58
63
|
end
|
59
64
|
end
|
@@ -17,10 +17,6 @@ class UserAccountPolicy < ApplicationPolicy
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def index?
|
21
|
-
super && (Current.namespace == :admin || Current.active_user_account.present?)
|
22
|
-
end
|
23
|
-
|
24
20
|
def sign_off?
|
25
21
|
user_is_user_account_user? &&
|
26
22
|
!record.ua_invite_pending? &&
|
@@ -28,7 +24,7 @@ class UserAccountPolicy < ApplicationPolicy
|
|
28
24
|
end
|
29
25
|
|
30
26
|
def puede_crear?
|
31
|
-
Current.namespace == :admin
|
27
|
+
Current.namespace == :admin || Current.user_account_owner?
|
32
28
|
end
|
33
29
|
|
34
30
|
def accept_invitation_link?
|
@@ -19,6 +19,7 @@
|
|
19
19
|
- if @user_account.membership_status.ms_disabled?
|
20
20
|
p.text-danger Deshabilitado
|
21
21
|
|
22
|
-
-
|
23
|
-
|
24
|
-
|
22
|
+
- ActsAsTenant.with_tenant(@account) do
|
23
|
+
- if policy(UserAccount).index?
|
24
|
+
= turbo_frame_tag 'embedded__user_accounts',
|
25
|
+
src: tenant_user_accounts_path(tid: Current.user.user_account_for(@account).to_param)
|
@@ -18,6 +18,8 @@ end
|
|
18
18
|
{
|
19
19
|
:es => {
|
20
20
|
pg_engine: {
|
21
|
+
leave_account: PgEngine::I18nRules.rule('Dejar %{genderize(la,el)} %{singular_model}'),
|
22
|
+
|
21
23
|
resource_destroyed: PgEngine::I18nRules.rule("Se eliminó %{genderize(la,el)} %{singular_model}"),
|
22
24
|
resource_not_destroyed: PgEngine::I18nRules.rule("Hubo un error al intentar eliminar %{genderize(la,el)} %{singular_model}"),
|
23
25
|
resource_not_updated: PgEngine::I18nRules.rule("Hubo un error al intentar actualizar %{genderize(la,el)} %{singular_model}"),
|
@@ -1,4 +1,9 @@
|
|
1
1
|
es:
|
2
|
+
helpers:
|
3
|
+
# submit_default_value
|
4
|
+
submit:
|
5
|
+
user_account:
|
6
|
+
create: Agregar %{model}
|
2
7
|
profile_group:
|
3
8
|
account: Cuenta
|
4
9
|
user_accounts: Usuarios
|
@@ -170,8 +175,8 @@ es:
|
|
170
175
|
activerecord:
|
171
176
|
models:
|
172
177
|
user_account:
|
173
|
-
one:
|
174
|
-
other:
|
178
|
+
one: Usuario
|
179
|
+
other: Usuarios
|
175
180
|
account:
|
176
181
|
one: Espacio
|
177
182
|
other: Espacios
|
@@ -53,9 +53,6 @@ module PgEngine
|
|
53
53
|
end
|
54
54
|
|
55
55
|
initializer 'configurar_pg_rails' do
|
56
|
-
# Ensure required env variables are set
|
57
|
-
ENV.fetch('DEFAULT_MAIL_FROM')
|
58
|
-
ENV.fetch('DEFAULT_MAIL_FROM_NAME')
|
59
56
|
# SimpleForm
|
60
57
|
require "#{PgEngine::Engine.root}/config/simple_form/simple_form"
|
61
58
|
require "#{PgEngine::Engine.root}/config/simple_form/simple_form_bootstrap"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PgEngine
|
4
|
+
class SiteBrand
|
5
|
+
attr_accessor :default_site_brand
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@options = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def value_for(key)
|
12
|
+
options = @options[key.to_sym]
|
13
|
+
|
14
|
+
raise PgEngine::Error, 'Key not found' if options.nil?
|
15
|
+
|
16
|
+
if Current.app_name.present? && options.keys.include?(Current.app_name)
|
17
|
+
options[Current.app_name]
|
18
|
+
elsif options.keys.include?(:default)
|
19
|
+
options[:default]
|
20
|
+
elsif default_site_brand.present? && options.keys.include?(default_site_brand)
|
21
|
+
pg_warn('Default site brand chosen')
|
22
|
+
|
23
|
+
options[default_site_brand]
|
24
|
+
else
|
25
|
+
# :nocov:
|
26
|
+
raise PgEngine::Error, 'No site brand found'
|
27
|
+
# :nocov:
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def method_missing(method)
|
32
|
+
value_for(method)
|
33
|
+
end
|
34
|
+
|
35
|
+
def respond_to_missing?(method, include_private)
|
36
|
+
@options.key?(method.to_sym) or super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module PgEngine
|
2
|
+
module Test
|
3
|
+
class DummyBrand < PgEngine::SiteBrand
|
4
|
+
def initialize(include_all: false) # rubocop:disable Metrics/MethodLength
|
5
|
+
super()
|
6
|
+
|
7
|
+
@default_site_brand = :factura
|
8
|
+
|
9
|
+
@options = {
|
10
|
+
landing_site_url: {
|
11
|
+
procura: 'https://bien.com.ar/procura',
|
12
|
+
factura: 'https://bien.com.ar/factura'
|
13
|
+
},
|
14
|
+
logo_navbar_url: {
|
15
|
+
procura: 'procura-logo-navbar-1.png',
|
16
|
+
factura: 'logo-navbar-1.png'
|
17
|
+
},
|
18
|
+
logo_xl_url: {
|
19
|
+
procura: 'procura-logo-xl-light.png',
|
20
|
+
factura: 'logo-xl-light.png'
|
21
|
+
},
|
22
|
+
favicon_prefix: {
|
23
|
+
procura: 'procura-favicon',
|
24
|
+
factura: 'favicon'
|
25
|
+
},
|
26
|
+
mailer_devise_footer_image_src: {
|
27
|
+
factura: 'mail-footer-lg.png',
|
28
|
+
procura: 'procura-mail-footer-lg.png'
|
29
|
+
},
|
30
|
+
mailer_base_footer_image_src: {
|
31
|
+
factura: 'footer-mail-dark-light.png',
|
32
|
+
procura: 'procura-mail-footer-sm.png'
|
33
|
+
},
|
34
|
+
default_mail_from: {
|
35
|
+
procura: 'noreply@procura',
|
36
|
+
factura: 'noreply@factura'
|
37
|
+
},
|
38
|
+
name: {
|
39
|
+
procura: 'Procura Bien',
|
40
|
+
factura: 'Factura Bien'
|
41
|
+
},
|
42
|
+
default_mail_from_name: {
|
43
|
+
procura: 'Procura Bien',
|
44
|
+
factura: 'Factura Bien'
|
45
|
+
},
|
46
|
+
default_url_options: {
|
47
|
+
default: {}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
return unless Rails.env.development? || include_all
|
52
|
+
|
53
|
+
@options.merge!({
|
54
|
+
default_url_options: {
|
55
|
+
procura: {
|
56
|
+
host: 'procura.localhost',
|
57
|
+
port: '3000'
|
58
|
+
},
|
59
|
+
factura: {
|
60
|
+
host: 'factura.localhost',
|
61
|
+
port: '3000'
|
62
|
+
}
|
63
|
+
}
|
64
|
+
})
|
65
|
+
end
|
66
|
+
|
67
|
+
def account_plan_options
|
68
|
+
{ factura: 0, procura: 1 }
|
69
|
+
end
|
70
|
+
|
71
|
+
def detect(request)
|
72
|
+
return :procura if request.host.match(/procura/)
|
73
|
+
return :factura if request.host.match(/factura/)
|
74
|
+
|
75
|
+
pg_warn 'default site_brand assigned'
|
76
|
+
|
77
|
+
:factura
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|