diff --git a/src/app/(dashboard)/admin/audit/page.tsx b/src/app/(dashboard)/admin/audit/page.tsx index 5eadad8..ce39cb2 100644 --- a/src/app/(dashboard)/admin/audit/page.tsx +++ b/src/app/(dashboard)/admin/audit/page.tsx @@ -4,7 +4,7 @@ import { fetchAuditLog } from "@/lib/actions"; import { AuditLog, AuditLogAction } from "@/lib/audit"; import GhostMessage from "@/lib/components/ui/GhostMessage"; import LoadingSpinner from "@/lib/components/ui/LoadingSpinner"; -import { GRAVATAR_DEFAULT } from "@/lib/constants"; +import { avatarUrl, GRAVATAR_DEFAULT } from "@/lib/constants"; import { sha256sum } from "@/lib/util"; import { Avatar, Card, Code, Flex, Grid, Heading, IconButton, Text } from "@radix-ui/themes"; import dayjs from "dayjs"; @@ -98,7 +98,7 @@ export default function Audit() { diff --git a/src/app/(dashboard)/admin/users/page.tsx b/src/app/(dashboard)/admin/users/page.tsx index c51bc2a..cf6c15f 100644 --- a/src/app/(dashboard)/admin/users/page.tsx +++ b/src/app/(dashboard)/admin/users/page.tsx @@ -5,7 +5,7 @@ import GhostMessage from "@/lib/components/ui/GhostMessage"; import LoadingSpinner from "@/lib/components/ui/LoadingSpinner"; import CreateUserButton from "@/lib/components/ui/admin/CreateUserButton"; import ManageUserButton from "@/lib/components/ui/admin/ManageUserButton"; -import { GRAVATAR_DEFAULT } from "@/lib/constants"; +import { avatarUrl, GRAVATAR_DEFAULT } from "@/lib/constants"; import { isAdmin, sha256sum } from "@/lib/util"; import { Avatar, Badge, Button, Card, Flex, Heading, Table, Text, TextField } from "@radix-ui/themes"; import { SearchIcon, UserRoundXIcon } from "lucide-react"; @@ -59,7 +59,7 @@ export default function Users() { diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts index 33fce79..b34350a 100644 --- a/src/app/api/auth/[...nextauth]/route.ts +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -2,7 +2,7 @@ import NextAuth, { AuthOptions } from "next-auth"; import CredentialProvider from "next-auth/providers/credentials"; import { sha256sum } from "@/lib/util"; import { validateCredentials } from "@/lib/db"; -import { GRAVATAR_DEFAULT } from "@/lib/constants"; +import { avatarUrl, GRAVATAR_DEFAULT } from "@/lib/constants"; import { auditLogRaw } from "@/lib/audit"; const authOptions: AuthOptions = { @@ -19,8 +19,6 @@ const authOptions: AuthOptions = { if (credentials && await validateCredentials(credentials.email, credentials.password)) { console.log(`[${credentials.email}] Authentication succeeded`); - const emailHash = sha256sum(credentials.email.trim().toLowerCase()); - await auditLogRaw({ user: credentials.email, ts: new Date().toISOString(), @@ -30,7 +28,7 @@ const authOptions: AuthOptions = { return { id: credentials.email, email: credentials.email, - image: `https://gravatar.com/avatar/${emailHash}?d=${GRAVATAR_DEFAULT}`, + image: avatarUrl(credentials.email), }; } diff --git a/src/lib/components/ui/admin/ManageUserButton.tsx b/src/lib/components/ui/admin/ManageUserButton.tsx index f6c55f6..fff0ad3 100644 --- a/src/lib/components/ui/admin/ManageUserButton.tsx +++ b/src/lib/components/ui/admin/ManageUserButton.tsx @@ -1,6 +1,6 @@ "use client"; -import { GRAVATAR_DEFAULT } from "@/lib/constants"; +import { avatarUrl, GRAVATAR_DEFAULT } from "@/lib/constants"; import { AliasEntry } from "@/lib/db"; import { isAdmin, sha256sum } from "@/lib/util"; import { Avatar, Badge, Button, Card, Code, Dialog, Flex, Grid, Heading, Table, Text } from "@radix-ui/themes"; @@ -36,7 +36,7 @@ export default function ManageUserButton({ email }: { email: string }) { diff --git a/src/lib/components/ui/user/TempAliasesCard.tsx b/src/lib/components/ui/user/TempAliasesCard.tsx index 0ba5db7..868a49c 100644 --- a/src/lib/components/ui/user/TempAliasesCard.tsx +++ b/src/lib/components/ui/user/TempAliasesCard.tsx @@ -1,5 +1,5 @@ import { disposeTempAliasRequest, fetchOwnAliases, requestTemporaryAlias, claimTemporaryAlias, deleteAlias } from "@/lib/actions"; -import { GRAVATAR_DEFAULT } from "@/lib/constants"; +import { avatarUrl, GRAVATAR_DEFAULT } from "@/lib/constants"; import { AliasEntry, AliasRequestEntry } from "@/lib/db"; import { ToastContext } from "@/lib/providers/ToastProvider"; import { sha256sum } from "@/lib/util"; @@ -120,7 +120,7 @@ export default function TempAliasesCard() { @@ -171,7 +171,7 @@ export default function TempAliasesCard() { diff --git a/src/lib/constants.ts b/src/lib/constants.ts index a8607e5..be5cbbf 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,3 +1,4 @@ +import { sha256sum } from "./util"; // TODO read these from environment @@ -9,4 +10,9 @@ export const IMAP_SECURITY = "SSL/TLS"; export const WEBMAIL_URL = "https://webmail.amogus.cloud"; export const ALIAS_DOMAINS = ["amogus.cloud", "lea.pet", "futacockinside.me"]; export const GRAVATAR_DEFAULT = "retro"; -export const TEMP_EMAIL_DOMAIN = "t.amogus.cloud"; \ No newline at end of file +export const TEMP_EMAIL_DOMAIN = "t.amogus.cloud"; + +export function avatarUrl(email: string) { + //return `https://gravatar.com/avatar/${sha256sum(email)}?d=${GRAVATAR_DEFAULT}`; + return `https://picvatar.lea.pet/generate/47882/${sha256sum(email)}?gravatar=1`; +}