[Developer] #424 preserve ORDS templates and force auth context

This commit is contained in:
devmrko
2026-06-25 16:08:58 +09:00
parent eac43439d5
commit 079f5a9678
2 changed files with 20 additions and 17 deletions

View File

@@ -88,17 +88,13 @@ BEGIN
p_method => 'POST', p_method => 'POST',
p_source_type => ORDS.source_type_query, p_source_type => ORDS.source_type_query,
p_source => q'! p_source => q'!
WITH vpd_ctx AS (
SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) AS applied
FROM dual
)
SELECT d.doc_id, SELECT d.doc_id,
d.title, d.title,
d.owner_emp_no, d.owner_emp_no,
d.dept_code, d.dept_code,
d.contents d.contents
FROM admin.cb_v_search_documents d FROM admin.cb_v_search_documents d
CROSS JOIN vpd_ctx WHERE (SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) FROM dual) = 1
!', !',
p_items_per_page => 25 p_items_per_page => 25
); );

View File

@@ -161,13 +161,23 @@ public class OrdsMetadataService {
String source = objectQueryHandlerSource(objectId); String source = objectQueryHandlerSource(objectId);
ordsMetadataJdbcTemplate.update(""" ordsMetadataJdbcTemplate.update("""
DECLARE
v_module_count NUMBER;
BEGIN BEGIN
ORDS.DEFINE_MODULE( SELECT COUNT(*)
p_module_name => ?, INTO v_module_count
p_base_path => ?, FROM user_ords_modules
p_items_per_page => 25, WHERE name = ?;
p_status => 'PUBLISHED'
); IF v_module_count = 0 THEN
ORDS.DEFINE_MODULE(
p_module_name => ?,
p_base_path => ?,
p_items_per_page => 25,
p_status => 'PUBLISHED'
);
END IF;
ORDS.DEFINE_TEMPLATE( ORDS.DEFINE_TEMPLATE(
p_module_name => ?, p_module_name => ?,
p_pattern => ? p_pattern => ?
@@ -203,6 +213,7 @@ public class OrdsMetadataService {
COMMIT; COMMIT;
END; END;
""", """,
moduleName,
moduleName, basePath, moduleName, basePath,
moduleName, template, moduleName, template,
moduleName, template, source, moduleName, template, source,
@@ -218,14 +229,10 @@ public class OrdsMetadataService {
.reduce((left, right) -> left + ",\n " + right) .reduce((left, right) -> left + ",\n " + right)
.orElseThrow(); .orElseThrow();
return """ return """
WITH vpd_ctx AS (
SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) AS applied
FROM dual
)
SELECT %s SELECT %s
FROM %s.%s o FROM %s.%s o
CROSS JOIN vpd_ctx WHERE (SELECT cb_ords_handler_pkg.set_vpd_context_sql(:auth_header) FROM dual) = 1
WHERE ROWNUM <= LEAST(GREATEST(NVL(:row_limit, 50), 1), 500) AND ROWNUM <= LEAST(GREATEST(NVL(:row_limit, 50), 1), 500)
""".formatted(selectColumns, object.owner(), object.objectName()); """.formatted(selectColumns, object.owner(), object.objectName());
} }