jobshop 0.0.107 → 0.0.109

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6db9a1343f8edf846847e1805973f11c915e45da
4
- data.tar.gz: a453bf3b77f34f67eb3280d088b1ab3389940504
3
+ metadata.gz: 96900cedcbdfb9e09aae0067c308a82f31fc6e4a
4
+ data.tar.gz: c6a7cd552d51c9925c8d4590c97a326290232862
5
5
  SHA512:
6
- metadata.gz: 86214fb2f21c808174824429f5e8bc2329adbd4352cd825bb7f229731f8c914b294966ced7ec89b876343cdba02f80e0fd68e391b4507538f5784f1836dd6fb9
7
- data.tar.gz: '08a3d69eceb4475b000f0504a4a3d8956ed5eef8e11e4312876841e6824139f5edb8d264e3d66d5d90541dd542d885fb486ca1d4b9f033fb63e317a6d0d732dc'
6
+ metadata.gz: 612ada9d81256c782decccdc72065ac59ef4811c7f3864d06dd0ce206270205d339ef86fd19733a46cbc8533012e2c19e38873beecb5ba35054b9da7145f99fb
7
+ data.tar.gz: 68570e717e4e1fa8c152836213a62e6471b9b2ea2ef5390e5db1a18e05608add3812c7c776cf5d9528762fd7b8a55d5276ca253c13e5b5b7c07aed5f360f9a20
@@ -0,0 +1,13 @@
1
+ require_dependency "jobshop/application_controller"
2
+
3
+ module Jobshop
4
+ class PlacesController < ApplicationController
5
+ def show
6
+ console
7
+ end
8
+
9
+ private def session_activations
10
+ current_user.session_activations
11
+ end; helper_method :session_activations
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require_dependency "jobshop/application_controller"
2
+
3
+ module Jobshop
4
+ class SessionActivationsController < ApplicationController
5
+ def destroy
6
+ revoked_session.destroy
7
+ end
8
+
9
+ private def revoked_session
10
+ @revoked_session ||= current_user.session_activations.find(params[:id])
11
+ end; helper_method :revoked_session
12
+ end
13
+ end
@@ -0,0 +1,30 @@
1
+ module Jobshop
2
+ class SessionActivation < ApplicationRecord
3
+ LIMIT = 20
4
+
5
+ class << self
6
+ def active?(token)
7
+ token && where(activation_token: token).exists?
8
+ end
9
+
10
+ def activate(token)
11
+ activation = create!(activation_token: token)
12
+ enforce_active_session_quota
13
+ activation
14
+ end
15
+
16
+ def deactivate(token)
17
+ return unless token
18
+ where(activation_token: token).delete_all
19
+ end
20
+
21
+ def enforce_active_session_quota
22
+ order("created_at desc").offset(LIMIT).destroy_all
23
+ end
24
+
25
+ def exclusive(token)
26
+ where("activation_token != ?", id).delete_all
27
+ end
28
+ end
29
+ end
30
+ end
@@ -6,7 +6,7 @@ module Jobshop
6
6
 
7
7
  belongs_to :team, optional: true
8
8
  has_one :default_dashboard, class_name: "Jobshop::Dashboard", through: :team
9
- has_many :active_sessions, dependent: :destroy
9
+ has_many :session_activations, dependent: :destroy
10
10
 
11
11
  validates :email,
12
12
  presence: { if: :email_required? },
@@ -28,15 +28,15 @@ module Jobshop
28
28
  end
29
29
 
30
30
  def activate_session
31
- active_sessions.activate(SecureRandom.hex).activation_id
31
+ session_activations.activate(SecureRandom.hex).activation_token
32
32
  end
33
33
 
34
34
  def exclusive_session(id)
35
- active_sessions.exclusive(id)
35
+ session_activations.exclusive(id)
36
36
  end
37
37
 
38
38
  def session_active?(id)
39
- active_sessions.active?(id)
39
+ session_activations.active?(id)
40
40
  end
41
41
 
42
42
  private
@@ -0,0 +1,22 @@
1
+ %div.mdl-layout.mdl-js-layout.mdl-layout--fixed-header
2
+ %header.mdl-layout__header.mdl-layout__header--waterfall
3
+ %div.mdl-layout__header-row
4
+ %a.mdl-layout-title(href="#{jobshop.root_path}") Jobshop
5
+ %div.mdl-layout-spacer
6
+ %div.static-navigation-container
7
+ %nav.mdl-navigation
8
+ %a.mdl-navigation__link{ href: jobshop.about_path }
9
+ About
10
+ %a.mdl-navigation__link.mdl-color-text--pink{ href: jobshop.teams_lookup_path }
11
+ Sign In
12
+
13
+ %main
14
+ %div
15
+ You are currently logged in at these stations:
16
+ %ul
17
+ - session_activations.each do |s|
18
+ %li{ id: s.id }
19
+ %p
20
+ = s.id
21
+ = "(current)" if s.activation_token == session[:activation_token]
22
+ %p= link_to "log this out", revoke_session_path(s), remote: true, method: :delete, data: { confirm: "Are you sure you want to log out of the selected session?" }
@@ -0,0 +1 @@
1
+ $("li#<%= revoked_session.id %>").remove();
@@ -1,45 +1,15 @@
1
- %div(class="demo-layout mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-layout--fixed-header")
2
- %header(class="demo-header mdl-layout__header mdl-color--grey-100 mdl-color-text--grey-600")
3
- %div(class="mdl-layout__header-row")
4
- %span(class="mdl-layout-title") Home
5
- %div(class="mdl-layout-spacer")
6
- %div(class="mdl-textfield mdl-js-textfield mdl-textfield--expandable")
7
- %label(class="mdl-button mdl-js-button mdl-button--icon" for="search")
8
- %i(class="material-icons") search
9
- %div(class="mdl-textfield__expandable-holder")
10
- %input(class="mdl-textfield__input" type="text" id="search")
11
- %label(class="mdl-textfield__label" for="search") Enter your query...
12
- %button(class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon" id="hdrbtn")
13
- %i(class="material-icons") more_vert
14
- %ul(class="mdl-menu mdl-js-menu mdl-js-ripple-effect mdl-menu--bottom-right" for="hdrbtn")
15
- %li(class="mdl-menu__item")= link_to("About", about_path)
16
- %li(class="mdl-menu__item") Contact
17
- %li(class="mdl-menu__item") Legal information
18
- %div(class="demo-drawer mdl-layout__drawer mdl-color--blue-grey-900 mdl-color-text--indigo-50")
19
- %header(class="demo-drawer-header")
20
- %i(class="material-icons" style="font-size: 48px;") person
21
- //%img(class="demo-avatar" src="images/user.jpg")
22
- %div(class="demo-avatar-dropdown")
23
- %span= current_user.email
24
- %div(class="mdl-layout-spacer")
25
- %button(id="accbtn" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--icon")
26
- %i(class="material-icons" role="presentation") arrow_drop_down
27
- %span(class="visuallyhidden") User Actions
28
- %ul(class="mdl-menu mdl-menu--bottom-right mdl-js-menu mdl-js-ripple-effect" for="accbtn")
29
- %li(class="mdl-menu__item")
30
- %a(href="#{destroy_user_session_path}" data-method="delete") Sign out
31
- %nav(class="demo-navigation mdl-navigation mdl-color--blue-grey-800")
32
- %a(class="mdl-navigation__link" href="#{root_path}")
33
- %i(class="mdl-color-text--blue-grey-400 material-icons" role="presentation") home
34
- Home
35
- %a(class="mdl-navigation__link" href="")
36
- %i(class="mdl-color-text--blue-grey-400 material-icons" role="presentation") flag
37
- Updates
38
- %div(class="mdl-layout-spacer")
39
- %a(class="mdl-navigation__link" href="")
40
- %i(class="mdl-color-text--blue-grey-400 material-icons" role="presentation") help_outline
41
- Help
1
+ %div.mdl-layout.mdl-js-layout.mdl-layout--fixed-header
2
+ %header.mdl-layout__header.mdl-layout__header--waterfall
3
+ %div.mdl-layout__header-row
4
+ %a.mdl-layout-title(href="#{jobshop.root_path}") Jobshop
5
+ %div.mdl-layout-spacer
6
+ %div.static-navigation-container
7
+ %nav.mdl-navigation
8
+ %a.mdl-navigation__link{ href: jobshop.about_path }
9
+ About
10
+ %a.mdl-navigation__link.mdl-color-text--pink{ href: jobshop.teams_lookup_path }
11
+ Sign In
42
12
 
43
- %main(class="mdl-layout__content mdl-color--grey-100")
13
+ %main
44
14
  %div(class="mdl-grid demo-content")
45
15
  Welcome Aboard
data/config/routes.rb CHANGED
@@ -5,6 +5,7 @@ Jobshop::Engine.routes.draw do
5
5
  get "teams/:team_id/sign_in" => "sessions#new", as: :new_user_session
6
6
  post "teams/:team_id/sign_in" => "sessions#create", as: :user_session
7
7
  delete "/sign_out" => "sessions#destroy", as: :destroy_user_session
8
+ delete "/revoke(/:id)" => "session_activations#destroy", as: :revoke_session
8
9
  end
9
10
 
10
11
  resources :teams, only: [ ] do
@@ -17,9 +18,10 @@ Jobshop::Engine.routes.draw do
17
18
  controller: "teams/registrations"
18
19
  end
19
20
 
20
- get "/setup" => "setups#show", as: :team_setup
21
+ get "/setup" => "setups#show", as: :team_setup
22
+ get "/places" => "places#show"
21
23
 
22
- get "/about" => redirect("https://jobshop.io"), as: :about
24
+ get "/about" => redirect("https://github.com/jobshop/jobshop"), as: :about
23
25
 
24
26
  root to: "dashboards#show"
25
27
  end
@@ -0,0 +1,84 @@
1
+ class InitializeJobshop < ActiveRecord::Migration[5.0]
2
+ def change
3
+ enable_extension "pgcrypto" unless extension_enabled?("pgcrypto")
4
+
5
+ create_table :jobshop_users,
6
+ id: :uuid, default: -> { "gen_random_uuid()" } do |t|
7
+ ## Database authenticatable
8
+ t.string :email, null: false, default: ""
9
+ t.string :encrypted_password, null: false, default: ""
10
+
11
+ ## Recoverable
12
+ t.string :reset_password_token
13
+ t.datetime :reset_password_sent_at
14
+
15
+ ## Rememberable
16
+ t.datetime :remember_created_at
17
+
18
+ ## Trackable
19
+ # t.integer :sign_in_count, default: 0, null: false
20
+ # t.datetime :current_sign_in_at
21
+ # t.datetime :last_sign_in_at
22
+ # t.string :current_sign_in_ip
23
+ # t.string :last_sign_in_ip
24
+
25
+ ## Confirmable
26
+ # t.string :confirmation_token
27
+ # t.datetime :confirmed_at
28
+ # t.datetime :confirmation_sent_at
29
+ # t.string :unconfirmed_email # Only if using reconfirmable
30
+
31
+ ## Lockable
32
+ # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
33
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
34
+ # t.datetime :locked_at
35
+
36
+ t.uuid :team_id
37
+ t.string :email_authentication_token
38
+ t.datetime :email_authentication_token_sent_at, :datetime
39
+ t.timestamps null: false
40
+ end
41
+
42
+ add_index :jobshop_users, [ :email, :team_id ], unique: true
43
+ add_index :jobshop_users, :reset_password_token, unique: true
44
+ # add_index :jobshop_users, :confirmation_token, unique: true
45
+ # add_index :jobshop_users, :unlock_token, unique: true
46
+
47
+ create_table :jobshop_teams,
48
+ id: :uuid, default: -> { "gen_random_uuid()" } do |t|
49
+ t.string :name
50
+ t.uuid :owner_id
51
+ t.string :registration_token
52
+ t.datetime :registration_token_sent_at
53
+ t.timestamps
54
+ end
55
+
56
+ add_index :jobshop_teams, [ "registration_token" ], unique: true
57
+
58
+ add_foreign_key :jobshop_users,
59
+ :jobshop_teams, column: "team_id", on_delete: :cascade
60
+
61
+ add_foreign_key :jobshop_teams,
62
+ :jobshop_users, column: "owner_id", on_delete: :restrict
63
+
64
+ create_table :jobshop_dashboards,
65
+ id: :uuid, default: -> { "gen_random_uuid()" } do |t|
66
+ t.uuid :team_id
67
+ t.timestamps
68
+ end
69
+
70
+ add_foreign_key :jobshop_dashboards,
71
+ :jobshop_teams, column: "team_id", on_delete: :cascade
72
+
73
+ create_table :jobshop_session_activations,
74
+ id: :uuid, default: -> { "gen_random_uuid()" } do |t|
75
+ t.uuid :user_id, null: false
76
+ t.string :activation_token
77
+
78
+ t.timestamps
79
+ end
80
+
81
+ add_index :jobshop_session_activations, :user_id
82
+ add_index :jobshop_session_activations, :activation_token, unique: true
83
+ end
84
+ end
@@ -40,19 +40,20 @@ module Jobshop
40
40
 
41
41
  initializer "jobshop.active_sessions", after: :load_config_initializers do
42
42
  Warden::Manager.after_set_user except: :fetch do |user, warden, opts|
43
- ActiveSession.deactivate(warden.raw_session["activation_id"])
44
- warden.raw_session["activation_id"] = user.activate_session
43
+ SessionActivation.deactivate(warden.raw_session["activation_token"])
44
+ warden.raw_session["activation_token"] = user.activate_session
45
+ #warden.cookies.permanent.encrypted[:_jobshop_place_id]
45
46
  end
46
47
 
47
48
  Warden::Manager.after_fetch do |user, warden, opts|
48
- unless user.session_active?(warden.raw_session["activation_id"])
49
+ unless user.session_active?(warden.raw_session["activation_token"])
49
50
  warden.logout
50
51
  throw :warden, message: :unauthenticated
51
52
  end
52
53
  end
53
54
 
54
55
  Warden::Manager.before_logout do |user, warden, opts|
55
- ActiveSession.deactivate warden.raw_session["activation_id"]
56
+ SessionActivation.deactivate warden.raw_session["activation_token"]
56
57
  end
57
58
  end
58
59
  end
@@ -6,7 +6,7 @@ module Jobshop
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 0
9
- TINY = 107
9
+ TINY = 109
10
10
  PRE = nil
11
11
 
12
12
  CODE_NAME = "bump it up prime".freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jobshop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.107
4
+ version: 0.0.109
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank J. Mattia
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-09 00:00:00.000000000 Z
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coffee-rails
@@ -112,16 +112,16 @@ dependencies:
112
112
  name: redis-rails
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 5.0.1
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 5.0.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rolify
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -340,6 +340,8 @@ files:
340
340
  - app/controllers/concerns/registration_token_validation.rb
341
341
  - app/controllers/jobshop/application_controller.rb
342
342
  - app/controllers/jobshop/dashboards_controller.rb
343
+ - app/controllers/jobshop/places_controller.rb
344
+ - app/controllers/jobshop/session_activations_controller.rb
343
345
  - app/controllers/jobshop/sessions_controller.rb
344
346
  - app/controllers/jobshop/setups_controller.rb
345
347
  - app/controllers/jobshop/teams/lookups_controller.rb
@@ -349,10 +351,10 @@ files:
349
351
  - app/jobs/jobshop/application_job.rb
350
352
  - app/mailers/jobshop/application_mailer.rb
351
353
  - app/mailers/jobshop/teams_mailer.rb
352
- - app/models/jobshop/active_session.rb
353
354
  - app/models/jobshop/application_record.rb
354
355
  - app/models/jobshop/dashboard.rb
355
356
  - app/models/jobshop/registration.rb
357
+ - app/models/jobshop/session_activation.rb
356
358
  - app/models/jobshop/team.rb
357
359
  - app/models/jobshop/user.rb
358
360
  - app/models/jobshop/virtual_record.rb
@@ -370,6 +372,8 @@ files:
370
372
  - app/views/devise/shared/_links.html.haml
371
373
  - app/views/devise/unlocks/new.html.haml
372
374
  - app/views/jobshop/dashboards/show.html.haml
375
+ - app/views/jobshop/places/show.html.haml
376
+ - app/views/jobshop/session_activations/destroy.js.erb
373
377
  - app/views/jobshop/setups/show.html.haml
374
378
  - app/views/jobshop/teams/lookups/show.html.haml
375
379
  - app/views/jobshop/teams/registrations/new.html.haml
@@ -385,17 +389,7 @@ files:
385
389
  - config/locales/devise.en.yml
386
390
  - config/locales/simple_form.en.yml
387
391
  - config/routes.rb
388
- - db/migrate/20160314122952_devise_create_jobshop_users.rb
389
- - db/migrate/20160314190424_create_jobshop_sites.rb
390
- - db/migrate/20160321212058_add_site_id_to_users.rb
391
- - db/migrate/20160321213638_add_foreign_key_for_site.rb
392
- - db/migrate/20160322040604_add_owner_id_to_sites.rb
393
- - db/migrate/20160323132658_rename_configuration_token_to_registration_token.rb
394
- - db/migrate/20160417210218_create_jobshop_dashboards.rb
395
- - db/migrate/20160425062447_rename_site_to_team.rb
396
- - db/migrate/20160718130211_reindex_jobshop_users_by_email_and_team_id.rb
397
- - db/migrate/20160720201947_add_authentication_token_to_jobshop_users.rb
398
- - db/migrate/20170309001357_create_jobshop_active_sessions.rb
392
+ - db/migrate/20170311194758_initialize_jobshop.rb
399
393
  - db/migrate/keep
400
394
  - exe/jobshop
401
395
  - lib/generators/jobshop/app/USAGE
@@ -1,30 +0,0 @@
1
- module Jobshop
2
- class ActiveSession < ApplicationRecord
3
- LIMIT = 20
4
-
5
- class << self
6
- def active?(id)
7
- id && where(activation_id: id).exists?
8
- end
9
-
10
- def activate(id)
11
- activation = create!(activation_id: id)
12
- enforce_active_session_quota
13
- activation
14
- end
15
-
16
- def deactivate(id)
17
- return unless id
18
- where(activation_id: id).delete_all
19
- end
20
-
21
- def enforce_active_session_quota
22
- order("created_at desc").offset(LIMIT).destroy_all
23
- end
24
-
25
- def exclusive(id)
26
- where("activation_id != ?", id).delete_all
27
- end
28
- end
29
- end
30
- end
@@ -1,44 +0,0 @@
1
- class DeviseCreateJobshopUsers < ActiveRecord::Migration[5.0]
2
- def change
3
- enable_extension "pgcrypto" unless extension_enabled?("pgcrypto")
4
-
5
- create_table :jobshop_users, id: :uuid, default: "gen_random_uuid()" do |t|
6
- ## Database authenticatable
7
- t.string :email, null: false, default: ""
8
- t.string :encrypted_password, null: false, default: ""
9
-
10
- ## Recoverable
11
- t.string :reset_password_token
12
- t.datetime :reset_password_sent_at
13
-
14
- ## Rememberable
15
- t.datetime :remember_created_at
16
-
17
- ## Trackable
18
- # t.integer :sign_in_count, default: 0, null: false
19
- # t.datetime :current_sign_in_at
20
- # t.datetime :last_sign_in_at
21
- # t.string :current_sign_in_ip
22
- # t.string :last_sign_in_ip
23
-
24
- ## Confirmable
25
- # t.string :confirmation_token
26
- # t.datetime :confirmed_at
27
- # t.datetime :confirmation_sent_at
28
- # t.string :unconfirmed_email # Only if using reconfirmable
29
-
30
- ## Lockable
31
- # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
32
- # t.string :unlock_token # Only if unlock strategy is :email or :both
33
- # t.datetime :locked_at
34
-
35
-
36
- t.timestamps null: false
37
- end
38
-
39
- add_index :jobshop_users, :email, unique: true
40
- add_index :jobshop_users, :reset_password_token, unique: true
41
- # add_index :jobshop_users, :confirmation_token, unique: true
42
- # add_index :jobshop_users, :unlock_token, unique: true
43
- end
44
- end
@@ -1,13 +0,0 @@
1
- class CreateJobshopSites < ActiveRecord::Migration[5.0]
2
- def change
3
- enable_extension "pgcrypto" unless extension_enabled?("pgcrypto")
4
-
5
- create_table :jobshop_sites, id: :uuid, default: "gen_random_uuid()" do |t|
6
- t.string :name
7
- t.string :configuration_token
8
- t.datetime :configuration_token_sent_at
9
-
10
- t.timestamps
11
- end
12
- end
13
- end
@@ -1,5 +0,0 @@
1
- class AddSiteIdToUsers < ActiveRecord::Migration[5.0]
2
- def change
3
- add_column :jobshop_users, :site_id, :uuid
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- class AddForeignKeyForSite < ActiveRecord::Migration[5.0]
2
- def change
3
- add_foreign_key :jobshop_users, :jobshop_sites, column: "site_id",
4
- on_delete: :cascade
5
- end
6
- end
@@ -1,7 +0,0 @@
1
- class AddOwnerIdToSites < ActiveRecord::Migration[5.0]
2
- def change
3
- add_column :jobshop_sites, :owner_id, :uuid
4
- add_foreign_key :jobshop_sites, :jobshop_users, column: "owner_id",
5
- on_delete: :restrict
6
- end
7
- end
@@ -1,9 +0,0 @@
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
@@ -1,15 +0,0 @@
1
- class CreateJobshopDashboards < ActiveRecord::Migration[5.0]
2
- def change
3
- enable_extension "pgcrypto" unless extension_enabled?("pgcrypto")
4
-
5
- create_table(:jobshop_dashboards, id: :uuid,
6
- default: "gen_random_uuid()")do |t|
7
- t.uuid :site_id
8
-
9
- t.timestamps
10
- end
11
-
12
- add_foreign_key(:jobshop_dashboards, :jobshop_sites, column: "site_id",
13
- on_delete: :cascade)
14
- end
15
- end
@@ -1,30 +0,0 @@
1
- class RenameSiteToTeam < ActiveRecord::Migration[5.0]
2
- def change
3
- reversible do |dir|
4
- dir.up do
5
- remove_foreign_key :jobshop_users, column: "site_id"
6
- remove_foreign_key :jobshop_dashboards, column: "site_id"
7
- remove_foreign_key :jobshop_sites, column: "owner_id"
8
- end
9
- dir.down do
10
- add_foreign_key :jobshop_users, :jobshop_sites, column: "site_id",
11
- on_delete: :cascade
12
- add_foreign_key :jobshop_dashboards, :jobshop_sites, column: "site_id",
13
- on_delete: :cascade
14
- add_foreign_key :jobshop_sites, :jobshop_users, column: "owner_id",
15
- on_delete: :restrict
16
- end
17
- end
18
-
19
- rename_table :jobshop_sites, :jobshop_teams
20
- rename_column :jobshop_users, :site_id, :team_id
21
- rename_column :jobshop_dashboards, :site_id, :team_id
22
-
23
- add_foreign_key :jobshop_users, :jobshop_teams, column: "team_id",
24
- on_delete: :cascade
25
- add_foreign_key :jobshop_dashboards, :jobshop_teams, column: "team_id",
26
- on_delete: :cascade
27
- add_foreign_key :jobshop_teams, :jobshop_users, column: "owner_id",
28
- on_delete: :restrict
29
- end
30
- end
@@ -1,6 +0,0 @@
1
- class ReindexJobshopUsersByEmailAndTeamId < ActiveRecord::Migration[5.0]
2
- def change
3
- remove_index :jobshop_users, :email
4
- add_index :jobshop_users, [ :email, :team_id ], unique: true
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- class AddAuthenticationTokenToJobshopUsers < ActiveRecord::Migration[5.0]
2
- def change
3
- add_column :jobshop_users, :email_authentication_token, :string
4
- add_column :jobshop_users, :email_authentication_token_sent_at, :datetime
5
- end
6
- end
@@ -1,13 +0,0 @@
1
- class CreateJobshopActiveSessions < ActiveRecord::Migration[5.0]
2
- def change
3
- create_table :jobshop_active_sessions, id: :uuid, default: -> { "gen_random_uuid()" } do |t|
4
- t.uuid :user_id, null: false
5
- t.string :activation_id
6
-
7
- t.timestamps
8
- end
9
-
10
- add_index :jobshop_active_sessions, :user_id
11
- add_index :jobshop_active_sessions, :activation_id, unique: true
12
- end
13
- end