mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
The panel finishes what IAM holds, because IAM holds it in a host-only challenge cookie on the host the credential was posted to, which is this one: a second factor (the authenticator app's code, the code IAM sent by email or text, or a recovery code; a wrong one asks for the credential again) and an unproven address (the code IAM sent to it, or another address and its code). Only enrolling a factor still goes to the issuer's page. Beside it, on this site: - /forget: a code to the address, then the new password with it (PUT /v1/iam/password). The panel's "Forgot password?" opens it. - /join: an emailed invitation accepted as the person signed in here, with the code IAM sends for an invitation pinned to an address. - /auth/callback names IAM's refusal of a provider sign-in for an account whose address is unproven. The sign-in pages (/login, /signup, /forget, /join, /auth/*) are never framed: lib/edge.ts FRAME renders X-Frame-Options: DENY and an enforced frame-ancestors 'none' into universe, beside the report-only policy. /forget and /join are bare pages and private ones. @hanzo/iam 0.21.29 carries the calls and is the one copy in the tree. Co-authored-by: Hanzo Dev <[email protected]>
15 lines
491 B
TypeScript
15 lines
491 B
TypeScript
import type { Metadata } from 'next'
|
|
import { pageMeta } from '@/lib/page-meta'
|
|
|
|
// The page is 'use client', so its title lives here. Whether it is indexed is
|
|
// lib/publish's to say, and it says so.
|
|
export const metadata: Metadata = pageMeta({
|
|
title: 'Reset your password',
|
|
description: 'Set a new password for your Hanzo account with a code sent to your email.',
|
|
path: '/forget',
|
|
})
|
|
|
|
export default function Layout({ children }: { children: React.ReactNode }) {
|
|
return children
|
|
}
|