From f2f6c9d55907c1fb67169d9f89740122a1481498 Mon Sep 17 00:00:00 2001 From: Jacob O'Mara Date: Tue, 4 Nov 2025 15:22:21 +0000 Subject: [PATCH] Bug 39224: integrate shibboleth UI into staff interface Add menu entry, configure build system, and set up routing for Shibboleth configuration interface. --- Makefile.PL | 1 + debian/templates/apache-shared-intranet.conf | 3 ++- koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc | 3 +++ koha-tmpl/intranet-tmpl/prog/js/fetch/api-client.js | 1 + koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js | 2 ++ rspack.config.js | 2 ++ 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile.PL b/Makefile.PL index 757a8d85cd1..e3ff23517f1 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -362,6 +362,7 @@ my $target_map = { './rotating_collections' => 'INTRANET_CGI_DIR', './serials' => 'INTRANET_CGI_DIR', './services' => 'INTRANET_CGI_DIR', + './shibboleth' => 'INTRANET_CGI_DIR', './skel' => 'NONE', './skel/var/lock/koha' => { target => 'LOCK_DIR', trimdir => -1 }, './skel/var/log/koha' => { target => 'LOG_DIR', trimdir => -1 }, diff --git a/debian/templates/apache-shared-intranet.conf b/debian/templates/apache-shared-intranet.conf index ad001458325..d29df3d06e9 100644 --- a/debian/templates/apache-shared-intranet.conf +++ b/debian/templates/apache-shared-intranet.conf @@ -21,6 +21,7 @@ RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT] RewriteRule ^(.*)_[0-9]{2}\.[0-9]{7}\.(js|css)$ $1.$2 [L] RewriteRule ^/cgi-bin/koha/erm/.*$ /cgi-bin/koha/erm/erm.pl [PT] +RewriteRule ^/cgi-bin/koha/shibboleth/.*$ /cgi-bin/koha/shibboleth/shibboleth.pl [PT] RewriteCond %{REQUEST_URI} !^/cgi-bin/koha/preservation/.*.pl$ RewriteRule ^/cgi-bin/koha/preservation/.*$ /cgi-bin/koha/preservation/home.pl [PT] RewriteRule ^/cgi-bin/koha/admin/record_sources(.*)?$ /cgi-bin/koha/admin/record_sources.pl$1 [PT] @@ -38,4 +39,4 @@ Alias "/api" "/usr/share/koha/api" RewriteBase /api/ RewriteCond %{REQUEST_URI} !^/api/v[0-1]+/app.pl RewriteRule ^(v[0-9]+)/(.*)$ /api/$1/app.pl/api/$1/$2 [L] - \ No newline at end of file + diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc index 1cc415df33b..7d7e710d060 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc @@ -40,6 +40,9 @@
  • Library transfer limits
  • Transport cost matrix
  • [% END %] + [% IF ( CAN_user_parameters_manage_identity_providers ) %] +
  • Shibboleth configuration
  • + [% END %] [% IF ( CAN_user_parameters_manage_item_circ_alerts ) %]
  • Item circulation alerts
  • [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/fetch/api-client.js b/koha-tmpl/intranet-tmpl/prog/js/fetch/api-client.js index 918947db605..ea9e99a032a 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/fetch/api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/fetch/api-client.js @@ -197,6 +197,7 @@ export const APIClient = { patron: createClientProxy(() => import("./patron-api-client.js")), patron_list: createClientProxy(() => import("./patron-list-api-client.js")), recall: createClientProxy(() => import("./recall-api-client.js")), + shibboleth: createClientProxy(() => import("./shibboleth-api-client.js")), sysprefs: createClientProxy( () => import("./system-preferences-api-client.js") ), diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js index d7b00857aaa..1b2eea05b8c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/api-client.js @@ -8,6 +8,7 @@ import AVAPIClient from "@fetch/authorised-values-api-client"; import ItemAPIClient from "@fetch/item-api-client"; import RecordSourcesAPIClient from "@fetch/record-sources-api-client"; import SysprefAPIClient from "@fetch/system-preferences-api-client"; +import ShibbolethAPIClient from "@fetch/shibboleth-api-client"; import PreservationAPIClient from "@fetch/preservation-api-client"; export const APIClient = { @@ -18,6 +19,7 @@ export const APIClient = { authorised_values: new AVAPIClient(HttpClient), item: new ItemAPIClient(HttpClient), sysprefs: new SysprefAPIClient(HttpClient), + shibboleth: new ShibbolethAPIClient(HttpClient), preservation: new PreservationAPIClient(HttpClient), record_sources: new RecordSourcesAPIClient(HttpClient), }; diff --git a/rspack.config.js b/rspack.config.js index e05273fb7b5..c3d78fa3988 100644 --- a/rspack.config.js +++ b/rspack.config.js @@ -27,6 +27,8 @@ module.exports = [ acquisitions: "./koha-tmpl/intranet-tmpl/prog/js/vue/modules/acquisitions.ts", islands: "./koha-tmpl/intranet-tmpl/prog/js/vue/modules/islands.ts", + shibboleth: + "./koha-tmpl/intranet-tmpl/prog/js/vue/modules/shibboleth.ts", }, output: { filename: "[name].js", -- 2.39.5