Compare commits

...

2 Commits

Author SHA1 Message Date
Christoph Lienhard d2eaf3bd98
#17 unfinished 2021-06-23 17:49:49 +02:00
Christoph Lienhard 6441716a00
#17 Restructure backend folders 2021-06-13 14:24:52 +02:00
11 changed files with 42 additions and 4 deletions

View File

@ -90,6 +90,43 @@ $$ language plpgsql strict
security definer;
grant execute on function candymat_data.authenticate(text, text) to candymat_anonymous, candymat_person;
-- Change password
drop function if exists candymat_data.change_password;
create function candymat_data.change_password(
email text,
old_password text,
new_password text
) returns candymat_data.jwt_token as
$$
declare
account candymat_data_privat.person_account;
declare person candymat_data.person;
begin
select a.*
into account
from candymat_data_privat.person_account as a
where a.email = $1;
select p.*
into person
from candymat_data.person as p
where p.row_id = account.person_row_id;
if account.password_hash = crypt(old_password, account.password_hash) then
select *
from candymat_data.person
where row_id = nullif(current_setting('jwt.claims.person_row_id', true), '')::integer
return (person.role, account.person_row_id,
extract(epoch from (now() + interval '2 days')))::candymat_data.jwt_token;
else
return null;
end if;
end;
$$ language plpgsql strict
security definer;
grant execute on function candymat_data.change_role(integer, candymat_data.role) to candymat_editor;
-- Change role: Changes role for a given user. Only editors are allowed to use it.
drop function if exists candymat_data.change_role;
@ -109,5 +146,6 @@ begin
return person;
end;
$$ language plpgsql strict security definer;
$$ language plpgsql strict
security definer;
grant execute on function candymat_data.change_role(integer, candymat_data.role) to candymat_editor;

View File

@ -28,10 +28,10 @@ services:
image: candymat-postgres:11.5
build:
dockerfile: ./Dockerfile
context: ./backend/
context: ./backend/db
environment:
- "POSTGRES_PASSWORD=${POSTGRES_PASSWORD}"
env_file: ./backend/backend.env
env_file: ./backend/dev.env
ports:
- "5432:5432"
restart: always
@ -45,7 +45,7 @@ services:
image: graphile/postgraphile
depends_on:
- postgres
env_file: ./backend/backend.env
env_file: ./backend/dev.env
ports:
- "5433:5000"
command: [