Add auth helper functions (uid, role, jwt) to init.sql
Build and Push Docker Image / build (push) Successful in 1m45s
Details
Build and Push Docker Image / build (push) Successful in 1m45s
Details
These functions are normally created by GoTrue but our init.sql runs first. Needed for RLS policies that use auth.uid(). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
679f278075
commit
ce3239598d
|
|
@ -97,6 +97,47 @@ ALTER DATABASE postgres SET search_path TO public, extensions;
|
|||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA extensions;
|
||||
CREATE EXTENSION IF NOT EXISTS "pgcrypto" WITH SCHEMA extensions;
|
||||
|
||||
-- ============================================
|
||||
-- AUTH HELPER FUNCTIONS
|
||||
-- These are normally created by GoTrue, but we need them for RLS policies
|
||||
-- ============================================
|
||||
|
||||
-- Get current user ID from JWT
|
||||
CREATE OR REPLACE FUNCTION auth.uid()
|
||||
RETURNS UUID
|
||||
LANGUAGE sql
|
||||
STABLE
|
||||
AS $$
|
||||
SELECT COALESCE(
|
||||
current_setting('request.jwt.claim.sub', true),
|
||||
(current_setting('request.jwt.claims', true)::jsonb ->> 'sub')
|
||||
)::uuid
|
||||
$$;
|
||||
|
||||
-- Get current user role from JWT
|
||||
CREATE OR REPLACE FUNCTION auth.role()
|
||||
RETURNS TEXT
|
||||
LANGUAGE sql
|
||||
STABLE
|
||||
AS $$
|
||||
SELECT COALESCE(
|
||||
current_setting('request.jwt.claim.role', true),
|
||||
(current_setting('request.jwt.claims', true)::jsonb ->> 'role')
|
||||
)::text
|
||||
$$;
|
||||
|
||||
-- Get JWT claim value
|
||||
CREATE OR REPLACE FUNCTION auth.jwt()
|
||||
RETURNS JSONB
|
||||
LANGUAGE sql
|
||||
STABLE
|
||||
AS $$
|
||||
SELECT COALESCE(
|
||||
current_setting('request.jwt.claims', true)::jsonb,
|
||||
'{}'::jsonb
|
||||
)
|
||||
$$;
|
||||
|
||||
-- ============================================
|
||||
-- MIGRATION 001: Initial Schema
|
||||
-- ============================================
|
||||
|
|
|
|||
Loading…
Reference in New Issue