- 修復打卡功能:移除阻擋性確認對話框,改善使用者體驗 - 新增品牌與外觀設定:支援公司 Logo 和 APP 圖示上傳 - 新增動態 PWA Manifest 生成:改善手機 APP 體驗 - 新增系統設定儲存成功提示:使用現代化 Toast 通知 - 新增 LandingPage 起始頁面:動態時鐘與品牌 Logo 顯示 - 新增多個資料庫修復腳本:協助初始化 Supabase 環境 - 優化 Tailwind 配置:新增 slideDown 動畫效果
88 lines
3.4 KiB
SQL
88 lines
3.4 KiB
SQL
-- ============================================================================
|
|
-- SQL Repair Script: Fix Missing Tables and Storage
|
|
-- Description: Creates missing 'system_settings' and 'admin_users' tables,
|
|
-- and configures the 'system-assets' storage bucket.
|
|
-- ============================================================================
|
|
|
|
-- 1. Create system_settings table (Validation of finding: 406 Error)
|
|
CREATE TABLE IF NOT EXISTS public.system_settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT,
|
|
description TEXT,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Enable RLS
|
|
ALTER TABLE public.system_settings ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Create Policies (Using IF NOT EXISTS logic via DO block or drop/create)
|
|
DO $$
|
|
BEGIN
|
|
DROP POLICY IF EXISTS "Allow public read access" ON public.system_settings;
|
|
CREATE POLICY "Allow public read access" ON public.system_settings FOR SELECT USING (true);
|
|
|
|
DROP POLICY IF EXISTS "Allow public update access" ON public.system_settings;
|
|
CREATE POLICY "Allow public update access" ON public.system_settings FOR UPDATE USING (true);
|
|
|
|
DROP POLICY IF EXISTS "Allow public insert access" ON public.system_settings;
|
|
CREATE POLICY "Allow public insert access" ON public.system_settings FOR INSERT WITH CHECK (true);
|
|
END $$;
|
|
|
|
-- 2. Create admin_users table (Validation of finding: 404 Error)
|
|
CREATE TABLE IF NOT EXISTS public.admin_users (
|
|
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
username TEXT NOT NULL UNIQUE,
|
|
password TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
-- Enable RLS
|
|
ALTER TABLE public.admin_users ENABLE ROW LEVEL SECURITY;
|
|
|
|
DO $$
|
|
BEGIN
|
|
DROP POLICY IF EXISTS "Allow public read access" ON public.admin_users;
|
|
CREATE POLICY "Allow public read access" ON public.admin_users FOR SELECT USING (true);
|
|
|
|
DROP POLICY IF EXISTS "Allow public write access" ON public.admin_users;
|
|
CREATE POLICY "Allow public write access" ON public.admin_users FOR ALL USING (true) WITH CHECK (true);
|
|
END $$;
|
|
|
|
-- Insert default admin if missing
|
|
INSERT INTO public.admin_users (username, password)
|
|
SELECT 'admin', 'admin123'
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM public.admin_users WHERE username = 'admin'
|
|
);
|
|
|
|
-- 3. Create Storage Bucket (Validation of finding: Bucket Not Found)
|
|
INSERT INTO storage.buckets (id, name, public)
|
|
VALUES ('system-assets', 'system-assets', true)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- Storage Policies
|
|
-- Note: 'storage.objects' policies often conflict if generic ones exist.
|
|
-- These policies target specifically the 'system-assets' bucket.
|
|
DO $$
|
|
BEGIN
|
|
BEGIN
|
|
CREATE POLICY "Give Public Access to system-assets" ON storage.objects FOR SELECT USING (bucket_id = 'system-assets');
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END;
|
|
|
|
BEGIN
|
|
CREATE POLICY "Give Admin Insert to system-assets" ON storage.objects FOR INSERT WITH CHECK (bucket_id = 'system-assets');
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END;
|
|
|
|
BEGIN
|
|
CREATE POLICY "Give Admin Update to system-assets" ON storage.objects FOR UPDATE USING (bucket_id = 'system-assets');
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END;
|
|
|
|
BEGIN
|
|
CREATE POLICY "Give Admin Delete to system-assets" ON storage.objects FOR DELETE USING (bucket_id = 'system-assets');
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END;
|
|
END $$;
|
|
|
|
-- 4. Reload Schema Cache
|
|
NOTIFY pgrst, 'reload config';
|