59 lines
1.7 KiB
SQL
59 lines
1.7 KiB
SQL
|
|
-- Create profiles table
|
|
create table if not exists profiles (
|
|
id uuid references auth.users on delete cascade primary key,
|
|
role text not null default 'user' check (role in ('admin', 'user')),
|
|
full_name text,
|
|
created_at timestamp with time zone default timezone('utc'::text, now()) not null
|
|
);
|
|
|
|
-- Enable RLS for profiles
|
|
alter table profiles enable row level security;
|
|
|
|
-- Policies for profiles
|
|
create policy "Public profiles are viewable by everyone."
|
|
on profiles for select
|
|
using ( true );
|
|
|
|
create policy "Users can insert their own profile."
|
|
on profiles for insert
|
|
with check ( auth.uid() = id );
|
|
|
|
create policy "Users can update own profile."
|
|
on profiles for update
|
|
using ( auth.uid() = id );
|
|
|
|
-- Create site_settings table
|
|
create table if not exists site_settings (
|
|
id bigint primary key generated always as identity,
|
|
site_title text not null default 'ParaKasa',
|
|
site_description text,
|
|
contact_email text,
|
|
contact_phone text,
|
|
logo_url text,
|
|
currency text default 'TRY',
|
|
updated_at timestamp with time zone default timezone('utc'::text, now()) not null
|
|
);
|
|
|
|
-- Enable RLS for site_settings
|
|
alter table site_settings enable row level security;
|
|
|
|
-- Policies for site_settings
|
|
create policy "Site settings are viewable by everyone."
|
|
on site_settings for select
|
|
using ( true );
|
|
|
|
create policy "Only admins can update site settings."
|
|
on site_settings for update
|
|
using (
|
|
exists (
|
|
select 1 from profiles
|
|
where profiles.id = auth.uid() and profiles.role = 'admin'
|
|
)
|
|
);
|
|
|
|
-- Initialize default site settings if empty
|
|
insert into site_settings (site_title, contact_email)
|
|
select 'ParaKasa', 'info@parakasa.com'
|
|
where not exists (select 1 from site_settings);
|