This commit is contained in:
parent
d26aa997f3
commit
c7091e9ed4
@ -33,7 +33,6 @@ select immutable( 'public'
|
|||||||
, 'usr_session'
|
, 'usr_session'
|
||||||
, array[ 'id'
|
, array[ 'id'
|
||||||
, 'key'
|
, 'key'
|
||||||
, 'expires_at'
|
|
||||||
, 'usr'
|
, 'usr'
|
||||||
, 'location'
|
, 'location'
|
||||||
, 'device'
|
, 'device'
|
||||||
@ -41,7 +40,7 @@ select immutable( 'public'
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
create function public.usr_session_touch(session public.usr_session_key)
|
create function public.usr_session_touch(touch_key public.usr_session_key)
|
||||||
returns public.usr
|
returns public.usr
|
||||||
language plpgsql
|
language plpgsql
|
||||||
volatile
|
volatile
|
||||||
@ -51,9 +50,9 @@ declare
|
|||||||
session_usr public.usr;
|
session_usr public.usr;
|
||||||
new_exp timestamp;
|
new_exp timestamp;
|
||||||
begin
|
begin
|
||||||
select s
|
select s.*
|
||||||
from public.usr_session s
|
from public.usr_session s
|
||||||
where s.key = session
|
where s.key = touch_key
|
||||||
into session;
|
into session;
|
||||||
|
|
||||||
if session is null then
|
if session is null then
|
||||||
@ -70,8 +69,8 @@ begin
|
|||||||
new_exp := now() + interval '1 hour';
|
new_exp := now() + interval '1 hour';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
update public.usr_session s
|
update public.usr_session as s
|
||||||
set s.expires_at = new_exp
|
set expires_at = new_exp
|
||||||
where s.id = session.id;
|
where s.id = session.id;
|
||||||
|
|
||||||
select u.*
|
select u.*
|
||||||
@ -151,7 +150,7 @@ begin
|
|||||||
insert into public.usr_session
|
insert into public.usr_session
|
||||||
(key, expires_at, usr, remembered, location, device, ip)
|
(key, expires_at, usr, remembered, location, device, ip)
|
||||||
values
|
values
|
||||||
(key, expires_at, usr.id, remember, location, device, ip);
|
(key, expires_at, usr.id, coalesce(remember, false), location, device, ip);
|
||||||
|
|
||||||
return key;
|
return key;
|
||||||
end;
|
end;
|
||||||
|
@ -41,6 +41,20 @@ begin
|
|||||||
end;
|
end;
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
create function public.usr_groups(of_usr human_uuid.huid)
|
||||||
|
returns setof public.grp
|
||||||
|
stable
|
||||||
|
language plpgsql
|
||||||
|
as $$
|
||||||
|
begin
|
||||||
|
return query select g.*
|
||||||
|
from public.usr u
|
||||||
|
inner join public.grp_usr gu on gu.usr = u.id
|
||||||
|
inner join public.grp g on g.id = gu.grp
|
||||||
|
where u.uid = of_usr;
|
||||||
|
end;
|
||||||
|
$$;
|
||||||
|
|
||||||
create function public.grp_members_admins()
|
create function public.grp_members_admins()
|
||||||
returns setof public.usr
|
returns setof public.usr
|
||||||
stable
|
stable
|
||||||
|
@ -4,19 +4,23 @@ create function public.do_usr_create_default_grp()
|
|||||||
language plpgsql
|
language plpgsql
|
||||||
as $$
|
as $$
|
||||||
declare
|
declare
|
||||||
new_grp int;
|
name public.grp_tag := grp_tag_of_string('usr_' || new.uid);
|
||||||
|
new_grp public.grp;
|
||||||
begin
|
begin
|
||||||
insert into public.grp (tag)
|
insert into public.grp
|
||||||
values (grp_tag_of_string('usr_' || new.uid))
|
(tag)
|
||||||
returning id into new_grp;
|
values
|
||||||
|
(name)
|
||||||
|
returning * into new_grp;
|
||||||
|
|
||||||
perform public.grp_add_member(to_grp => new_grp, add_usr => new.id);
|
perform public.grp_add_member(to_grp => new_grp.id, add_usr => new.id);
|
||||||
|
|
||||||
update public.perm
|
update public.perm
|
||||||
set owner_user = (public.usr_root()).id
|
set owner_user = NEW.id
|
||||||
, owner_group = (public.grp_admins()).id
|
, owner_group = (public.grp_admins()).id
|
||||||
where path = '/groups/' || new_grp || '/members'
|
, owner_user_mode = 'r' :: public.perm_mode
|
||||||
or path = '/groups/' || new_grp || '/tag';
|
where path = '/groups/' || (new_grp.uid :: text) || '/members'
|
||||||
|
or path = '/groups/' || (new_grp.uid :: text) || '/name';
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
end;
|
end;
|
||||||
|
@ -40,7 +40,7 @@ begin
|
|||||||
(path, owner_user, owner_group, owner_user_mode, owner_group_mode, everyone_mode)
|
(path, owner_user, owner_group, owner_user_mode, owner_group_mode, everyone_mode)
|
||||||
values
|
values
|
||||||
('/groups/' || human_uuid.huid_to_string(NEW.uid) || '/members', (public.get_acting_usr()).id, NEW.id, 'w', 'w', '-')
|
('/groups/' || human_uuid.huid_to_string(NEW.uid) || '/members', (public.get_acting_usr()).id, NEW.id, 'w', 'w', '-')
|
||||||
, ('/groups/' || human_uuid.huid_to_string(NEW.uid) || '/tag', (public.get_acting_usr()).id, NEW.id, 'w', 'w', 'r')
|
, ('/groups/' || human_uuid.huid_to_string(NEW.uid) || '/name', (public.get_acting_usr()).id, NEW.id, 'w', 'w', 'r')
|
||||||
;
|
;
|
||||||
|
|
||||||
return new;
|
return new;
|
||||||
|
Loading…
Reference in New Issue
Block a user