db/87f7a4d_to_b3de72d.sql
2023-07-17 14:19:22 -04:00

33 lines
912 B
PL/PgSQL

alter table "public"."usr_session" alter column "key" drop default;
set check_function_bodies = off;
CREATE OR REPLACE FUNCTION public.usr_session_login(tag_or_email usr_tag_or_email, password text, remember boolean DEFAULT false, location text DEFAULT NULL::text, device usr_session_device DEFAULT NULL::usr_session_device, ip inet DEFAULT NULL::inet)
RETURNS usr_session_key
LANGUAGE plpgsql
AS $function$
declare
usr public.usr;
key public.usr_session_key := usr_session_key_gen();
expires_at timestamp;
begin
usr := public.usr_session_login_validate(tag_or_email, password);
if remember then
expires_at := now() + interval '1 week';
else
expires_at := now() + interval '1 hour';
end if;
insert into public.usr_session
(key, expires_at, usr, location, device, ip)
values
(key, expires_at, usr.id, location, device, ip);
return key;
end;
$function$
;