blob: 9e63cc94f7abaf918732aaa4ea3f3e475605e499 (
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
39
40
41
42
43
44
45
46
47
|
CREATE FUNCTION _api.verify_jwt(
_token TEXT
)
RETURNS INTEGER
LANGUAGE plpgsql VOLATILE
AS $BODY$
DECLARE
_payload JSON;
_valid BOOLEAN;
_jwt_secret TEXT;
_user_id INTEGER;
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;
_user_id = _payload->>'user_id';
UPDATE admin.user
SET seen = clock_timestamp()
WHERE id = _user_id;
RETURN _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;
GRANT UPDATE ON TABLE admin.user
TO rest_anon, rest_user;
|