simply_auth 0.6.0 → 0.7.0
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/app/controllers/simply_auth/registrations_controller.rb +51 -8
- data/app/models/simply_auth/user_pool.rb +2 -2
- data/app/views/simply_auth/registrations/new.html.erb +1 -72
- data/app/views/simply_auth/registrations/old-new.html.erb +72 -0
- data/lib/simply_auth/version.rb +1 -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: 750533d97a9a4c3cf78e8edbba37de4de5747551c95de6635dddf1b296b1f067
|
4
|
+
data.tar.gz: 1ac2b5510e6fddeaa74aa5ea27e1c31f2e15554c7c572bec4cf8b116e2ccef1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c1954bf11a7d3c6e2e8660dcf53376e5e6143d476a03197a9fa83277a6fcc21a21e5c1380e427e98ecdedb91ef0c7116c657bef52e05234f9f87eb125f77dba
|
7
|
+
data.tar.gz: 5cd9bef3147731ad68e3563e121b1ea51a1d39a8771f940851456c8bfb42bed99222d3f1d5caadf52b31b7c057ac2dc042ca98845e7b4abec3b9aafee7f7e245
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module SimplyAuth
|
2
2
|
class RegistrationsController < ApplicationController
|
3
|
+
before_action :load_signup_form
|
3
4
|
def new
|
4
|
-
@
|
5
|
+
@html = @step["html"].gsub("/registrations", registrations_path(form: @signup_form.id))
|
5
6
|
end
|
6
7
|
|
7
8
|
def index
|
@@ -12,23 +13,65 @@ module SimplyAuth
|
|
12
13
|
def after_registration(user); end
|
13
14
|
|
14
15
|
def create
|
15
|
-
|
16
|
-
if @
|
16
|
+
session["simply_auth_form_submission"] ||= {}
|
17
|
+
if (session["simply_auth_form_submission"]["id"] != @signup_form.id)
|
18
|
+
session["simply_auth_form_submission"] = {}
|
19
|
+
end
|
20
|
+
session["simply_auth_form_submission"]["id"] = @signup_form.id
|
21
|
+
session["simply_auth_form_submission"]["attributes"] ||= {}
|
22
|
+
user_params = user_params(@step["attributes"])
|
23
|
+
user_params.each do |k, v|
|
24
|
+
v = v.to_h if v.respond_to?(:to_h)
|
25
|
+
session["simply_auth_form_submission"]["attributes"][k] = v
|
26
|
+
end
|
27
|
+
if @step == @signup_form.steps.last
|
28
|
+
@user = SimplyAuth::User.new(session["simply_auth_form_submission"]["attributes"])
|
29
|
+
@user.save
|
17
30
|
after_registration(@user)
|
18
|
-
|
19
|
-
@session = SimplyAuth::Session.new(email:
|
31
|
+
|
32
|
+
@session = SimplyAuth::Session.new(email: @user.email, password: session["simply_auth_form_submission"]["attributes"]["password"])
|
20
33
|
@session.save
|
34
|
+
session.delete("simply_auth_form_submission")
|
21
35
|
session[:simply_auth_session_id] = @session.id
|
22
36
|
redirect_to "/"
|
23
37
|
else
|
24
|
-
|
38
|
+
redirect_to new_registration_path(form: @signup_form.id)
|
25
39
|
end
|
26
40
|
end
|
27
41
|
|
28
42
|
private
|
29
43
|
|
30
|
-
def user_params
|
31
|
-
|
44
|
+
def user_params(step_attributes)
|
45
|
+
permissions = []
|
46
|
+
data_attributes = []
|
47
|
+
step_attributes.each do |attribute|
|
48
|
+
if attribute.starts_with?("data.")
|
49
|
+
data_attributes.push(attribute.gsub("data.", ""))
|
50
|
+
else
|
51
|
+
permissions << attribute
|
52
|
+
end
|
53
|
+
end
|
54
|
+
if data_attributes.any?
|
55
|
+
permissions.push(data: data_attributes)
|
56
|
+
end
|
57
|
+
params.require(:user).permit(permissions)
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_signup_form
|
61
|
+
@user_pool = SimplyAuth::UserPool.find(SimplyAuth::Config.user_pool_id)
|
62
|
+
forms = SimplyAuth::SignupForm.all(@user_pool.application_id)
|
63
|
+
@signup_form = params[:form] ? forms.find{|f| f.id == params[:form]} : forms.first
|
64
|
+
session["simply_auth_form_submission"] ||= {}
|
65
|
+
session["simply_auth_form_submission"]["attributes"] ||= {}
|
66
|
+
@step = @signup_form.steps.find do |s|
|
67
|
+
s["attributes"].any? do |attribute|
|
68
|
+
if attribute.starts_with?("data.")
|
69
|
+
session["simply_auth_form_submission"]["attributes"]["data"][attribute.gsub("data.", "")].blank?
|
70
|
+
else
|
71
|
+
session["simply_auth_form_submission"]["attributes"][attribute].blank?
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
32
75
|
end
|
33
76
|
end
|
34
77
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module SimplyAuth
|
2
2
|
class UserPool < Model
|
3
3
|
validates :name, presence: true
|
4
|
-
attr_accessor :name
|
4
|
+
attr_accessor :name, :application_id
|
5
5
|
def attributes
|
6
|
-
super.merge(name: name)
|
6
|
+
super.merge(name: name, application_id: application_id)
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.instance_path(ids = [])
|
@@ -1,72 +1 @@
|
|
1
|
-
|
2
|
-
<div class='d-flex flex-row'>
|
3
|
-
<h2 class='mr-auto'>Sign Up</h2>
|
4
|
-
<div>
|
5
|
-
<span class='mr-2'>Already a member?</span>
|
6
|
-
<%= link_to "Log In", new_session_path, class: "btn btn-secondary" %>
|
7
|
-
</div>
|
8
|
-
</div>
|
9
|
-
<%= form_for @user, url: [:registrations], html: {class: "needs-validation", novalidate: true} do |f| %>
|
10
|
-
<div class='form-group'>
|
11
|
-
<%= f.label :name, "Name *" %>
|
12
|
-
<%= f.text_field :name, class: "form-control #{"is-invalid" if @user.errors[:name].any? }", required: true %>
|
13
|
-
<div class='invalid-feedback'>
|
14
|
-
<% if @user.errors[:name].any? %>
|
15
|
-
<%= @user.errors[:name].map{|m| "Name #{m}."}.join(" ") %>
|
16
|
-
<% else %>
|
17
|
-
Please provide your name.
|
18
|
-
<% end %>
|
19
|
-
</div>
|
20
|
-
</div>
|
21
|
-
<div class='form-group'>
|
22
|
-
<%= f.label :email, "Email *" %>
|
23
|
-
<%= f.text_field :email, class: "form-control #{"is-invalid" if @user.errors[:email].any? }", required: true, type: :email %>
|
24
|
-
<div class='invalid-feedback'>
|
25
|
-
<% if @user.errors[:email].grep(/taken/).any? %>
|
26
|
-
That email is already registered. Would you like to <%= link_to "sign in", new_session_path(session: {email: @user.email}) %>?
|
27
|
-
<% elsif @user.errors[:email].any? %>
|
28
|
-
<%= @user.errors[:email].map{|m| "Email #{m}."}.join(" ") %>
|
29
|
-
<% else %>
|
30
|
-
Please provide your email.
|
31
|
-
<% end %>
|
32
|
-
</div>
|
33
|
-
</div>
|
34
|
-
<div class='form-group'>
|
35
|
-
<%= f.label :password, "Password *" %>
|
36
|
-
<%= f.password_field :password, class: "form-control #{"is-invalid" if @user.errors[:password].any? }", required: true %>
|
37
|
-
<div class='invalid-feedback'>
|
38
|
-
<% if @user.errors[:password].any? %>
|
39
|
-
<%= @user.errors[:password].map{|m| "Password #{m}."}.join(" ") %>
|
40
|
-
<% else %>
|
41
|
-
Please provide a password.
|
42
|
-
<% end %>
|
43
|
-
</div>
|
44
|
-
</div>
|
45
|
-
<%= render partial: "additional_fields", locals: {form: f} %>
|
46
|
-
<%= f.submit "Sign Up", class: "btn btn-primary" %>
|
47
|
-
<% end %>
|
48
|
-
|
49
|
-
<script>
|
50
|
-
(function() {
|
51
|
-
'use strict';
|
52
|
-
window.addEventListener('load', function() {
|
53
|
-
var forms = document.getElementsByClassName('needs-validation');
|
54
|
-
var validation = Array.prototype.filter.call(forms, function(form) {
|
55
|
-
form.addEventListener('submit', function(event) {
|
56
|
-
if (form.checkValidity() === false) {
|
57
|
-
event.preventDefault();
|
58
|
-
event.stopPropagation();
|
59
|
-
}
|
60
|
-
form.classList.add('was-validated');
|
61
|
-
}, false);
|
62
|
-
});
|
63
|
-
}, false);
|
64
|
-
})();
|
65
|
-
</script>
|
66
|
-
<style>
|
67
|
-
.field_with_errors ~ .invalid-feedback,
|
68
|
-
.field_with_errors ~ .invalid-tooltip {
|
69
|
-
display: block;
|
70
|
-
}
|
71
|
-
</style>
|
72
|
-
</div>
|
1
|
+
<%= @html.html_safe %>
|
@@ -0,0 +1,72 @@
|
|
1
|
+
<div class='container'>
|
2
|
+
<div class='d-flex flex-row'>
|
3
|
+
<h2 class='mr-auto'>Sign Up</h2>
|
4
|
+
<div>
|
5
|
+
<span class='mr-2'>Already a member?</span>
|
6
|
+
<%= link_to "Log In", new_session_path, class: "btn btn-secondary" %>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<%= form_for @user, url: [:registrations], html: {class: "needs-validation", novalidate: true} do |f| %>
|
10
|
+
<div class='form-group'>
|
11
|
+
<%= f.label :name, "Name *" %>
|
12
|
+
<%= f.text_field :name, class: "form-control #{"is-invalid" if @user.errors[:name].any? }", required: true %>
|
13
|
+
<div class='invalid-feedback'>
|
14
|
+
<% if @user.errors[:name].any? %>
|
15
|
+
<%= @user.errors[:name].map{|m| "Name #{m}."}.join(" ") %>
|
16
|
+
<% else %>
|
17
|
+
Please provide your name.
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class='form-group'>
|
22
|
+
<%= f.label :email, "Email *" %>
|
23
|
+
<%= f.text_field :email, class: "form-control #{"is-invalid" if @user.errors[:email].any? }", required: true, type: :email %>
|
24
|
+
<div class='invalid-feedback'>
|
25
|
+
<% if @user.errors[:email].grep(/taken/).any? %>
|
26
|
+
That email is already registered. Would you like to <%= link_to "sign in", new_session_path(session: {email: @user.email}) %>?
|
27
|
+
<% elsif @user.errors[:email].any? %>
|
28
|
+
<%= @user.errors[:email].map{|m| "Email #{m}."}.join(" ") %>
|
29
|
+
<% else %>
|
30
|
+
Please provide your email.
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class='form-group'>
|
35
|
+
<%= f.label :password, "Password *" %>
|
36
|
+
<%= f.password_field :password, class: "form-control #{"is-invalid" if @user.errors[:password].any? }", required: true %>
|
37
|
+
<div class='invalid-feedback'>
|
38
|
+
<% if @user.errors[:password].any? %>
|
39
|
+
<%= @user.errors[:password].map{|m| "Password #{m}."}.join(" ") %>
|
40
|
+
<% else %>
|
41
|
+
Please provide a password.
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
<%= render partial: "additional_fields", locals: {form: f} %>
|
46
|
+
<%= f.submit "Sign Up", class: "btn btn-primary" %>
|
47
|
+
<% end %>
|
48
|
+
|
49
|
+
<script>
|
50
|
+
(function() {
|
51
|
+
'use strict';
|
52
|
+
window.addEventListener('load', function() {
|
53
|
+
var forms = document.getElementsByClassName('needs-validation');
|
54
|
+
var validation = Array.prototype.filter.call(forms, function(form) {
|
55
|
+
form.addEventListener('submit', function(event) {
|
56
|
+
if (form.checkValidity() === false) {
|
57
|
+
event.preventDefault();
|
58
|
+
event.stopPropagation();
|
59
|
+
}
|
60
|
+
form.classList.add('was-validated');
|
61
|
+
}, false);
|
62
|
+
});
|
63
|
+
}, false);
|
64
|
+
})();
|
65
|
+
</script>
|
66
|
+
<style>
|
67
|
+
.field_with_errors ~ .invalid-feedback,
|
68
|
+
.field_with_errors ~ .invalid-tooltip {
|
69
|
+
display: block;
|
70
|
+
}
|
71
|
+
</style>
|
72
|
+
</div>
|
data/lib/simply_auth/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simply_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Fogle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- app/views/simply_auth/passwords/new.html.erb
|
89
89
|
- app/views/simply_auth/registrations/_additional_fields.html.erb
|
90
90
|
- app/views/simply_auth/registrations/new.html.erb
|
91
|
+
- app/views/simply_auth/registrations/old-new.html.erb
|
91
92
|
- app/views/simply_auth/sessions/new.html.erb
|
92
93
|
- config/routes.rb
|
93
94
|
- lib/simply_auth.rb
|