blob: f5a6daf697ef35eea12bd6ac0b1ff49b340127df (
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
34
35
36
37
38
|
CREATE FUNCTION _api.verify_jwt(
_token TEXT
)
RETURNS INTEGER
LANGUAGE plpgsql VOLATILE
AS $BODY$
DECLARE
_payload JSON;
_valid BOOLEAN;
_jwt_secret TEXT;
BEGIN
SELECT jwt_secret INTO _jwt_secret
FROM sys.database_info
WHERE name = current_database();
SELECT payload, valid
INTO _payload, _valid
FROM public.verify(
_token,
_jwt_secret
);
IF NOT FOUND THEN
RETURN NULL;
END IF;
IF _valid <> TRUE THEN
RETURN NULL;
END IF;
RETURN _payload->>'user_id';
END
$BODY$;
GRANT EXECUTE ON FUNCTION _api.verify_jwt(TEXT)
TO rest_anon, rest_user;
GRANT SELECT ON TABLE sys.database_info
TO rest_anon, rest_user;
|