blob: dc8e9208e4947e9849d9f3665bff185f63f4ee50 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
CREATE FUNCTION _api.sign_jwt(
_role TEXT,
_user_id INTEGER
)
RETURNS sys.JWT
LANGUAGE plpgsql VOLATILE
AS $BODY$
DECLARE
_jwt_secret TEXT;
_token sys.JWT;
BEGIN
SELECT jwt_secret INTO _jwt_secret
FROM sys.database_info
WHERE name = current_database();
SELECT public.sign(
row_to_json(r), _jwt_secret
) INTO _token
FROM (
SELECT
_role AS role,
_user_id AS user_id,
extract(epoch FROM now())::integer + (60 * 60 * 24) AS exp
) r;
RETURN _token;
END
$BODY$;
GRANT EXECUTE ON FUNCTION _api.sign_jwt(TEXT, INTEGER)
TO rest_anon, rest_user;
GRANT SELECT ON TABLE sys.database_info
TO rest_anon, rest_user;
|