You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
PL/PgSQL
54 lines
1.4 KiB
PL/PgSQL
create or replace function public.register_user(_email text, _password_hash text)
|
|
returns setof public.user
|
|
language plpgsql
|
|
as $function$
|
|
declare
|
|
_user_uuid uuid;
|
|
begin
|
|
insert into "user" (
|
|
user_email,
|
|
user_password_hash
|
|
) values (
|
|
_email,
|
|
_password_hash
|
|
) returning user_uuid into _user_uuid;
|
|
|
|
return query select * from "user" where user_uuid = _user_uuid;
|
|
end; $function$;
|
|
|
|
create or replace function public.validate_session(_session_uuid uuid)
|
|
returns setof public.v_session
|
|
language plpgsql
|
|
as $function$
|
|
begin
|
|
return query select * from v_session
|
|
where session_uuid = _session_uuid
|
|
and session_time_last_active + session_timeout_length < now();
|
|
end; $function$;
|
|
|
|
create or replace function public.login_user_session(_user_uuid uuid, _timeout_length interval, _ip_addr varchar(50), _user_agent varchar(500), _referer varchar(500), _link uuid)
|
|
returns setof public.v_session
|
|
language plpgsql
|
|
as $function$
|
|
declare
|
|
_session_uuid uuid;
|
|
begin
|
|
insert into "session" (
|
|
session_user_uuid,
|
|
session_timeout_length,
|
|
session_ip_address,
|
|
session_user_agent,
|
|
session_referer,
|
|
session_originating_link
|
|
) values (
|
|
_user_uuid,
|
|
_timeout_length,
|
|
_ip_addr,
|
|
_user_agent,
|
|
_referer,
|
|
_link
|
|
) returning session_uuid into _session_uuid;
|
|
|
|
return query select * from public.validate_session(_session_uuid);
|
|
end; $function$;
|