summaryrefslogtreecommitdiff
path: root/api/auth/_generateAuthenticationOptions.ts
diff options
context:
space:
mode:
authorJoe Carstairs <jcarstairs@scottlogic.com>2024-01-22 17:14:35 +0000
committerJoe Carstairs <jcarstairs@scottlogic.com>2024-01-29 10:51:49 +0000
commit1c5ee8b6f0d22ca9aebdfda88b0ceca8aededbf5 (patch)
tree39a915aa53576ed272f754624819524880962652 /api/auth/_generateAuthenticationOptions.ts
parenteac3fb00ef11c08a277dd8f9e2684b79f15193c2 (diff)
Authentication methods are single-responsibility
Diffstat (limited to 'api/auth/_generateAuthenticationOptions.ts')
-rw-r--r--api/auth/_generateAuthenticationOptions.ts20
1 files changed, 4 insertions, 16 deletions
diff --git a/api/auth/_generateAuthenticationOptions.ts b/api/auth/_generateAuthenticationOptions.ts
index 88237ac..e7d37c8 100644
--- a/api/auth/_generateAuthenticationOptions.ts
+++ b/api/auth/_generateAuthenticationOptions.ts
@@ -1,6 +1,7 @@
+import type User from '../types/User';
+
import RELYING_PARTY from './_relyingParty';
import simplewebauthn from '@simplewebauthn/server';
-import getUser from '../db/_getUser';
import getAuthenticators from '../db/_getAuthenticators';
import setCurrentChallenge from '../db/_setCurrentChallenge';
@@ -9,22 +10,11 @@ import setCurrentChallenge from '../db/_setCurrentChallenge';
* authenticate using an authenticator which is already associated with their
* account in the database.
*
- * If a user doesn't currently have an account, they have to create one first,
- * get their account ID and register an authenticator.
- *
* The result should be consumed by \@simplewebauthn/browser's
* `startAuthentication()` method.
*/
-export default async function generateAuthenticationOptions(userId: string) {
- const user = await getUser(userId);
- if (!user) {
- return Promise.reject(`
- Failed to generate authentication options because user with ID ${userId}
- did not exist.
- `);
- }
-
- const userAuthenticators = await getAuthenticators(userId, ['id', 'transports', 'type']);
+export default async function generateAuthenticationOptions(user: User) {
+ const userAuthenticators = await getAuthenticators(user.id, ['id', 'transports', 'type']);
const options = await simplewebauthn.generateAuthenticationOptions({
rpID: RELYING_PARTY.id,
@@ -35,7 +25,5 @@ export default async function generateAuthenticationOptions(userId: string) {
userVerification: 'preferred',
});
- await setCurrentChallenge(userId, options.challenge);
-
return options;
}