Changes:
- Add generateShareId() and extractShareId() helpers
- Share URLs now use single parameter: /share/location/{shareId}
- shareId = locationId (24 chars) + checksum (16 chars) = 40 chars total
- Update validateShareAccess() to extract locationId from shareId
- Update uploadProofOfPayment() to accept combined shareId
- Update LocationViewPage to validate and extract locationId from shareId
Benefits:
- Simpler URL structure (one parameter instead of two)
- Checksum extraction by length (deterministic, no parsing needed)
- Same security properties (HMAC-SHA256 validation)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
14 lines
468 B
TypeScript
14 lines
468 B
TypeScript
import { Suspense } from 'react';
|
|
import LocationViewPage from './LocationViewPage';
|
|
import { Main } from '@/app/ui/Main';
|
|
import { LocationEditFormSkeleton } from '@/app/ui/LocationEditForm';
|
|
|
|
export default async function Page({ params: { id } }: { params: { id: string } }) {
|
|
return (
|
|
<Main>
|
|
<Suspense fallback={<LocationEditFormSkeleton />}>
|
|
<LocationViewPage shareId={id} />
|
|
</Suspense>
|
|
</Main>
|
|
);
|
|
} |