web sitesi yönetimi

This commit is contained in:
2026-01-25 01:46:12 +03:00
parent 6e56b1e75f
commit 0fe49b5c96
15 changed files with 575 additions and 155 deletions

View File

@@ -0,0 +1,39 @@
-- Create site_contents table for dynamic CMS
CREATE TABLE IF NOT EXISTS site_contents (
key TEXT PRIMARY KEY,
value TEXT,
type TEXT CHECK (type IN ('text', 'image_url', 'html', 'long_text', 'json')),
section TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);
-- Enable Row Level Security
ALTER TABLE site_contents ENABLE ROW LEVEL SECURITY;
-- Create policies
-- Allow public read access to all site contents (needed for the public website)
CREATE POLICY "Public read access" ON site_contents
FOR SELECT TO public USING (true);
-- Allow authenticated users (admins) to update content
CREATE POLICY "Admin update access" ON site_contents
FOR UPDATE TO authenticated USING (true);
-- Allow authenticated users to insert (for initial setup)
CREATE POLICY "Admin insert access" ON site_contents
FOR INSERT TO authenticated WITH CHECK (true);
-- Insert default contents if they don't exist
INSERT INTO site_contents (key, value, type, section) VALUES
('site_title', 'ParaKasa', 'text', 'general'),
('site_description', 'ParaKasa Yönetim Paneli', 'long_text', 'general'),
('site_logo', '', 'image_url', 'general'),
('contact_phone', '', 'text', 'contact'),
('contact_email', '', 'text', 'contact'),
('contact_address', '', 'long_text', 'contact'),
('social_instagram', '', 'text', 'contact'),
('social_youtube', '', 'text', 'contact'),
('social_tiktok', '', 'text', 'contact'),
('contact_map_embed', '', 'html', 'contact')
ON CONFLICT (key) DO NOTHING;