Add webauthn (#82)
* Add webauthn * Complete WebAuthn device sign up and login * Move device registration to account page * Replace the token login with a WebAuthn prompt if the current device has been registered * Mark the current device in the list of registered auth devices * Fix after rebase * Fix tests * Disable "Add current device" button if current device is registered * Add option to "Stay signed in" * Remove device list feature, sign in with deviceId instead * Improve usability * Update changelog Co-authored-by: Matthias Frey <mfrey43@gmail.com> Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "User" ADD COLUMN "authChallenge" TEXT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "AuthDevice" (
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"credentialId" BYTEA NOT NULL,
|
||||
"credentialPublicKey" BYTEA NOT NULL,
|
||||
"counter" INTEGER NOT NULL,
|
||||
"id" TEXT NOT NULL,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "AuthDevice" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
@@ -47,6 +47,17 @@ model Analytics {
|
||||
userId String @id
|
||||
}
|
||||
|
||||
model AuthDevice {
|
||||
createdAt DateTime @default(now())
|
||||
credentialId Bytes
|
||||
credentialPublicKey Bytes
|
||||
counter Int
|
||||
id String @id @default(uuid())
|
||||
updatedAt DateTime @updatedAt
|
||||
User User @relation(fields: [userId], references: [id])
|
||||
userId String
|
||||
}
|
||||
|
||||
model MarketData {
|
||||
createdAt DateTime @default(now())
|
||||
date DateTime
|
||||
@@ -126,21 +137,23 @@ model Subscription {
|
||||
}
|
||||
|
||||
model User {
|
||||
Access Access[] @relation("accessGet")
|
||||
AccessGive Access[] @relation(name: "accessGive")
|
||||
accessToken String?
|
||||
Account Account[]
|
||||
alias String?
|
||||
Analytics Analytics?
|
||||
createdAt DateTime @default(now())
|
||||
id String @id @default(uuid())
|
||||
Order Order[]
|
||||
provider Provider?
|
||||
role Role @default(USER)
|
||||
Settings Settings?
|
||||
Subscription Subscription[]
|
||||
thirdPartyId String?
|
||||
updatedAt DateTime @updatedAt
|
||||
Access Access[] @relation("accessGet")
|
||||
AccessGive Access[] @relation(name: "accessGive")
|
||||
accessToken String?
|
||||
Account Account[]
|
||||
alias String?
|
||||
Analytics Analytics?
|
||||
authChallenge String?
|
||||
AuthDevice AuthDevice[]
|
||||
createdAt DateTime @default(now())
|
||||
id String @id @default(uuid())
|
||||
Order Order[]
|
||||
provider Provider?
|
||||
role Role @default(USER)
|
||||
Settings Settings?
|
||||
Subscription Subscription[]
|
||||
thirdPartyId String?
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
enum AccountType {
|
||||
|
Reference in New Issue
Block a user