aonestar
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
fn_guest_document_path_from_url
Parameters
Name
Type
Mode
i_url
text
IN
Definition
DECLARE v_clean_url text; v_actual_origin text; v_expected_origin text; v_path text; v_path_prefix text := fn_s3_prop_prefix() || '/guest_document/'; BEGIN IF NULLIF(i_url, '') IS NULL THEN RETURN NULL; END IF; v_clean_url := split_part(split_part(i_url, '?', 1), '#', 1); v_actual_origin := substring(v_clean_url FROM '^(https://[^/]+)'); v_expected_origin := substring( rtrim(doc.s3_config( 'FILE_STORAGE_URL', 'https://fromas.sgp1.cdn.digitaloceanspaces.com/' ), '/') FROM '^(https://[^/]+)' ); v_path := substring(v_clean_url FROM '^https://[^/]+/(.+)$'); IF v_actual_origin IS NULL OR lower(v_actual_origin) <> lower(v_expected_origin) THEN PERFORM sp_raise_error('99', 'Guest document URL must use the configured file storage host'); END IF; IF v_path IS NULL OR v_path NOT LIKE v_path_prefix || '%' OR position('..' IN v_path) > 0 OR position('%2f' IN lower(v_path)) > 0 THEN PERFORM sp_raise_error('99', 'Guest document URL must belong to the current property guest_document path'); END IF; RETURN v_path; END;