pg_rails 7.6.24 → 7.6.26
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_engine/app/assets/stylesheets/pg_engine.scss +6 -0
- data/pg_engine/app/components/flash_container_component.rb +3 -1
- data/pg_engine/app/controllers/pg_engine/base_public_controller.rb +1 -1
- data/pg_engine/app/controllers/users/accounts_controller.rb +10 -0
- data/pg_engine/app/controllers/users/confirmations_controller.rb +1 -0
- data/pg_engine/app/controllers/users/registrations_controller.rb +7 -0
- data/pg_engine/app/helpers/pg_engine/route_helper.rb +8 -1
- data/pg_engine/app/lib/pg_form_builder.rb +6 -0
- data/pg_engine/app/models/user.rb +1 -1
- data/pg_engine/config/locales/es.yml +3 -3
- data/pg_engine/config/routes.rb +4 -4
- data/pg_engine/spec/requests/users/accounts_spec.rb +38 -0
- data/pg_engine/spec/system/signup_spec.rb +3 -12
- data/pg_layout/app/views/devise/registrations/_signup_info.html.slim +1 -0
- data/pg_layout/app/views/devise/registrations/new.html.erb +25 -23
- data/pg_rails/lib/version.rb +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b2c5672f192482e718fb6f12e66e7cfcd376e916c7663f13931aa526d931f42
|
4
|
+
data.tar.gz: cb427f6f6dd542648c697f53b3ddc688f8506919a809bfff3e32c6119612b1a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e98643fa17d81bcdfa0993cd66dbf532d36a6e1935a0144f88e67f2b54dad6e0ec81795fb9a5be9c35c42f6737e1ff8a51ed77f871104f691e711d8a16a8ffb5
|
7
|
+
data.tar.gz: df1e9eae5424d3ea481be959d24f33b09a5433ce0660f2bdc55ddda5595926ae753c7489c6ac90cc0956219b0909b0d6dd82cb784b2538d00f80820eb654d7cf
|
@@ -1,6 +1,8 @@
|
|
1
1
|
class FlashContainerComponent < ViewComponent::Base
|
2
|
+
# z-1 es para que no se superponga con el dropdown de la navbar,
|
3
|
+
# ya que sticky-top setea un z-index de 1020 y el del dropdown es de 1000
|
2
4
|
erb_template <<~HTML
|
3
|
-
<div id="flash-container" class="d-flex justify-content-around sticky-top">
|
5
|
+
<div id="flash-container" class="d-flex justify-content-around sticky-top z-1">
|
4
6
|
<div id="flash" class="flash position-relative w-100 d-flex justify-content-center">
|
5
7
|
<%= content || render(partial: 'pg_layout/flash') %>
|
6
8
|
</div>
|
@@ -36,6 +36,16 @@ module Users
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def user_root
|
40
|
+
scope = policy_scope(Account)
|
41
|
+
if scope.count == 1
|
42
|
+
ua = Current.user.user_account_for(scope.first)
|
43
|
+
redirect_to tenant_root_path(ua.to_param)
|
44
|
+
else
|
45
|
+
redirect_to users_accounts_path
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
39
49
|
# La user_account puede estar disabled
|
40
50
|
def show
|
41
51
|
add_breadcrumb @account, users_account_path(@account, tid: nil)
|
@@ -4,6 +4,13 @@ module Users
|
|
4
4
|
authorize resource, nil, policy_class: UserRegistrationPolicy
|
5
5
|
end
|
6
6
|
|
7
|
+
# GET /resource/sign_up
|
8
|
+
def new
|
9
|
+
build_resource(accept_terms: true)
|
10
|
+
yield resource if block_given?
|
11
|
+
respond_with resource
|
12
|
+
end
|
13
|
+
|
7
14
|
def create
|
8
15
|
build_resource(sign_up_params)
|
9
16
|
|
@@ -72,8 +72,15 @@ module PgEngine
|
|
72
72
|
if Current.tid.present?
|
73
73
|
tenant_root_path(tid: Current.tid)
|
74
74
|
else
|
75
|
-
(Current.user.present? ?
|
75
|
+
(Current.user.present? ? user_root_path : root_path)
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
79
|
+
# :nocov:
|
80
|
+
deprecate :users_root_path, deprecator: PgEngine.deprecator
|
81
|
+
def users_root_path
|
82
|
+
user_root_path
|
83
|
+
end
|
84
|
+
# :nocov:
|
78
85
|
end
|
79
86
|
end
|
@@ -23,6 +23,12 @@ class PgFormBuilder < SimpleForm::FormBuilder
|
|
23
23
|
def input(attribute_name, options = {}, &)
|
24
24
|
options[:error_prefix] ||= default_prefix(attribute_name)
|
25
25
|
|
26
|
+
# Bootstraps's floating labels require an empty placeholder attribute
|
27
|
+
merged_wrapper = self.options[:wrapper].to_s + options[:wrapper].to_s
|
28
|
+
if merged_wrapper.include?('floating')
|
29
|
+
options[:placeholder] = ''
|
30
|
+
end
|
31
|
+
|
26
32
|
super
|
27
33
|
end
|
28
34
|
|
@@ -66,7 +66,7 @@ class User < ApplicationRecord
|
|
66
66
|
|
67
67
|
has_many :notifications, as: :recipient, class_name: 'Noticed::Notification'
|
68
68
|
|
69
|
-
validates :nombre, :apellido, presence: true
|
69
|
+
# validates :nombre, :apellido, presence: true
|
70
70
|
|
71
71
|
has_one_attached :avatar do |attachable|
|
72
72
|
attachable.variant :thumb, resize_to_fill: [80, 80]
|
@@ -43,7 +43,7 @@ es:
|
|
43
43
|
confirmed_at: Fecha de confirmación
|
44
44
|
actualizado_por: Actualizado por
|
45
45
|
creado_por: Creado por
|
46
|
-
accept_terms: Acepto los <a href="/terminos_y_condiciones" target="_blank">
|
46
|
+
accept_terms: Acepto los <a href="/terminos_y_condiciones" target="_blank">términos y condiciones</a>
|
47
47
|
enumerize:
|
48
48
|
user_account:
|
49
49
|
membership_status:
|
@@ -117,7 +117,7 @@ es:
|
|
117
117
|
header: "Aceptar invitación"
|
118
118
|
submit_button: "Aceptar"
|
119
119
|
confirmations:
|
120
|
-
confirmed: ¡
|
120
|
+
confirmed: ¡Bien! Ahora tu cuenta está confirmada
|
121
121
|
sessions:
|
122
122
|
signed_in: ''
|
123
123
|
signed_out: ''
|
@@ -128,7 +128,7 @@ es:
|
|
128
128
|
unauthenticated: ''
|
129
129
|
invited: "Tenés una invitación pendiente en tu correo electrónico"
|
130
130
|
registrations:
|
131
|
-
signed_up_but_unconfirmed:
|
131
|
+
signed_up_but_unconfirmed: Por favor, revisá en tu bandeja de entrada las instrucciones para confirmar tu cuenta.
|
132
132
|
new:
|
133
133
|
sign_up: Crear una cuenta
|
134
134
|
passwords:
|
data/pg_engine/config/routes.rb
CHANGED
@@ -31,10 +31,11 @@ Rails.application.routes.draw do
|
|
31
31
|
put :update_invitation
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
|
-
root to: 'accounts#index'
|
36
34
|
end
|
37
35
|
|
36
|
+
# User root for devise's signed_in_root_path
|
37
|
+
get '/u', to: 'users/accounts#user_root', as: :user_root
|
38
|
+
|
38
39
|
namespace :tenant, path: 'u/t(/:tid)' do
|
39
40
|
pg_resource(:user_accounts, only: [:index, :show, :edit, :update, :destroy])
|
40
41
|
scope controller: 'inline_edit', path: 'inline', as: :inline do
|
@@ -47,8 +48,7 @@ Rails.application.routes.draw do
|
|
47
48
|
root to: 'dashboard#dashboard'
|
48
49
|
end
|
49
50
|
|
50
|
-
# root
|
51
|
-
# FIXME: qué onda
|
51
|
+
# Si en la main app no se define una root path, se redirige al user_root
|
52
52
|
root to: redirect('/u')
|
53
53
|
|
54
54
|
namespace :admin, path: 'a' do
|
@@ -88,6 +88,44 @@ describe 'Users::AccountsController' do
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
+
describe 'user_root' do
|
92
|
+
subject do
|
93
|
+
get '/u'
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'when no accounts' do
|
97
|
+
let(:user) { create :user }
|
98
|
+
|
99
|
+
it do
|
100
|
+
subject
|
101
|
+
expect(response).to redirect_to(users_accounts_path)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'when one account' do
|
106
|
+
it do
|
107
|
+
subject
|
108
|
+
ua = user.user_account_for(account)
|
109
|
+
expect(response).to redirect_to(tenant_root_path(ua.to_param))
|
110
|
+
# File.write(Rails.root.join('out.html'), response.body)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
context 'when multiple accounts' do
|
115
|
+
before do
|
116
|
+
other_account = create(:account)
|
117
|
+
ActsAsTenant.without_tenant do
|
118
|
+
create(:user_account, account: other_account, user:)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
it do
|
123
|
+
subject
|
124
|
+
expect(response).to redirect_to(users_accounts_path)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
91
129
|
describe 'index' do
|
92
130
|
subject do
|
93
131
|
get '/u/espacios'
|
@@ -18,10 +18,7 @@ describe 'Al Registrarse' do
|
|
18
18
|
perform_enqueued_jobs do
|
19
19
|
visit '/users/sign_up'
|
20
20
|
fill_in 'user_email', with: Faker::Internet.email
|
21
|
-
fill_in 'user_nombre', with: Faker::Name.name
|
22
|
-
fill_in 'user_apellido', with: Faker::Name.name
|
23
21
|
fill_in 'user_password', with: 'admin123'
|
24
|
-
fill_in 'user_password_confirmation', with: 'admin123'
|
25
22
|
|
26
23
|
accept_terms
|
27
24
|
|
@@ -31,7 +28,7 @@ describe 'Al Registrarse' do
|
|
31
28
|
|
32
29
|
context 'cuando acepta los términos' do
|
33
30
|
let(:accept_terms) do
|
34
|
-
|
31
|
+
nil
|
35
32
|
end
|
36
33
|
|
37
34
|
it 'guarda el user' do
|
@@ -39,13 +36,13 @@ describe 'Al Registrarse' do
|
|
39
36
|
ActsAsTenant.without_tenant do
|
40
37
|
expect(Account.last.owner).to eq User.last
|
41
38
|
end
|
42
|
-
expect(page).to have_text('
|
39
|
+
expect(page).to have_text('las instrucciones para confirmar')
|
43
40
|
end
|
44
41
|
end
|
45
42
|
|
46
43
|
context 'si no acepta los terms' do
|
47
44
|
let(:accept_terms) do
|
48
|
-
|
45
|
+
uncheck 'user_accept_terms'
|
49
46
|
end
|
50
47
|
|
51
48
|
it do
|
@@ -77,12 +74,6 @@ describe 'Al Registrarse' do
|
|
77
74
|
end
|
78
75
|
end
|
79
76
|
|
80
|
-
# drivers = %i[
|
81
|
-
# selenium_headless
|
82
|
-
# selenium_chrome_headless
|
83
|
-
# selenium_chrome_headless_notebook
|
84
|
-
# selenium_chrome_headless_iphone
|
85
|
-
# ]
|
86
77
|
drivers = %i[selenium_chrome_headless_iphone]
|
87
78
|
drivers = [ENV['DRIVER'].to_sym] if ENV['DRIVER'].present?
|
88
79
|
|
@@ -0,0 +1 @@
|
|
1
|
+
p Creá tu cuenta!
|
@@ -1,27 +1,29 @@
|
|
1
|
-
<
|
2
|
-
<div
|
3
|
-
|
4
|
-
|
5
|
-
<%= f.input :nombre, required: true, autofocus: true %>
|
6
|
-
<%= f.input :apellido, required: true %>
|
7
|
-
<%= f.input :email,
|
8
|
-
required: true,
|
9
|
-
input_html: { autocomplete: "email" }%>
|
10
|
-
<%= f.input :password,
|
11
|
-
required: true,
|
12
|
-
hint: (t('devise.shared.minimum_password_length', count: @minimum_password_length) if @minimum_password_length),
|
13
|
-
input_html: { autocomplete: "new-password" } %>
|
14
|
-
<%= f.input :password_confirmation,
|
15
|
-
required: true,
|
16
|
-
input_html: { autocomplete: "new-password" } %>
|
17
|
-
<%= f.input :accept_terms, as: :boolean, label: t('attributes.accept_terms').html_safe, error_prefix: '' %>
|
1
|
+
<div class="container mt-5" style="max-width: 80em">
|
2
|
+
<div class="row flex-wrap-reverse">
|
3
|
+
<div class="col-sm">
|
4
|
+
<%= render partial: 'signup_info' %>
|
18
5
|
</div>
|
6
|
+
<div class="col-sm">
|
7
|
+
<div class="position-sticky z-1" style="top: 0.5em">
|
8
|
+
<h1 class="mb-4">Creá tu cuenta</h1>
|
9
|
+
<%# #form-signup se reemplaza por el mensaje de revisar la bandeja de entrada %>
|
10
|
+
<div class="text-center" id="form-signup" data-controller="pg_form">
|
11
|
+
<%= pg_form_for(resource, as: resource_name, url: registration_path(resource_name), wrapper: :floating_labels_form) do |f| %>
|
12
|
+
<div class="form-inputs m-auto d-inline-block" style="max-width: 20em">
|
13
|
+
<%= f.input :email, label: 'Tu email', input_html: { class: 'form-control-lg', autocomplete: "email" }%>
|
14
|
+
<%= f.input :password, label: 'Elegí una contraseña',
|
15
|
+
input_html: { class: 'form-control-lg', autocomplete: "new-password" } %>
|
16
|
+
<%= f.input :accept_terms, as: :boolean, label: t('attributes.accept_terms').html_safe, error_prefix: '', wrapper_html: { class: 'justify-content-center' } %>
|
17
|
+
</div>
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
<div class="form-actions">
|
20
|
+
<%= f.button :submit, 'Registrarme' %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
24
23
|
|
25
|
-
|
24
|
+
<%= render "devise/shared/links" %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</div>
|
26
29
|
</div>
|
27
|
-
|
data/pg_rails/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.6.
|
4
|
+
version: 7.6.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martín Rosso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -1020,6 +1020,7 @@ files:
|
|
1020
1020
|
- pg_layout/app/views/devise/mailer/unlock_instructions.html.erb
|
1021
1021
|
- pg_layout/app/views/devise/passwords/edit.html.erb
|
1022
1022
|
- pg_layout/app/views/devise/passwords/new.html.erb
|
1023
|
+
- pg_layout/app/views/devise/registrations/_signup_info.html.slim
|
1023
1024
|
- pg_layout/app/views/devise/registrations/edit.html.erb
|
1024
1025
|
- pg_layout/app/views/devise/registrations/new.html.erb
|
1025
1026
|
- pg_layout/app/views/devise/sessions/new.html.erb
|