Skip to content

Commit 6b51dbd

Browse files
jakechen1claude
andcommitted
Magic link auth, admin role hierarchy, content curation badges (v1.9.0)
- Replace password login with email magic link flow (passcode + 6-digit code by email) - Admin role hierarchy: owner (jakechen@gmail.com), revokable admins (zsembay8@uab.edu, jakechen@uab.edu) - Change default passcode from SPARC2026 to AIMED2026 - Add Resend email service for sending login codes - Add MagicCode model for storing 6-digit verification codes - Add New/Updated curation badges on publications, software, and honors pages - Add /api/curated-items endpoint for recently approved content Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 56b877f commit 6b51dbd

12 files changed

Lines changed: 541 additions & 400 deletions

File tree

package-lock.json

Lines changed: 73 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"prisma": "^7.6.0",
2626
"react": "19.2.4",
2727
"react-dom": "19.2.4",
28+
"resend": "^6.10.0",
2829
"tailwind-merge": "^3.5.0"
2930
},
3031
"devDependencies": {

prisma/schema.prisma

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,17 @@ model ActivationCode {
265265
createdAt DateTime @default(now())
266266
}
267267

268+
model MagicCode {
269+
id Int @id @default(autoincrement())
270+
email String
271+
code String // 6-digit numeric code
272+
expiresAt DateTime
273+
used Boolean @default(false)
274+
createdAt DateTime @default(now())
275+
276+
@@index([email, code])
277+
}
278+
268279
model QuarterlyGoal {
269280
id Int @id @default(autoincrement())
270281
memberId Int

0 commit comments

Comments
 (0)