Working on user functions
parent
1ae63fbbc7
commit
70da9a6670
@ -0,0 +1,25 @@
|
||||
const pg = require('../pg')
|
||||
const joinjs = require('join-js').default;
|
||||
const debug = require('debug')('sos:db:user')
|
||||
const mappings = require('../mappings')
|
||||
|
||||
const session = module.exports = {}
|
||||
|
||||
session.create = async (user_uuid, ip_address, user_agent, referer, origin_link_uuid) => {
|
||||
const query = {
|
||||
text: 'select * from login_user_session($1, $2, $3, $4, $5, $6)',
|
||||
values: [
|
||||
user_uuid,
|
||||
'2 hours',
|
||||
ip_address,
|
||||
user_agent,
|
||||
referer,
|
||||
origin_link_uuid
|
||||
]
|
||||
}
|
||||
|
||||
debug(query);
|
||||
|
||||
const {rows} = await pg.query(query)
|
||||
return joinjs.map(rows, mappings, 'sessionMap', 'session_');
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
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$;
|
Loading…
Reference in New Issue