feat: implement Supabase authentication with Google OAuth

Add Supabase client, middleware, and auth pages; update header for auth state.

Co-authored-by: ASOwnerYT <[email protected]>
This commit is contained in:
v0
2026-03-22 23:07:11 +00:00
co-authored by ASOwnerYT
parent 84200ac175
commit 1386f6e549
13 changed files with 1073 additions and 18 deletions
+116
View File
@@ -92,6 +92,12 @@ importers:
'@radix-ui/react-tooltip':
specifier: 1.2.8
version: 1.2.8(@types/[email protected](@types/[email protected]))(@types/[email protected])([email protected]([email protected]))([email protected])
'@supabase/ssr':
specifier: ^0.9.0
version: 0.9.0(@supabase/[email protected])
'@supabase/supabase-js':
specifier: ^2.99.3
version: 2.99.3
'@vercel/analytics':
specifier: 1.6.1
version: 1.6.1([email protected]([email protected]([email protected]))([email protected]))([email protected])
@@ -1097,6 +1103,35 @@ packages:
'@radix-ui/[email protected]':
resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
'@supabase/[email protected]':
resolution: {integrity: sha512-vMEVLA1kGGYd/kdsJSwtjiFUZM1nGfrz2DWmgMBZtocV48qL+L2+4QpIkueXyBEumMQZFEyhz57i/5zGHjvdBw==}
engines: {node: '>=20.0.0'}
'@supabase/[email protected]':
resolution: {integrity: sha512-6tk2zrcBkzKaaBXPOG5nshn30uJNFGOH9LxOnE8i850eQmsX+jVm7vql9kTPyvUzEHwU4zdjSOkXS9M+9ukMVA==}
engines: {node: '>=20.0.0'}
'@supabase/[email protected]':
resolution: {integrity: sha512-8HxEf+zNycj7Z8+ONhhlu+7J7Ha+L6weyCtdEeK2mN5OWJbh6n4LPU4iuJ5UlCvvNnbSXMoutY7piITEEAgl2g==}
engines: {node: '>=20.0.0'}
'@supabase/[email protected]':
resolution: {integrity: sha512-c1azgZ2nZPczbY5k5u5iFrk1InpxN81IvNE+UBAkjrBz3yc5ALLJNkeTQwbJZT4PZBuYXEzqYGLMuh9fdTtTMg==}
engines: {node: '>=20.0.0'}
'@supabase/[email protected]':
resolution: {integrity: sha512-UFY6otYV3yqCgV+AyHj80vNkTvbf1Gas2LW4dpbQ4ap6p6v3eB2oaDfcI99jsuJzwVBCFU4BJI+oDYyhNk1z0Q==}
peerDependencies:
'@supabase/supabase-js': ^2.97.0
'@supabase/[email protected]':
resolution: {integrity: sha512-lOfIm4hInNcd8x0i1LWphnLKxec42wwbjs+vhaVAvR801Vda0UAMbTooUY6gfqgQb8v29GofqKuQMMTAsl6w/w==}
engines: {node: '>=20.0.0'}
'@supabase/[email protected]':
resolution: {integrity: sha512-GuPbzoEaI51AkLw9VGhLNvnzw4PHbS3p8j2/JlvLeZNQMKwZw4aEYQIDBRtFwL5Nv7/275n9m4DHtakY8nCvgg==}
engines: {node: '>=20.0.0'}
'@swc/[email protected]':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
@@ -1222,6 +1257,9 @@ packages:
'@types/[email protected]':
resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==}
'@types/[email protected]':
resolution: {integrity: sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==}
'@types/[email protected]':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
@@ -1230,6 +1268,9 @@ packages:
'@types/[email protected]':
resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
'@types/[email protected]':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
'@vercel/[email protected]':
resolution: {integrity: sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==}
peerDependencies:
@@ -1296,6 +1337,10 @@ packages:
react: ^18 || ^19 || ^19.0.0-rc
react-dom: ^18 || ^19 || ^19.0.0-rc
[email protected]:
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
engines: {node: '>=18'}
[email protected]:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
@@ -1403,6 +1448,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
[email protected]:
resolution: {integrity: sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==}
engines: {node: '>=20.0.0'}
[email protected]:
resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==}
peerDependencies:
@@ -1752,6 +1801,18 @@ packages:
[email protected]:
resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
[email protected]:
resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
[email protected]:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -2626,6 +2687,49 @@ snapshots:
'@radix-ui/[email protected]': {}
'@supabase/[email protected]':
dependencies:
tslib: 2.8.1
'@supabase/[email protected]':
dependencies:
tslib: 2.8.1
'@supabase/[email protected]':
dependencies:
tslib: 2.8.1
'@supabase/[email protected]':
dependencies:
'@types/phoenix': 1.6.7
'@types/ws': 8.18.1
tslib: 2.8.1
ws: 8.20.0
transitivePeerDependencies:
- bufferutil
- utf-8-validate
'@supabase/[email protected](@supabase/[email protected])':
dependencies:
'@supabase/supabase-js': 2.99.3
cookie: 1.1.1
'@supabase/[email protected]':
dependencies:
iceberg-js: 0.8.1
tslib: 2.8.1
'@supabase/[email protected]':
dependencies:
'@supabase/auth-js': 2.99.3
'@supabase/functions-js': 2.99.3
'@supabase/postgrest-js': 2.99.3
'@supabase/realtime-js': 2.99.3
'@supabase/storage-js': 2.99.3
transitivePeerDependencies:
- bufferutil
- utf-8-validate
'@swc/[email protected]':
dependencies:
tslib: 2.8.1
@@ -2727,6 +2831,8 @@ snapshots:
dependencies:
undici-types: 6.21.0
'@types/[email protected]': {}
'@types/[email protected](@types/[email protected])':
dependencies:
'@types/react': 19.2.14
@@ -2735,6 +2841,10 @@ snapshots:
dependencies:
csstype: 3.2.3
'@types/[email protected]':
dependencies:
'@types/node': 22.19.15
'@vercel/[email protected]([email protected]([email protected]([email protected]))([email protected]))([email protected])':
optionalDependencies:
next: 16.2.0([email protected]([email protected]))([email protected])
@@ -2785,6 +2895,8 @@ snapshots:
- '@types/react'
- '@types/react-dom'
[email protected]: {}
[email protected]: {}
[email protected]:
@@ -2871,6 +2983,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]([email protected]([email protected]))([email protected]):
dependencies:
react: 19.2.4
@@ -3206,4 +3320,6 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
[email protected]: {}
[email protected]: {}