mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Rename experimental_passkeys
to enable_passkeys
(#24349)
Also includes a migration.
This commit is contained in:
parent
e2e454c480
commit
a814348176
@ -25,7 +25,7 @@ export default Component.extend({
|
|||||||
canUsePasskeys() {
|
canUsePasskeys() {
|
||||||
return (
|
return (
|
||||||
this.siteSettings.enable_local_logins &&
|
this.siteSettings.enable_local_logins &&
|
||||||
this.siteSettings.experimental_passkeys &&
|
this.siteSettings.enable_passkeys &&
|
||||||
isWebauthnSupported()
|
isWebauthnSupported()
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -96,7 +96,7 @@ export default class Login extends Component {
|
|||||||
get canUsePasskeys() {
|
get canUsePasskeys() {
|
||||||
return (
|
return (
|
||||||
this.siteSettings.enable_local_logins &&
|
this.siteSettings.enable_local_logins &&
|
||||||
this.siteSettings.experimental_passkeys &&
|
this.siteSettings.enable_passkeys &&
|
||||||
isWebauthnSupported()
|
isWebauthnSupported()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ export default Controller.extend(CanCheckEmails, {
|
|||||||
return (
|
return (
|
||||||
!this.siteSettings.enable_discourse_connect &&
|
!this.siteSettings.enable_discourse_connect &&
|
||||||
this.siteSettings.enable_local_logins &&
|
this.siteSettings.enable_local_logins &&
|
||||||
this.siteSettings.experimental_passkeys &&
|
this.siteSettings.enable_passkeys &&
|
||||||
isWebauthnSupported()
|
isWebauthnSupported()
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -47,7 +47,7 @@ acceptance("Modal - Login - With 2FA", function (needs) {
|
|||||||
|
|
||||||
acceptance("Modal - Login - With Passkeys enabled", function (needs) {
|
acceptance("Modal - Login - With Passkeys enabled", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
experimental_passkeys: true,
|
enable_passkeys: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
@ -72,7 +72,7 @@ acceptance("Modal - Login - With Passkeys enabled", function (needs) {
|
|||||||
|
|
||||||
acceptance("Modal - Login - With Passkeys disabled", function (needs) {
|
acceptance("Modal - Login - With Passkeys disabled", function (needs) {
|
||||||
needs.settings({
|
needs.settings({
|
||||||
experimental_passkeys: false,
|
enable_passkeys: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Excludes passkeys button and conditional UI", async function (assert) {
|
test("Excludes passkeys button and conditional UI", async function (assert) {
|
||||||
@ -87,7 +87,7 @@ acceptance("Modal - Login - With Passkeys disabled", function (needs) {
|
|||||||
acceptance("Modal - Login - Passkeys on mobile", function (needs) {
|
acceptance("Modal - Login - Passkeys on mobile", function (needs) {
|
||||||
needs.mobileView();
|
needs.mobileView();
|
||||||
needs.settings({
|
needs.settings({
|
||||||
experimental_passkeys: true,
|
enable_passkeys: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
needs.pretender((server, helper) => {
|
needs.pretender((server, helper) => {
|
||||||
|
@ -99,7 +99,7 @@ acceptance("User Preferences - Security", function (needs) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Viewing Passkeys - user has a key", async function (assert) {
|
test("Viewing Passkeys - user has a key", async function (assert) {
|
||||||
this.siteSettings.experimental_passkeys = true;
|
this.siteSettings.enable_passkeys = true;
|
||||||
|
|
||||||
updateCurrentUser({
|
updateCurrentUser({
|
||||||
user_passkeys: [
|
user_passkeys: [
|
||||||
@ -161,7 +161,7 @@ acceptance("User Preferences - Security", function (needs) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Viewing Passkeys - empty state", async function (assert) {
|
test("Viewing Passkeys - empty state", async function (assert) {
|
||||||
this.siteSettings.experimental_passkeys = true;
|
this.siteSettings.enable_passkeys = true;
|
||||||
|
|
||||||
await visit("/u/eviltrout/preferences/security");
|
await visit("/u/eviltrout/preferences/security");
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ acceptance("User Preferences - Security", function (needs) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("Viewing Passkeys - another user has a key", async function (assert) {
|
test("Viewing Passkeys - another user has a key", async function (assert) {
|
||||||
this.siteSettings.experimental_passkeys = true;
|
this.siteSettings.enable_passkeys = true;
|
||||||
|
|
||||||
// user charlie has passkeys in fixtures
|
// user charlie has passkeys in fixtures
|
||||||
await visit("/u/charlie/preferences/security");
|
await visit("/u/charlie/preferences/security");
|
||||||
|
@ -338,7 +338,7 @@ class SessionController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def passkey_login
|
def passkey_login
|
||||||
raise Discourse::NotFound unless SiteSetting.experimental_passkeys
|
raise Discourse::NotFound unless SiteSetting.enable_passkeys
|
||||||
|
|
||||||
params.require(:publicKeyCredential)
|
params.require(:publicKeyCredential)
|
||||||
|
|
||||||
|
@ -1609,7 +1609,7 @@ class UsersController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create_passkey
|
def create_passkey
|
||||||
raise Discourse::NotFound unless SiteSetting.experimental_passkeys
|
raise Discourse::NotFound unless SiteSetting.enable_passkeys
|
||||||
|
|
||||||
challenge_session = DiscourseWebauthn.stage_challenge(current_user, secure_session)
|
challenge_session = DiscourseWebauthn.stage_challenge(current_user, secure_session)
|
||||||
render json:
|
render json:
|
||||||
@ -1624,7 +1624,7 @@ class UsersController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def register_passkey
|
def register_passkey
|
||||||
raise Discourse::NotFound unless SiteSetting.experimental_passkeys
|
raise Discourse::NotFound unless SiteSetting.enable_passkeys
|
||||||
|
|
||||||
params.require(:name)
|
params.require(:name)
|
||||||
params.require(:attestation)
|
params.require(:attestation)
|
||||||
@ -1644,7 +1644,7 @@ class UsersController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def delete_passkey
|
def delete_passkey
|
||||||
raise Discourse::NotFound unless SiteSetting.experimental_passkeys
|
raise Discourse::NotFound unless SiteSetting.enable_passkeys
|
||||||
|
|
||||||
current_user.security_keys.find_by(id: params[:id].to_i)&.destroy!
|
current_user.security_keys.find_by(id: params[:id].to_i)&.destroy!
|
||||||
|
|
||||||
@ -1652,7 +1652,7 @@ class UsersController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def rename_passkey
|
def rename_passkey
|
||||||
raise Discourse::NotFound unless SiteSetting.experimental_passkeys
|
raise Discourse::NotFound unless SiteSetting.enable_passkeys
|
||||||
|
|
||||||
params.require(:id)
|
params.require(:id)
|
||||||
params.require(:name)
|
params.require(:name)
|
||||||
|
@ -175,7 +175,7 @@ class UserSerializer < UserCardSerializer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def include_user_passkeys?
|
def include_user_passkeys?
|
||||||
SiteSetting.experimental_passkeys?
|
SiteSetting.enable_passkeys?
|
||||||
end
|
end
|
||||||
|
|
||||||
def bio_raw
|
def bio_raw
|
||||||
|
@ -416,6 +416,10 @@ login:
|
|||||||
client: true
|
client: true
|
||||||
default: true
|
default: true
|
||||||
validator: "EnableLocalLoginsViaEmailValidator"
|
validator: "EnableLocalLoginsViaEmailValidator"
|
||||||
|
enable_passkeys:
|
||||||
|
client: true
|
||||||
|
default: false
|
||||||
|
hidden: true
|
||||||
allow_new_registrations:
|
allow_new_registrations:
|
||||||
client: true
|
client: true
|
||||||
default: true
|
default: true
|
||||||
@ -2180,10 +2184,6 @@ developer:
|
|||||||
experimental_topics_filter:
|
experimental_topics_filter:
|
||||||
client: true
|
client: true
|
||||||
default: false
|
default: false
|
||||||
experimental_passkeys:
|
|
||||||
client: true
|
|
||||||
default: false
|
|
||||||
hidden: true
|
|
||||||
experimental_search_menu_groups:
|
experimental_search_menu_groups:
|
||||||
type: group_list
|
type: group_list
|
||||||
list_type: compact
|
list_type: compact
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class RenameExperimentalPasskeysSiteSetting < ActiveRecord::Migration[7.0]
|
||||||
|
def up
|
||||||
|
execute "UPDATE site_settings SET name = 'enable_passkeys' WHERE name = 'experimental_passkeys'"
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
execute "UPDATE site_settings SET name = 'experimental_passkeys' WHERE name = 'enable_passkeys'"
|
||||||
|
end
|
||||||
|
end
|
@ -3043,14 +3043,14 @@ RSpec.describe SessionController do
|
|||||||
|
|
||||||
describe "#passkey_login" do
|
describe "#passkey_login" do
|
||||||
it "returns 404 if feature is not enabled" do
|
it "returns 404 if feature is not enabled" do
|
||||||
SiteSetting.experimental_passkeys = false
|
SiteSetting.enable_passkeys = false
|
||||||
|
|
||||||
post "/session/passkey/auth.json"
|
post "/session/passkey/auth.json"
|
||||||
expect(response.status).to eq(404)
|
expect(response.status).to eq(404)
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when experimental_passkeys is enabled" do
|
context "when enable_passkeys is enabled" do
|
||||||
before { SiteSetting.experimental_passkeys = true }
|
before { SiteSetting.enable_passkeys = true }
|
||||||
|
|
||||||
it "fails if public key param is missing" do
|
it "fails if public key param is missing" do
|
||||||
post "/session/passkey/auth.json"
|
post "/session/passkey/auth.json"
|
||||||
|
@ -5950,7 +5950,7 @@ RSpec.describe UsersController do
|
|||||||
|
|
||||||
describe "#create_passkey" do
|
describe "#create_passkey" do
|
||||||
before do
|
before do
|
||||||
SiteSetting.experimental_passkeys = true
|
SiteSetting.enable_passkeys = true
|
||||||
stub_secure_session_confirmed
|
stub_secure_session_confirmed
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5991,7 +5991,7 @@ RSpec.describe UsersController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#rename_passkey" do
|
describe "#rename_passkey" do
|
||||||
before { SiteSetting.experimental_passkeys = true }
|
before { SiteSetting.enable_passkeys = true }
|
||||||
|
|
||||||
it "fails if no user is logged in" do
|
it "fails if no user is logged in" do
|
||||||
put "/u/rename_passkey/NONE.json"
|
put "/u/rename_passkey/NONE.json"
|
||||||
@ -6044,7 +6044,7 @@ RSpec.describe UsersController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#delete_passkey" do
|
describe "#delete_passkey" do
|
||||||
before { SiteSetting.experimental_passkeys = true }
|
before { SiteSetting.enable_passkeys = true }
|
||||||
fab!(:passkey) { Fabricate(:passkey_with_random_credential, user: user1) }
|
fab!(:passkey) { Fabricate(:passkey_with_random_credential, user: user1) }
|
||||||
|
|
||||||
it "fails if user does not have a confirmed session" do
|
it "fails if user does not have a confirmed session" do
|
||||||
@ -6079,7 +6079,7 @@ RSpec.describe UsersController do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#register_passkey" do
|
describe "#register_passkey" do
|
||||||
before { SiteSetting.experimental_passkeys = true }
|
before { SiteSetting.enable_passkeys = true }
|
||||||
|
|
||||||
it "fails if user is not logged in" do
|
it "fails if user is not logged in" do
|
||||||
stub_secure_session_confirmed
|
stub_secure_session_confirmed
|
||||||
|
@ -456,7 +456,7 @@ RSpec.describe UserSerializer do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "includes passkeys if feature is enabled" do
|
it "includes passkeys if feature is enabled" do
|
||||||
SiteSetting.experimental_passkeys = true
|
SiteSetting.enable_passkeys = true
|
||||||
|
|
||||||
json = UserSerializer.new(user, scope: Guardian.new(user), root: false).as_json
|
json = UserSerializer.new(user, scope: Guardian.new(user), root: false).as_json
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ describe "User preferences for Security", type: :system do
|
|||||||
end
|
end
|
||||||
|
|
||||||
shared_examples "passkeys" do
|
shared_examples "passkeys" do
|
||||||
before { SiteSetting.experimental_passkeys = true }
|
before { SiteSetting.enable_passkeys = true }
|
||||||
|
|
||||||
it "adds a passkey and logs in with it" do
|
it "adds a passkey and logs in with it" do
|
||||||
options =
|
options =
|
||||||
|
Loading…
Reference in New Issue
Block a user