Skip to content

Commit

Permalink
Favor foreign_key option instead of add_foreign_key
Browse files Browse the repository at this point in the history
Small changes:
+ Fix spacing
+ Take advantage of `foreign_key` option
+ Explaining foreign key options for resource owner in a single place
  • Loading branch information
felipeelias committed Apr 6, 2019
1 parent a69027c commit f974045
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 38 deletions.
30 changes: 12 additions & 18 deletions lib/generators/doorkeeper/templates/migration.rb.erb
@@ -1,9 +1,9 @@
class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>
def change
create_table :oauth_applications do |t|
t.string :name, null: false
t.string :uid, null: false
t.string :secret, null: false
t.string :name, null: false
t.string :uid, null: false
t.string :secret, null: false

# Remove `null: false` if you are planning to use grant flows
# that doesn't require redirect URI to be used during authorization
Expand All @@ -18,7 +18,7 @@ class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>

create_table :oauth_access_grants do |t|
t.references :resource_owner, null: false
t.references :application, null: false
t.references :application, null: false, foreign_key: true
t.string :token, null: false
t.integer :expires_in, null: false
t.text :redirect_uri, null: false
Expand All @@ -28,28 +28,23 @@ class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>
end

add_index :oauth_access_grants, :token, unique: true
add_foreign_key(
:oauth_access_grants,
:oauth_applications,
column: :application_id
)

create_table :oauth_access_tokens do |t|
t.references :resource_owner, index: true
t.references :application
t.references :application, null: false, foreign_key: true

# If you use a custom token generator you may need to change this column
# from string to text, so that it accepts tokens larger than 255
# characters. More info on custom token generators in:
# https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
#
# t.text :token, null: false
t.string :token, null: false
# t.text :token, null: false
t.string :token, null: false

t.string :refresh_token
t.integer :expires_in
t.datetime :revoked_at
t.datetime :created_at, null: false
t.datetime :created_at, null: false
t.string :scopes

# If there is a previous_refresh_token column,
Expand All @@ -63,10 +58,9 @@ class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>

add_index :oauth_access_tokens, :token, unique: true
add_index :oauth_access_tokens, :refresh_token, unique: true
add_foreign_key(
:oauth_access_tokens,
:oauth_applications,
column: :application_id
)

# Uncomment below to ensure a valid reference to the resource owner's table
# add_foreign_key :oauth_access_grants, <model>, column: :resource_owner_id
# add_foreign_key :oauth_access_tokens, <model>, column: :resource_owner_id
end
end
46 changes: 26 additions & 20 deletions spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb
Expand Up @@ -3,19 +3,24 @@
class CreateDoorkeeperTables < ActiveRecord::Migration[4.2]
def change
create_table :oauth_applications do |t|
t.string :name, null: false
t.string :uid, null: false
t.string :secret, null: false
t.string :name, null: false
t.string :uid, null: false
t.string :secret, null: false

# Remove `null: false` if you are planning to use grant flows
# that doesn't require redirect URI to be used during authorization
# like Client Credentials flow or Resource Owner Password.
t.text :redirect_uri, null: false
t.string :scopes, null: false, default: ""
t.boolean :confidential, null: false, default: true
t.timestamps null: false
end

add_index :oauth_applications, :uid, unique: true

create_table :oauth_access_grants do |t|
t.integer :resource_owner_id, null: false
t.references :application, null: false
t.references :resource_owner, null: false
t.references :application, null: false, foreign_key: true
t.string :token, null: false
t.integer :expires_in, null: false
t.text :redirect_uri, null: false
Expand All @@ -25,38 +30,39 @@ def change
end

add_index :oauth_access_grants, :token, unique: true
add_foreign_key(
:oauth_access_grants,
:oauth_applications,
column: :application_id
)

create_table :oauth_access_tokens do |t|
t.integer :resource_owner_id
t.references :application
t.references :resource_owner, index: true
t.references :application, null: false, foreign_key: true

# If you use a custom token generator you may need to change this column
# from string to text, so that it accepts tokens larger than 255
# characters. More info on custom token generators in:
# https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
#
# t.text :token, null: false
t.string :token, null: false
# t.text :token, null: false
t.string :token, null: false

t.string :refresh_token
t.integer :expires_in
t.datetime :revoked_at
t.datetime :created_at, null: false
t.string :scopes

# If there is a previous_refresh_token column,
# refresh tokens will be revoked after a related access token is used.
# If there is no previous_refresh_token column,
# previous tokens are revoked as soon as a new access token is created.
# Comment out this line if you'd rather have refresh tokens
# instantly revoked.
t.string :previous_refresh_token, null: false, default: ""
end

add_index :oauth_access_tokens, :token, unique: true
add_index :oauth_access_tokens, :resource_owner_id
add_index :oauth_access_tokens, :refresh_token, unique: true
add_foreign_key(
:oauth_access_tokens,
:oauth_applications,
column: :application_id
)

# Uncomment below to ensure a valid reference to the resource owner's table
add_foreign_key :oauth_access_grants, :users, column: :resource_owner_id
add_foreign_key :oauth_access_tokens, :users, column: :resource_owner_id
end
end

0 comments on commit f974045

Please sign in to comment.