Files
explore/nextjs/getServerSideProps/main.ts
T
zooqueen 6c5d229352 feat(auth): add IAM login via hanzo.id for user accounts
Add OIDC authentication support using hanzo.id as the identity
provider for Lux Explorer user accounts.

- Add 'oidc' auth provider type alongside existing auth0/dynamic
- AuthGuardOidc: redirect-based OIDC login flow with CSRF state
- pages/auth/callback: authorization code exchange, token storage
- useApiFetch: pass Bearer token for OIDC-authenticated API calls
- account feature config: support NEXT_PUBLIC_OIDC_SERVER_URL and
  NEXT_PUBLIC_OIDC_CLIENT_ID environment variables
- .env.production: configure hanzo.id as default OIDC provider
2026-02-22 15:15:24 -08:00

52 lines
2.8 KiB
TypeScript

import * as guards from './guards';
import { factory } from './utils';
export const base = factory([ ]);
export const block = factory([ guards.notOpSuperchain ]);
export const tx = factory([ guards.notOpSuperchain ]);
export const token = factory([ guards.notOpSuperchain ]);
export const account = factory([ guards.account ]);
export const accountAuth0 = factory([ guards.accountAuth0 ]);
export const accountOidc = factory([ guards.accountOidc ]);
export const verifiedAddresses = factory([ guards.account, guards.verifiedAddresses ]);
export const userOps = factory([ guards.userOps ]);
export const marketplace = factory([ guards.marketplace ]);
export const marketplaceEssentialDapp = factory([ guards.marketplaceEssentialDapp ]);
export const apiDocs = factory([ guards.apiDocs ]);
export const csvExport = factory([ guards.csvExport ]);
export const stats = factory([ guards.stats ]);
export const suave = factory([ guards.suave ]);
export const nameServiceEns = factory([ guards.nameServiceEns ]);
export const nameServiceClusters = factory([ guards.nameServiceClusters ]);
export const nameServices = factory([ [ guards.nameServiceEns, guards.nameServiceClusters ] ]);
export const accounts = factory([ guards.accounts ]);
export const accountsLabelSearch = factory([ guards.accountsLabelSearch ]);
export const validators = factory([ guards.validators ]);
export const validatorDetails = factory([ guards.validatorDetails ]);
export const gasTracker = factory([ guards.gasTracker ]);
export const hotContracts = factory([ guards.hotContracts ]);
export const advancedFilter = factory([ guards.advancedFilter ]);
export const dataAvailability = factory([ guards.dataAvailability ]);
export const login = factory([ guards.login ]);
export const dev = factory([ guards.dev ]);
export const publicTagsSubmit = factory([ guards.publicTagsSubmit ]);
export const pools = factory([ guards.pools ]);
export const megaEth = factory([ guards.megaEth ]);
export const zetaChainCCTX = factory([ guards.zetaChainCCTX ]);
export const crossChainTxs = factory([ guards.notOpSuperchain, guards.crossChainTxs ]);
// ROLLUPS
export const rollup = factory([ guards.rollup ]);
export const deposits = factory([ guards.deposits ]);
export const withdrawals = factory([ guards.withdrawals ]);
export const batch = factory([ guards.batch ]);
export const batchCelestia = factory([ guards.batchCelestia ]);
export const txnWithdrawals = factory([ guards.txnWithdrawals ]);
export const outputRoots = factory([ guards.outputRoots ]);
export const disputeGames = factory([ guards.disputeGames ]);
export const mud = factory([ guards.mud ]);
export const tac = factory([ guards.tac ]);
export const celo = factory([ guards.celo ]);
export const interopMessages = factory([ guards.interopMessages ]);
export const opSuperchain = factory([ guards.opSuperchain ]);