jobshop 0.0.107 → 0.0.109

Sign up to get free protection for your applications and to get access to all the features.
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