jobshop 0.0.4.1p4 → 0.0.4.2p4
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/concerns/registration_token_validation.rb +25 -0
- data/app/controllers/jobshop/application_controller.rb +0 -5
- data/app/controllers/jobshop/dashboards_controller.rb +6 -0
- data/app/controllers/jobshop/sites/registrations_controller.rb +9 -18
- data/app/models/{application_record.rb → jobshop/application_record.rb} +0 -0
- data/app/models/jobshop/registration.rb +37 -0
- data/app/models/jobshop/site.rb +8 -7
- data/app/models/jobshop/user.rb +2 -0
- data/app/{resources/jobshop/application_resource.rb → models/jobshop/virtual_record.rb} +1 -1
- data/app/views/jobshop/dashboards/show.html.haml +1 -0
- data/app/views/jobshop/sites/registrations/new.html.haml +5 -2
- data/config/routes.rb +3 -1
- data/db/migrate/20160323132658_rename_configuration_token_to_registration_token.rb +9 -0
- data/lib/generators/jobshop/site/site_generator.rb +4 -4
- data/lib/jobshop/version.rb +1 -1
- metadata +8 -4
- data/app/resources/jobshop/registration.rb +0 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ebd478bfbc679ef91271554cd5a9f8c0bd12475d
|
|
4
|
+
data.tar.gz: 81649a0c32fbfe838c26046da849bd94ad8d08db
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c1df82ba9a8337d6f4262bc3c3c093fc4581e0c402c7b15713b334d4b358214aa1bad765b0c5274c67ddfee9fe4131689d772e442a3002ebd2be9f91232cd6bf
|
|
7
|
+
data.tar.gz: 69071e78619c4e6d17d141cd00b89a7032a61d1201b915ed617071143d0337a281b6f6334cb750993c52f6a542ec6a5910313bad1e5ca83963dcd0512798523f
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module RegistrationTokenValidation
|
|
2
|
+
extend ActiveSupport::Concern
|
|
3
|
+
|
|
4
|
+
included do
|
|
5
|
+
before_action :validate_registration_token!
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def validate_registration_token!
|
|
9
|
+
redirect_to new_user_session_path unless token_present_and_resolves?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def token_present_and_resolves?
|
|
13
|
+
params[:registration_token].present? && registration_token_resolves?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def registration_token_resolves?
|
|
17
|
+
encrypted_token = Devise.token_generator.digest(
|
|
18
|
+
Jobshop::Site, :registration_token, params[:registration_token])
|
|
19
|
+
|
|
20
|
+
configurable = Jobshop::Site.find_by(
|
|
21
|
+
id: params[:site_id], registration_token: encrypted_token)
|
|
22
|
+
|
|
23
|
+
configurable && configurable.registration_token_period_valid?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -13,10 +13,5 @@ module Jobshop
|
|
|
13
13
|
# flash[:alert] = "Please sign in."
|
|
14
14
|
# redirect_to(request.referrer || main_app.root_path)
|
|
15
15
|
# end
|
|
16
|
-
|
|
17
|
-
def pundit_user
|
|
18
|
-
# raise Jobshop::NoCurrentUserMethodError unless respond_to?(:current_user)
|
|
19
|
-
# current_user
|
|
20
|
-
end
|
|
21
16
|
end
|
|
22
17
|
end
|
|
@@ -2,31 +2,22 @@ require_dependency "jobshop/application_controller"
|
|
|
2
2
|
|
|
3
3
|
module Jobshop
|
|
4
4
|
class Sites::RegistrationsController < ApplicationController
|
|
5
|
-
|
|
5
|
+
include RegistrationTokenValidation
|
|
6
6
|
|
|
7
7
|
def new
|
|
8
|
-
@site = Jobshop::Site.find(params[:site_id])
|
|
9
|
-
authenticate_user! if @site.owner
|
|
10
8
|
@registration = Jobshop::Registration.new(params)
|
|
9
|
+
authenticate_user! if @registration.site.owner
|
|
11
10
|
end
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def configure_by_token?
|
|
16
|
-
@configure_by_token ||= params[:configuration_token].present? &&
|
|
17
|
-
configuration_token_valid?
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def configuration_token_valid?
|
|
21
|
-
@configuration_token_valid ||= begin
|
|
22
|
-
encrypted_configuration_token = Devise.token_generator.digest(
|
|
23
|
-
Jobshop::Site, :configuration_token, params[:configuration_token])
|
|
24
|
-
|
|
25
|
-
configurable = Jobshop::Site.find_by(
|
|
26
|
-
configuration_token: encrypted_configuration_token)
|
|
12
|
+
def create
|
|
13
|
+
@registration = Jobshop::Registration.new(params)
|
|
27
14
|
|
|
28
|
-
|
|
15
|
+
if @registration.save
|
|
16
|
+
sign_in_and_redirect(@registration.user)
|
|
17
|
+
else
|
|
18
|
+
render(:new)
|
|
29
19
|
end
|
|
30
20
|
end
|
|
31
21
|
end
|
|
32
22
|
end
|
|
23
|
+
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Jobshop
|
|
2
|
+
class Registration < VirtualRecord
|
|
3
|
+
memo_attr(:user) { site.users.build(user_params) }
|
|
4
|
+
memo_attr(:site) {
|
|
5
|
+
record = Jobshop::Site.find(params[:site_id])
|
|
6
|
+
record.assign_attributes(site_params)
|
|
7
|
+
record
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
def save
|
|
11
|
+
return false unless valid?
|
|
12
|
+
|
|
13
|
+
result = ActiveRecord::Base.transaction do
|
|
14
|
+
user.save!
|
|
15
|
+
site.update!(owner: user)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
result != false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def registration_params
|
|
24
|
+
params.fetch(:registration, ActionController::Parameters.new)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def site_params
|
|
28
|
+
registration_params.fetch(
|
|
29
|
+
:site, ActionController::Parameters.new).permit(:name)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def user_params
|
|
33
|
+
registration_params.fetch(:user, ActionController::Parameters.new).
|
|
34
|
+
permit(:email, :password, :password_confirmation)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
data/app/models/jobshop/site.rb
CHANGED
|
@@ -3,19 +3,20 @@ module Jobshop
|
|
|
3
3
|
belongs_to :owner, class_name: "Jobshop::User"
|
|
4
4
|
has_many :users, class_name: "Jobshop::User"
|
|
5
5
|
|
|
6
|
-
def
|
|
7
|
-
raw, encrypted = Devise.token_generator.generate(
|
|
6
|
+
def generate_registration_token
|
|
7
|
+
raw, encrypted = Devise.token_generator.generate(
|
|
8
|
+
self.class, :registration_token)
|
|
8
9
|
|
|
9
|
-
self.
|
|
10
|
-
self.
|
|
10
|
+
self.registration_token = encrypted
|
|
11
|
+
self.registration_token_sent_at = Time.now.utc
|
|
11
12
|
self.save(validate: false)
|
|
12
13
|
|
|
13
14
|
raw
|
|
14
15
|
end
|
|
15
16
|
|
|
16
|
-
def
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
def registration_token_period_valid?
|
|
18
|
+
registration_token_sent_at &&
|
|
19
|
+
registration_token_sent_at.utc >= 30.minutes.ago.utc
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
end
|
data/app/models/jobshop/user.rb
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
%h1 Welcome aboard!
|
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
%section
|
|
6
6
|
= form_for @registration, url: site_registration_path(@registration.site) do |f|
|
|
7
7
|
.card-content
|
|
8
|
+
= hidden_field_tag(:registration_token, params[:registration_token])
|
|
8
9
|
%h1.center Getting Started
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
- if @registration.errors.present?
|
|
12
|
+
%p.error try again
|
|
13
|
+
|
|
11
14
|
= f.fields_for(@registration.site) do |site_f|
|
|
12
15
|
%ul.input-field
|
|
13
|
-
%li= site_f.label(:name, "Organization") + site_f.text_field(:name)
|
|
16
|
+
%li= site_f.label(:name, "Organization Name") + site_f.text_field(:name)
|
|
14
17
|
|
|
15
18
|
= f.fields_for(@registration.user) do |user_f|
|
|
16
19
|
%ul.input-field
|
data/config/routes.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Jobshop::Engine.routes.draw do
|
|
2
2
|
devise_for :users, class_name: "Jobshop::User", module: :devise
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
get "/dashboard", to: "dashboards#show", as: :user_root
|
|
5
|
+
|
|
6
|
+
resources :sites, only: [ ] do
|
|
5
7
|
resource :registration, only: [ :new, :create ],
|
|
6
8
|
controller: "sites/registrations"
|
|
7
9
|
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class RenameConfigurationTokenToRegistrationToken < ActiveRecord::Migration[5.0]
|
|
2
|
+
def change
|
|
3
|
+
rename_column :jobshop_sites, :configuration_token, :registration_token
|
|
4
|
+
rename_column :jobshop_sites, :configuration_token_sent_at,
|
|
5
|
+
:registration_token_sent_at
|
|
6
|
+
|
|
7
|
+
add_index :jobshop_sites, [ "registration_token" ], unique: true
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -22,10 +22,10 @@ module Jobshop
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def generate_token
|
|
25
|
-
@token = site.
|
|
25
|
+
@token = site.generate_registration_token
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
def
|
|
28
|
+
def generate_secure_registration_link
|
|
29
29
|
link_protocol = Rails.env.development? ? "http" : "https"
|
|
30
30
|
link_host = Rails.env.development? ? "localhost:3000" : "YOUR-HOST-NAME"
|
|
31
31
|
# TODO: Give environments besides development a decent host and
|
|
@@ -35,11 +35,11 @@ module Jobshop
|
|
|
35
35
|
new_site_registration_url(@site,
|
|
36
36
|
protocol: link_protocol,
|
|
37
37
|
host: link_host,
|
|
38
|
-
|
|
38
|
+
registration_token: @token
|
|
39
39
|
)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
42
|
+
def print_secure_registration_link
|
|
43
43
|
say <<-MESSAGE
|
|
44
44
|
### JOBSHOP - IMPORTANT INFORMATION ############################################
|
|
45
45
|
|
data/lib/jobshop/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jobshop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.4.
|
|
4
|
+
version: 0.0.4.2p4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Frank J. Mattia
|
|
@@ -304,18 +304,21 @@ files:
|
|
|
304
304
|
- app/assets/stylesheets/jobshop/generics.scss
|
|
305
305
|
- app/assets/stylesheets/jobshop/material-icons.scss
|
|
306
306
|
- app/assets/stylesheets/jobshop/site/configuration.scss
|
|
307
|
+
- app/controllers/concerns/registration_token_validation.rb
|
|
307
308
|
- app/controllers/jobshop/application_controller.rb
|
|
309
|
+
- app/controllers/jobshop/dashboards_controller.rb
|
|
308
310
|
- app/controllers/jobshop/pages_controller.rb
|
|
309
311
|
- app/controllers/jobshop/sites/registrations_controller.rb
|
|
310
312
|
- app/controllers/jobshop/sites_controller.rb
|
|
311
313
|
- app/helpers/jobshop/application_helper.rb
|
|
312
314
|
- app/jobs/jobshop/application_job.rb
|
|
313
|
-
- app/models/application_record.rb
|
|
315
|
+
- app/models/jobshop/application_record.rb
|
|
316
|
+
- app/models/jobshop/registration.rb
|
|
314
317
|
- app/models/jobshop/site.rb
|
|
315
318
|
- app/models/jobshop/user.rb
|
|
319
|
+
- app/models/jobshop/virtual_record.rb
|
|
316
320
|
- app/policies/jobshop/application_policy.rb
|
|
317
|
-
- app/
|
|
318
|
-
- app/resources/jobshop/registration.rb
|
|
321
|
+
- app/views/jobshop/dashboards/show.html.haml
|
|
319
322
|
- app/views/jobshop/pages/index.html.haml
|
|
320
323
|
- app/views/jobshop/sites/registrations/new.html.haml
|
|
321
324
|
- app/views/layouts/jobshop/application.html.haml
|
|
@@ -329,6 +332,7 @@ files:
|
|
|
329
332
|
- db/migrate/20160321212058_add_site_id_to_users.rb
|
|
330
333
|
- db/migrate/20160321213638_add_foreign_key_for_site.rb
|
|
331
334
|
- db/migrate/20160322040604_add_owner_id_to_sites.rb
|
|
335
|
+
- db/migrate/20160323132658_rename_configuration_token_to_registration_token.rb
|
|
332
336
|
- db/migrate/keep
|
|
333
337
|
- lib/generators/jobshop/config/config_generator.rb
|
|
334
338
|
- lib/generators/jobshop/config/templates/jobshop.rb.tt
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Jobshop
|
|
2
|
-
class Registration < Jobshop::ApplicationResource
|
|
3
|
-
memo_attr(:user) { site.users.build(user_params) }
|
|
4
|
-
memo_attr(:site) { Jobshop::Site.find(params[:site_id]) }
|
|
5
|
-
|
|
6
|
-
def save
|
|
7
|
-
return false unless valid?
|
|
8
|
-
|
|
9
|
-
result = ActiveRecord::Base.transaction do
|
|
10
|
-
user.save!
|
|
11
|
-
site.update!(owner: user)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
result != false
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
def site_params
|
|
19
|
-
params.fetch(:site, ActionController::Parameters.new).permit(:name)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def user_params
|
|
23
|
-
params.fetch(:user, ActionController::Parameters.new).permit(:email, :password, :password_confirmation)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|