74 lines
3.1 KiB
JavaScript
74 lines
3.1 KiB
JavaScript
import { registry } from "@web/core/registry";
|
|
import { patch } from "@web/core/utils/patch";
|
|
import * as passkeyLib from "../lib/simplewebauthn";
|
|
|
|
let unpatchPasskeyVerify;
|
|
|
|
registry.category("web_tour.tours").add('passkeys_tour_verify', {
|
|
url: '/odoo',
|
|
steps: () => [
|
|
{
|
|
content: 'Open user account menu',
|
|
trigger: '.o_user_menu .dropdown-toggle',
|
|
run: 'click',
|
|
}, {
|
|
content: "Open preferences / profile screen",
|
|
trigger: '[data-menu=settings]',
|
|
run: 'click',
|
|
}, {
|
|
content: "Switch to security tab",
|
|
trigger: 'a[role=tab]:contains("Account Security")',
|
|
run: 'click',
|
|
}, {
|
|
content: "Ensure there is one passkey",
|
|
trigger: 'button:contains("Add Passkey")',
|
|
run: () => {
|
|
let amount = document.querySelectorAll("div[name='auth_passkey_key_ids'] article").length;
|
|
if(amount != 1) {
|
|
throw Error("Amount of Passkeys must be 1");
|
|
}
|
|
},
|
|
}, {
|
|
content: "Trigger security prompt",
|
|
trigger: 'button:contains("Add Passkey")',
|
|
run: 'click',
|
|
}, {
|
|
content: "Override startAuthentication",
|
|
trigger: 'body',
|
|
run: () => {
|
|
unpatchPasskeyVerify = patch(passkeyLib, {
|
|
async startAuthentication() {
|
|
return {
|
|
// test-yubikey
|
|
"id": "L2p6jvcWuCMTRmkZHKqqvQbz0Dhk3JbJOx1F8ci99nSNjlfx3Z7nkigMdUACLggB",
|
|
"rawId": "L2p6jvcWuCMTRmkZHKqqvQbz0Dhk3JbJOx1F8ci99nSNjlfx3Z7nkigMdUACLggB",
|
|
"response": {
|
|
"authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2MFAAAAAw",
|
|
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiREtydzVJZUZpTDB3X3k1b0IwUkFUUHJxRzFlRk9DMlA3eUVpWENzdEJSdVpZYlNCQmtBV2ZoQUlJbmtNcVdqWUlOOHZiS243SjNQTVhfVGh6bkhwcWciLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjgwNjkiLCJjcm9zc09yaWdpbiI6ZmFsc2V9",
|
|
"signature": "MEUCIQD5iaPp48QMS3amx4PS89kv_EBAo3bBkaWnLzWlSgFSXgIgLWKEv9xR_ZwVXZbw2zx459RKbrQuAcd-UqD4gJw1lWY",
|
|
"userHandle": "Mg",
|
|
},
|
|
"type": "public-key",
|
|
"clientExtensionResults": {},
|
|
"authenticatorAttachment": "cross-platform",
|
|
};
|
|
},
|
|
});
|
|
},
|
|
}, {
|
|
content: "Click Use Passkey",
|
|
trigger: 'button:contains("Use Passkey")',
|
|
run: 'click',
|
|
}, {
|
|
content: "Ready to create Passkey",
|
|
trigger: ".modal div:contains(Create Passkey)",
|
|
}, {
|
|
content: "Return startAuthentication to original state",
|
|
trigger: 'body',
|
|
run: () => {
|
|
unpatchPasskeyVerify();
|
|
},
|
|
}
|
|
]
|
|
})
|