Initial commit
This commit is contained in:
30
supabase/migrations/001_invites.sql
Normal file
30
supabase/migrations/001_invites.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- Invites table for invite-only registration
|
||||
CREATE TABLE IF NOT EXISTS invites (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
token UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),
|
||||
email TEXT NOT NULL,
|
||||
created_by UUID REFERENCES auth.users(id) ON DELETE SET NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
expires_at TIMESTAMPTZ NOT NULL DEFAULT (NOW() + INTERVAL '7 days'),
|
||||
used_at TIMESTAMPTZ,
|
||||
used_by UUID REFERENCES auth.users(id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
-- Enable RLS (all access goes through service role key in API routes)
|
||||
ALTER TABLE invites ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Admins can read invites they created
|
||||
CREATE POLICY "admins_read_invites" ON invites
|
||||
FOR SELECT USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM profiles
|
||||
WHERE profiles.id = auth.uid()
|
||||
AND profiles.role = 'admin'
|
||||
)
|
||||
);
|
||||
|
||||
-- Index for token lookups (invite acceptance)
|
||||
CREATE INDEX IF NOT EXISTS invites_token_idx ON invites (token);
|
||||
|
||||
-- Index for listing by creator
|
||||
CREATE INDEX IF NOT EXISTS invites_created_by_idx ON invites (created_by);
|
||||
Reference in New Issue
Block a user