working full end-to-end with encryption

This commit is contained in:
2025-12-22 13:56:11 -06:00
parent 24dc4090c0
commit acea54814b
14 changed files with 530 additions and 119 deletions

View File

@@ -0,0 +1,22 @@
-- CreateTable
CREATE TABLE "Session" (
"id" TEXT NOT NULL,
"token" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"expiresAt" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Session_token_key" ON "Session"("token");
-- CreateIndex
CREATE INDEX "Session_userId_idx" ON "Session"("userId");
-- CreateIndex
CREATE INDEX "Session_token_idx" ON "Session"("token");
-- AddForeignKey
ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -0,0 +1,8 @@
/*
Warnings:
- Added the required column `skywardPassword` to the `User` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "User" ADD COLUMN "skywardPassword" TEXT NOT NULL;

View File

@@ -6,15 +6,30 @@ datasource db {
provider = "postgresql"
}
model User {
model Session {
id String @id @default(uuid())
username String @unique
password String
token String @unique
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
expiresAt DateTime
createdAt DateTime @default(now())
@@index([userId])
@@index([token])
}
model User {
id String @id @default(uuid())
username String @unique
password String // Bcrypt hash for login auth
skywardPassword String // Encrypted password for Skyward API calls
createdAt DateTime @default(now())
classes Class[]
fetches Fetch[]
finalGrades FinalGrade[]
sessions Session[]
}
model Class {