- Created EMAIL_DEBUG_SUMMARY.md with detailed analysis of email service issue - Added enhanced logging to admin routes and email service - Identified root cause: malformed email address concatenation - Documented all debugging attempts and next steps - Added route access logging to trace request flow - Removed problematic catch-all route that was causing 404s
65 lines
2.7 KiB
SQL
65 lines
2.7 KiB
SQL
-- Manual setup for document sharing table
|
|
-- Run this in your Supabase SQL Editor
|
|
|
|
-- Create document_shares table for tracking document sharing permissions
|
|
CREATE TABLE IF NOT EXISTS document_shares (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
document_id UUID NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
shared_by_user_id TEXT NOT NULL, -- User who shared the document
|
|
shared_with_user_id TEXT NOT NULL, -- User who received access
|
|
active BOOLEAN DEFAULT true, -- Whether the share is currently active
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
|
|
-- Ensure unique combinations
|
|
UNIQUE(document_id, shared_with_user_id)
|
|
);
|
|
|
|
-- Create indexes for better performance
|
|
CREATE INDEX IF NOT EXISTS idx_document_shares_document_id ON document_shares(document_id);
|
|
CREATE INDEX IF NOT EXISTS idx_document_shares_shared_with_user_id ON document_shares(shared_with_user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_document_shares_active ON document_shares(active);
|
|
|
|
-- Add comments for documentation
|
|
COMMENT ON TABLE document_shares IS 'Tracks document sharing permissions between users';
|
|
COMMENT ON COLUMN document_shares.document_id IS 'Reference to the shared document';
|
|
COMMENT ON COLUMN document_shares.shared_by_user_id IS 'User ID of the person who shared the document';
|
|
COMMENT ON COLUMN document_shares.shared_with_user_id IS 'User ID of the person who received access';
|
|
COMMENT ON COLUMN document_shares.active IS 'Whether this share is currently active (can be revoked)';
|
|
|
|
-- Enable Row Level Security
|
|
ALTER TABLE document_shares ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- RLS Policies for document_shares
|
|
-- Users can view shares they created or received
|
|
CREATE POLICY "Users can view their document shares" ON document_shares
|
|
FOR SELECT USING (
|
|
auth.uid()::text = shared_by_user_id OR
|
|
auth.uid()::text = shared_with_user_id
|
|
);
|
|
|
|
-- Users can create shares for documents they own
|
|
CREATE POLICY "Users can create document shares" ON document_shares
|
|
FOR INSERT WITH CHECK (
|
|
auth.uid()::text = shared_by_user_id
|
|
);
|
|
|
|
-- Users can update shares they created
|
|
CREATE POLICY "Users can update their document shares" ON document_shares
|
|
FOR UPDATE USING (
|
|
auth.uid()::text = shared_by_user_id
|
|
);
|
|
|
|
-- Users can delete shares they created
|
|
CREATE POLICY "Users can delete their document shares" ON document_shares
|
|
FOR DELETE USING (
|
|
auth.uid()::text = shared_by_user_id
|
|
);
|
|
|
|
-- Grant necessary permissions
|
|
GRANT ALL ON TABLE document_shares TO postgres, service_role;
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE document_shares TO authenticated;
|
|
|
|
-- Verify the table was created
|
|
SELECT 'Document sharing table created successfully!' as status;
|