mirror of
https://github.com/SrIzan10/hc-harbor.git
synced 2026-05-01 10:45:21 +00:00
may i remind you, mr. wofford, you're under OAuth (#284)
This commit is contained in:
99
db/migrate/20250608195535_create_doorkeeper_tables.rb
Normal file
99
db/migrate/20250608195535_create_doorkeeper_tables.rb
Normal file
@@ -0,0 +1,99 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CreateDoorkeeperTables < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
create_table :oauth_applications do |t|
|
||||
t.string :name, null: false
|
||||
t.string :uid, null: false
|
||||
# Remove `null: false` or use conditional constraint if you are planning to use public clients.
|
||||
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.references :resource_owner, null: false
|
||||
t.references :application, null: false
|
||||
t.string :token, null: false
|
||||
t.integer :expires_in, null: false
|
||||
t.text :redirect_uri, null: false
|
||||
t.string :scopes, null: false, default: ''
|
||||
t.datetime :created_at, null: false
|
||||
t.datetime :revoked_at
|
||||
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
|
||||
|
||||
# Remove `null: false` if you are planning to use Password
|
||||
# Credentials Grant flow that doesn't require an application.
|
||||
t.references :application, null: false
|
||||
|
||||
# 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.string :refresh_token
|
||||
t.integer :expires_in
|
||||
t.string :scopes
|
||||
t.datetime :created_at, null: false
|
||||
t.datetime :revoked_at
|
||||
|
||||
# The authorization server MAY issue a new refresh token, in which case
|
||||
# *the client MUST discard the old refresh token* and replace it with the
|
||||
# new refresh token. The authorization server MAY revoke the old
|
||||
# refresh token after issuing a new refresh token to the client.
|
||||
# @see https://datatracker.ietf.org/doc/html/rfc6749#section-6
|
||||
#
|
||||
# Doorkeeper implementation: 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 want refresh tokens to be instantly
|
||||
# revoked after use.
|
||||
t.string :previous_refresh_token, null: false, default: ""
|
||||
end
|
||||
|
||||
add_index :oauth_access_tokens, :token, unique: true
|
||||
|
||||
# See https://github.com/doorkeeper-gem/doorkeeper/issues/1592
|
||||
if ActiveRecord::Base.connection.adapter_name == "SQLServer"
|
||||
execute <<~SQL.squish
|
||||
CREATE UNIQUE NONCLUSTERED INDEX index_oauth_access_tokens_on_refresh_token ON oauth_access_tokens(refresh_token)
|
||||
WHERE refresh_token IS NOT NULL
|
||||
SQL
|
||||
else
|
||||
add_index :oauth_access_tokens, :refresh_token, unique: true
|
||||
end
|
||||
|
||||
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
|
||||
@@ -0,0 +1,5 @@
|
||||
class AddContinueParamToSignInTokens < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
add_column :sign_in_tokens, :continue_param, :string
|
||||
end
|
||||
end
|
||||
47
db/schema.rb
generated
47
db/schema.rb
generated
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[8.0].define(version: 2025_05_31_120000) do
|
||||
ActiveRecord::Schema[8.0].define(version: 2025_06_08_205244) do
|
||||
create_schema "pganalyze"
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
@@ -299,6 +299,48 @@ ActiveRecord::Schema[8.0].define(version: 2025_05_31_120000) do
|
||||
t.index ["airtable_id"], name: "index_neighborhood_ysws_submissions_on_airtable_id", unique: true
|
||||
end
|
||||
|
||||
create_table "oauth_access_grants", force: :cascade do |t|
|
||||
t.bigint "resource_owner_id", null: false
|
||||
t.bigint "application_id", null: false
|
||||
t.string "token", null: false
|
||||
t.integer "expires_in", null: false
|
||||
t.text "redirect_uri", null: false
|
||||
t.string "scopes", default: "", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "revoked_at"
|
||||
t.index ["application_id"], name: "index_oauth_access_grants_on_application_id"
|
||||
t.index ["resource_owner_id"], name: "index_oauth_access_grants_on_resource_owner_id"
|
||||
t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
|
||||
end
|
||||
|
||||
create_table "oauth_access_tokens", force: :cascade do |t|
|
||||
t.bigint "resource_owner_id"
|
||||
t.bigint "application_id", null: false
|
||||
t.string "token", null: false
|
||||
t.string "refresh_token"
|
||||
t.integer "expires_in"
|
||||
t.string "scopes"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "revoked_at"
|
||||
t.string "previous_refresh_token", default: "", null: false
|
||||
t.index ["application_id"], name: "index_oauth_access_tokens_on_application_id"
|
||||
t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
|
||||
t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
|
||||
t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
|
||||
end
|
||||
|
||||
create_table "oauth_applications", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "uid", null: false
|
||||
t.string "secret", null: false
|
||||
t.text "redirect_uri", null: false
|
||||
t.string "scopes", default: "", null: false
|
||||
t.boolean "confidential", default: true, null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
|
||||
end
|
||||
|
||||
create_table "physical_mails", force: :cascade do |t|
|
||||
t.bigint "user_id", null: false
|
||||
t.integer "mission_type", null: false
|
||||
@@ -401,6 +443,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_05_31_120000) do
|
||||
t.datetime "used_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "continue_param"
|
||||
t.index ["token"], name: "index_sign_in_tokens_on_token"
|
||||
t.index ["user_id"], name: "index_sign_in_tokens_on_user_id"
|
||||
end
|
||||
@@ -463,6 +506,8 @@ ActiveRecord::Schema[8.0].define(version: 2025_05_31_120000) do
|
||||
add_foreign_key "leaderboard_entries", "leaderboards"
|
||||
add_foreign_key "leaderboard_entries", "users"
|
||||
add_foreign_key "mailing_addresses", "users"
|
||||
add_foreign_key "oauth_access_grants", "oauth_applications", column: "application_id"
|
||||
add_foreign_key "oauth_access_tokens", "oauth_applications", column: "application_id"
|
||||
add_foreign_key "physical_mails", "users"
|
||||
add_foreign_key "project_repo_mappings", "repositories"
|
||||
add_foreign_key "project_repo_mappings", "users"
|
||||
|
||||
Reference in New Issue
Block a user