Files
raraso/20260101 time check/FIX_DATABASE_AND_STORAGE.sql
Antigravity ead1675190 Fix: 修復打卡功能、品牌設定上傳、系統設定儲存提示
- 修復打卡功能:移除阻擋性確認對話框,改善使用者體驗
- 新增品牌與外觀設定:支援公司 Logo 和 APP 圖示上傳
- 新增動態 PWA Manifest 生成:改善手機 APP 體驗
- 新增系統設定儲存成功提示:使用現代化 Toast 通知
- 新增 LandingPage 起始頁面:動態時鐘與品牌 Logo 顯示
- 新增多個資料庫修復腳本:協助初始化 Supabase 環境
- 優化 Tailwind 配置:新增 slideDown 動畫效果
2026-01-03 19:33:53 +08:00

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';