mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 07:53:49 +08:00
DEV: Refactor webauthn to support passkeys (1/3) (#23586)
This is part 1 of 3, split up of PR #23529. This PR refactors the webauthn code to support passkey authentication/registration. Passkeys aren't used yet, that is coming in PRs 2 and 3. Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
@ -1,8 +1,4 @@
|
||||
# frozen_string_literal: true
|
||||
require "webauthn/challenge_generator"
|
||||
require "webauthn/security_key_base_validation_service"
|
||||
require "webauthn/security_key_registration_service"
|
||||
require "webauthn/security_key_authentication_service"
|
||||
|
||||
module DiscourseWebauthn
|
||||
ACCEPTABLE_REGISTRATION_TYPE = "webauthn.create"
|
||||
@ -22,6 +18,8 @@ module DiscourseWebauthn
|
||||
end
|
||||
class UserVerificationError < SecurityKeyError
|
||||
end
|
||||
class UserPresenceError < SecurityKeyError
|
||||
end
|
||||
class ChallengeMismatchError < SecurityKeyError
|
||||
end
|
||||
class InvalidTypeError < SecurityKeyError
|
||||
@ -34,7 +32,9 @@ module DiscourseWebauthn
|
||||
end
|
||||
class MalformedAttestationError < SecurityKeyError
|
||||
end
|
||||
class NotFoundError < SecurityKeyError
|
||||
class KeyNotFoundError < SecurityKeyError
|
||||
end
|
||||
class MalformedPublicKeyCredentialError < SecurityKeyError
|
||||
end
|
||||
class OwnershipError < SecurityKeyError
|
||||
end
|
||||
@ -68,7 +68,21 @@ module DiscourseWebauthn
|
||||
end
|
||||
|
||||
def self.rp_id
|
||||
Discourse.current_hostname
|
||||
Rails.env.production? ? Discourse.current_hostname : "localhost"
|
||||
end
|
||||
|
||||
def self.origin
|
||||
case Rails.env
|
||||
when "development"
|
||||
# defaults to the Ember CLI local port
|
||||
# you might need to change this and the rp_id above
|
||||
# if you are using a non-default port/hostname locally
|
||||
"http://localhost:4200"
|
||||
when "test"
|
||||
"http://localhost:3000"
|
||||
else
|
||||
Discourse.base_url
|
||||
end
|
||||
end
|
||||
|
||||
def self.rp_name
|
||||
|
Reference in New Issue
Block a user