Add webauthn
This commit is contained in:
32
db/migrate/20251104042155_create_webauthn_credentials.rb
Normal file
32
db/migrate/20251104042155_create_webauthn_credentials.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
class CreateWebauthnCredentials < ActiveRecord::Migration[8.1]
|
||||
def change
|
||||
create_table :webauthn_credentials do |t|
|
||||
# Reference to the user who owns this credential
|
||||
t.references :user, null: false, foreign_key: true, index: true
|
||||
|
||||
# WebAuthn specification fields
|
||||
t.string :external_id, null: false, index: { unique: true } # credential ID (base64)
|
||||
t.string :public_key, null: false # public key (base64)
|
||||
t.integer :sign_count, null: false, default: 0 # signature counter (clone detection)
|
||||
|
||||
# Metadata
|
||||
t.string :nickname # User-friendly name ("MacBook Touch ID")
|
||||
t.string :authenticator_type # "platform" or "cross-platform"
|
||||
t.boolean :backup_eligible, default: false # Can be backed up (passkey sync)
|
||||
t.boolean :backup_state, default: false # Currently backed up
|
||||
|
||||
# Tracking
|
||||
t.datetime :last_used_at
|
||||
t.string :last_used_ip
|
||||
t.string :user_agent # Browser/OS info
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
# Add composite index for user-specific queries
|
||||
add_index :webauthn_credentials, [:user_id, :external_id], unique: true
|
||||
add_index :webauthn_credentials, [:user_id, :last_used_at]
|
||||
add_index :webauthn_credentials, :authenticator_type
|
||||
add_index :webauthn_credentials, :last_used_at
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user