mirror of
https://github.com/jcreek/SvelteKitSaasBoilerplate.git
synced 2026-07-13 02:53:50 +00:00
110 lines
3.0 KiB
PL/PgSQL
110 lines
3.0 KiB
PL/PgSQL
create table "public"."profiles" (
|
|
"id" uuid not null,
|
|
"updated_at" timestamp with time zone,
|
|
"created_at" timestamp with time zone default now(),
|
|
"username" text,
|
|
"full_name" text
|
|
);
|
|
|
|
|
|
alter table "public"."profiles" enable row level security;
|
|
|
|
CREATE UNIQUE INDEX profiles_pkey ON public.profiles USING btree (id);
|
|
|
|
CREATE UNIQUE INDEX profiles_username_key ON public.profiles USING btree (username);
|
|
|
|
alter table "public"."profiles" add constraint "profiles_pkey" PRIMARY KEY using index "profiles_pkey";
|
|
|
|
alter table "public"."profiles" add constraint "profiles_id_fkey" FOREIGN KEY (id) REFERENCES auth.users(id) ON DELETE CASCADE not valid;
|
|
|
|
alter table "public"."profiles" validate constraint "profiles_id_fkey";
|
|
|
|
alter table "public"."profiles" add constraint "profiles_username_key" UNIQUE using index "profiles_username_key";
|
|
|
|
alter table "public"."profiles" add constraint "username_length" CHECK ((char_length(username) >= 3)) not valid;
|
|
|
|
alter table "public"."profiles" validate constraint "username_length";
|
|
|
|
set check_function_bodies = off;
|
|
|
|
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
|
RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
SECURITY DEFINER
|
|
AS $function$
|
|
begin
|
|
insert into public.profiles (id, full_name)
|
|
values (new.id, new.raw_user_meta_data->>'full_name');
|
|
return new;
|
|
end;
|
|
$function$
|
|
;
|
|
|
|
grant delete on table "public"."profiles" to "anon";
|
|
|
|
grant insert on table "public"."profiles" to "anon";
|
|
|
|
grant references on table "public"."profiles" to "anon";
|
|
|
|
grant select on table "public"."profiles" to "anon";
|
|
|
|
grant trigger on table "public"."profiles" to "anon";
|
|
|
|
grant truncate on table "public"."profiles" to "anon";
|
|
|
|
grant update on table "public"."profiles" to "anon";
|
|
|
|
grant delete on table "public"."profiles" to "authenticated";
|
|
|
|
grant insert on table "public"."profiles" to "authenticated";
|
|
|
|
grant references on table "public"."profiles" to "authenticated";
|
|
|
|
grant select on table "public"."profiles" to "authenticated";
|
|
|
|
grant trigger on table "public"."profiles" to "authenticated";
|
|
|
|
grant truncate on table "public"."profiles" to "authenticated";
|
|
|
|
grant update on table "public"."profiles" to "authenticated";
|
|
|
|
grant delete on table "public"."profiles" to "service_role";
|
|
|
|
grant insert on table "public"."profiles" to "service_role";
|
|
|
|
grant references on table "public"."profiles" to "service_role";
|
|
|
|
grant select on table "public"."profiles" to "service_role";
|
|
|
|
grant trigger on table "public"."profiles" to "service_role";
|
|
|
|
grant truncate on table "public"."profiles" to "service_role";
|
|
|
|
grant update on table "public"."profiles" to "service_role";
|
|
|
|
create policy "Public profiles are viewable by everyone."
|
|
on "public"."profiles"
|
|
as permissive
|
|
for select
|
|
to public
|
|
using (true);
|
|
|
|
|
|
create policy "Users can insert their own profile."
|
|
on "public"."profiles"
|
|
as permissive
|
|
for insert
|
|
to public
|
|
with check ((auth.uid() = id));
|
|
|
|
|
|
create policy "Users can update own profile."
|
|
on "public"."profiles"
|
|
as permissive
|
|
for update
|
|
to public
|
|
using ((auth.uid() = id));
|
|
|
|
|
|
|