From 153977023f4c7083c269cbcfb442c96b8bb5bea9 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 11 Feb 2025 22:46:56 +0100 Subject: [PATCH] Remove the create evenet listener Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at> --- dbrepo-analyse-service/Pipfile.lock | 390 +-- .../lib/dbrepo-1.7.0-py3-none-any.whl | Bin 0 -> 30967 bytes .../lib/dbrepo-1.7.0.tar.gz | Bin 0 -> 40691 bytes dbrepo-auth-service/dbrepo-realm.json | 2 +- dbrepo-auth-service/listeners/.gitignore | 30 - dbrepo-auth-service/listeners/pom.xml | 111 - .../src/main/java/at/tuwien/Client.java | 65 - .../tuwien/CreateEventListenerProvider.java | 139 - .../CreateEventListenerProviderFactory.java | 36 - .../META-INF/jboss-deployment-structure.xml | 8 - ...ycloak.events.EventListenerProviderFactory | 1 - .../tuwien/EventListenerIntegrationTest.java | 18 - .../src/test/resources/dbrepo-realm.json | 2798 ----------------- .../target/create-event-listener.jar | Bin 10139 -> 0 bytes dbrepo-dashboard-service/.coverage | Bin 0 -> 53248 bytes dbrepo-dashboard-service/access.py | 41 + dbrepo-dashboard-service/api/dto.py | 50 + .../clients/grafana_client.py | 27 + .../clients/keycloak_client.py | 36 + dbrepo-dashboard-service/coverage.txt | 7 + dbrepo-dashboard-service/dashboard.py | 273 ++ dbrepo-dashboard-service/report.xml | 1 + dbrepo-gateway-service/dbrepo.conf | 4 + .../at/tuwien/api/auth/CreateUserDto.java | 46 - .../at/tuwien/endpoints/UserEndpoint.java | 57 - .../endpoints/UserEndpointUnitTest.java | 50 +- .../service/UserServicePersistenceTest.java | 28 +- .../tuwien/service/UserServiceUnitTest.java | 20 +- .../java/at/tuwien/utils/KeycloakUtils.java | 9 + .../java/at/tuwien/config/KeycloakConfig.java | 14 +- .../at/tuwien/listener/KeycloakListener.java | 5 + .../listener/impl/KeycloakListenerImpl.java | 66 + .../java/at/tuwien/service/UserService.java | 10 - .../tuwien/service/impl/UserServiceImpl.java | 23 - .../main/java/at/tuwien/test/BaseTest.java | 22 - dbrepo-search-service/Pipfile.lock | 494 +-- dbrepo-search-service/init/Pipfile.lock | 310 +- .../init/lib/dbrepo-1.7.0-py3-none-any.whl | Bin 0 -> 30967 bytes .../init/lib/dbrepo-1.7.0.tar.gz | Bin 0 -> 40691 bytes .../lib/dbrepo-1.7.0-py3-none-any.whl | Bin 0 -> 30967 bytes dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz | Bin 0 -> 40691 bytes docker-compose.yml | 4 - helm/dbrepo/files/create-event-listener.jar | Bin 10138 -> 0 bytes helm/dbrepo/templates/auth-configmap.yaml | 5 +- helm/dbrepo/templates/gateway-configmap.yaml | 6 + make/build.mk | 4 - make/dev.mk | 2 +- 47 files changed, 1161 insertions(+), 4051 deletions(-) create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz delete mode 100644 dbrepo-auth-service/listeners/.gitignore delete mode 100644 dbrepo-auth-service/listeners/pom.xml delete mode 100644 dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java delete mode 100644 dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java delete mode 100644 dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java delete mode 100644 dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml delete mode 100644 dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory delete mode 100644 dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java delete mode 100644 dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json delete mode 100644 dbrepo-auth-service/listeners/target/create-event-listener.jar create mode 100644 dbrepo-dashboard-service/.coverage create mode 100644 dbrepo-dashboard-service/access.py create mode 100644 dbrepo-dashboard-service/api/dto.py create mode 100644 dbrepo-dashboard-service/clients/grafana_client.py create mode 100644 dbrepo-dashboard-service/clients/keycloak_client.py create mode 100644 dbrepo-dashboard-service/coverage.txt create mode 100644 dbrepo-dashboard-service/dashboard.py create mode 100644 dbrepo-dashboard-service/report.xml delete mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java create mode 100644 dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/KeycloakListener.java create mode 100644 dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/impl/KeycloakListenerImpl.java create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz create mode 100644 dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl create mode 100644 dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz delete mode 100644 helm/dbrepo/files/create-event-listener.jar diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 5d2ace3655..83ed8a674d 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9cc4c161729b642069bbf4ab379c0f4a9122035afcb3ac7b5b1bfc13281f76aa" + "sha256": "0af9d522f713554dd7996401992cffddf372ade320c11d7950bdcd5888aa1a03" }, "pipfile-spec": 6, "requires": { @@ -18,93 +18,98 @@ "default": { "aiohappyeyeballs": { "hashes": [ - "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", - "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8" + "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", + "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0" ], - "markers": "python_version >= '3.8'", - "version": "==2.4.4" + "markers": "python_version >= '3.9'", + "version": "==2.4.6" }, "aiohttp": { "hashes": [ - "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", - "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33", - "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", - "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", - "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9", - "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e", - "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350", - "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226", - "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", - "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a", - "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6", - "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add", - "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", - "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", - "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", - "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e", - "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", - "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1", - "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c", - "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", - "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5", - "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e", - "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", - "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3", - "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438", - "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", - "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3", - "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", - "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", - "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2", - "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", - "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c", - "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55", - "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", - "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e", - "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1", - "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", - "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", - "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", - "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", - "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1", - "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", - "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", - "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", - "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", - "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8", - "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", - "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", - "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", - "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", - "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", - "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef", - "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28", - "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", - "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", - "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", - "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", - "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", - "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", - "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", - "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745", - "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", - "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", - "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43", - "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", - "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", - "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd", - "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d", - "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", - "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", - "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", - "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", - "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", - "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f", - "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", - "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e" + "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", + "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", + "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", + "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", + "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", + "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", + "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", + "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", + "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", + "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", + "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", + "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", + "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", + "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", + "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", + "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", + "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", + "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", + "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", + "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", + "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", + "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", + "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", + "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", + "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", + "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", + "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", + "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", + "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", + "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", + "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", + "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", + "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", + "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", + "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", + "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", + "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", + "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", + "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", + "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", + "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", + "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", + "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", + "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", + "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", + "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", + "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", + "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", + "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", + "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", + "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", + "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", + "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", + "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", + "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", + "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", + "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", + "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", + "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", + "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", + "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", + "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", + "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", + "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", + "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", + "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", + "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", + "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", + "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", + "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", + "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", + "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", + "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", + "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", + "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", + "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", + "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", + "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", + "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", + "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", + "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287" ], "markers": "python_version >= '3.9'", - "version": "==3.11.11" + "version": "==3.11.12" }, "aiosignal": { "hashes": [ @@ -175,28 +180,28 @@ }, "boto3": { "hashes": [ - "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9", - "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779" + "sha256:59bcf0c4b04d9cc36f8b418ad17ab3c4a99a21a175d2fad7096aa21cbe84630b", + "sha256:5ecae20e780a3ce9afb3add532b61c466a8cb8960618e4fa565b3883064c1346" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.36.8" + "version": "==1.36.17" }, "botocore": { "hashes": [ - "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2", - "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa" + "sha256:069858b2fd693548035d7fd53a774e37e4260fea64e0ac9b8a3aee904f9321df", + "sha256:cec13e0a7ce78e71aad0b397581b4e81824c7981ef4c261d2e296d200c399b09" ], "markers": "python_version >= '3.8'", - "version": "==1.36.8" + "version": "==1.36.17" }, "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "cffi": { "hashes": [ @@ -379,42 +384,46 @@ }, "cryptography": { "hashes": [ - "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", - "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", - "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", - "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", - "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", - "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", - "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", - "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", - "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", - "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", - "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", - "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", - "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", - "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", - "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", - "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", - "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", - "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", - "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", - "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", - "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", - "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", - "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", - "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", - "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", - "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", - "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4" + "sha256:00918d859aa4e57db8299607086f793fa7813ae2ff5a4637e318a25ef82730f7", + "sha256:1e8d181e90a777b63f3f0caa836844a1182f1f265687fac2115fcf245f5fbec3", + "sha256:1f9a92144fa0c877117e9748c74501bea842f93d21ee00b0cf922846d9d0b183", + "sha256:21377472ca4ada2906bc313168c9dc7b1d7ca417b63c1c3011d0c74b7de9ae69", + "sha256:24979e9f2040c953a94bf3c6782e67795a4c260734e5264dceea65c8f4bae64a", + "sha256:2a46a89ad3e6176223b632056f321bc7de36b9f9b93b2cc1cccf935a3849dc62", + "sha256:322eb03ecc62784536bc173f1483e76747aafeb69c8728df48537eb431cd1911", + "sha256:436df4f203482f41aad60ed1813811ac4ab102765ecae7a2bbb1dbb66dcff5a7", + "sha256:4f422e8c6a28cf8b7f883eb790695d6d45b0c385a2583073f3cec434cc705e1a", + "sha256:53f23339864b617a3dfc2b0ac8d5c432625c80014c25caac9082314e9de56f41", + "sha256:5fed5cd6102bb4eb843e3315d2bf25fede494509bddadb81e03a859c1bc17b83", + "sha256:610a83540765a8d8ce0f351ce42e26e53e1f774a6efb71eb1b41eb01d01c3d12", + "sha256:6c8acf6f3d1f47acb2248ec3ea261171a671f3d9428e34ad0357148d492c7864", + "sha256:6f76fdd6fd048576a04c5210d53aa04ca34d2ed63336d4abd306d0cbe298fddf", + "sha256:72198e2b5925155497a5a3e8c216c7fb3e64c16ccee11f0e7da272fa93b35c4c", + "sha256:887143b9ff6bad2b7570da75a7fe8bbf5f65276365ac259a5d2d5147a73775f2", + "sha256:888fcc3fce0c888785a4876ca55f9f43787f4c5c1cc1e2e0da71ad481ff82c5b", + "sha256:8e6a85a93d0642bd774460a86513c5d9d80b5c002ca9693e63f6e540f1815ed0", + "sha256:94f99f2b943b354a5b6307d7e8d19f5c423a794462bde2bf310c770ba052b1c4", + "sha256:9b336599e2cb77b1008cb2ac264b290803ec5e8e89d618a5e978ff5eb6f715d9", + "sha256:a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008", + "sha256:b8272f257cf1cbd3f2e120f14c68bff2b6bdfcc157fafdee84a1b795efd72862", + "sha256:bf688f615c29bfe9dfc44312ca470989279f0e94bb9f631f85e3459af8efc009", + "sha256:d9c5b9f698a83c8bd71e0f4d3f9f839ef244798e5ffe96febfa9714717db7af7", + "sha256:dd7c7e2d71d908dc0f8d2027e1604102140d84b155e658c20e8ad1304317691f", + "sha256:df978682c1504fc93b3209de21aeabf2375cb1571d4e61907b3e7a2540e83026", + "sha256:e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f", + "sha256:eb3889330f2a4a148abead555399ec9a32b13b7c8ba969b72d8e500eb7ef84cd", + "sha256:f4daefc971c2d1f82f03097dc6f216744a6cd2ac0f04c68fb935ea2ba2a0d420", + "sha256:f51f5705ab27898afda1aaa430f34ad90dc117421057782022edf0600bec5f14", + "sha256:fd0ee90072861e276b0ff08bd627abec29e32a53b2be44e41dbcdf87cbee2b00" ], "markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'", - "version": "==44.0.0" + "version": "==44.0.1" }, "dbrepo": { "hashes": [ - "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" + "sha256:f25d5adbd618bf2906578e671af2bf3bcc24d738ef8bc791c220e7e5b714e2f7" ], - "path": "./lib/dbrepo-1.6.3.tar.gz" + "path": "./lib/dbrepo-1.7.0.tar.gz" }, "events": { "hashes": [ @@ -1361,10 +1370,10 @@ }, "pytz": { "hashes": [ - "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", - "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725" + "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", + "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e" ], - "version": "==2024.2" + "version": "==2025.1" }, "pyyaml": { "hashes": [ @@ -1801,11 +1810,11 @@ }, "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "cffi": { "hashes": [ @@ -1980,72 +1989,73 @@ }, "coverage": { "hashes": [ - "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", - "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", - "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", - "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", - "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", - "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", - "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", - "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", - "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", - "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", - "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", - "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", - "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", - "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", - "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", - "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", - "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", - "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", - "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", - "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", - "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", - "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", - "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", - "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", - "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", - "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", - "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", - "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", - "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", - "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", - "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", - "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", - "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", - "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", - "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", - "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", - "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", - "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", - "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", - "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", - "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", - "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", - "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", - "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", - "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", - "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", - "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", - "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", - "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", - "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", - "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", - "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", - "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", - "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", - "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", - "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", - "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", - "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", - "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", - "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", - "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", - "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" + "sha256:00b2086892cf06c7c2d74983c9595dc511acca00665480b3ddff749ec4fb2a95", + "sha256:0533adc29adf6a69c1baa88c3d7dbcaadcffa21afbed3ca7a225a440e4744bf9", + "sha256:06097c7abfa611c91edb9e6920264e5be1d6ceb374efb4986f38b09eed4cb2fe", + "sha256:07e92ae5a289a4bc4c0aae710c0948d3c7892e20fd3588224ebe242039573bf0", + "sha256:0a9d8be07fb0832636a0f72b80d2a652fe665e80e720301fb22b191c3434d924", + "sha256:0e549f54ac5f301e8e04c569dfdb907f7be71b06b88b5063ce9d6953d2d58574", + "sha256:0ef01d70198431719af0b1f5dcbefc557d44a190e749004042927b2a3fed0702", + "sha256:0f16f44025c06792e0fb09571ae454bcc7a3ec75eeb3c36b025eccf501b1a4c3", + "sha256:14d47376a4f445e9743f6c83291e60adb1b127607a3618e3185bbc8091f0467b", + "sha256:1a936309a65cc5ca80fa9f20a442ff9e2d06927ec9a4f54bcba9c14c066323f2", + "sha256:1ceeb90c3eda1f2d8c4c578c14167dbd8c674ecd7d38e45647543f19839dd6ea", + "sha256:1f7ffa05da41754e20512202c866d0ebfc440bba3b0ed15133070e20bf5aeb5f", + "sha256:200e10beb6ddd7c3ded322a4186313d5ca9e63e33d8fab4faa67ef46d3460af3", + "sha256:220fa6c0ad7d9caef57f2c8771918324563ef0d8272c94974717c3909664e674", + "sha256:2251fabcfee0a55a8578a9d29cecfee5f2de02f11530e7d5c5a05859aa85aee9", + "sha256:2458f275944db8129f95d91aee32c828a408481ecde3b30af31d552c2ce284a0", + "sha256:299cf973a7abff87a30609879c10df0b3bfc33d021e1adabc29138a48888841e", + "sha256:2b996819ced9f7dbb812c701485d58f261bef08f9b85304d41219b1496b591ef", + "sha256:3688b99604a24492bcfe1c106278c45586eb819bf66a654d8a9a1433022fb2eb", + "sha256:3a1e465f398c713f1b212400b4e79a09829cd42aebd360362cd89c5bdc44eb87", + "sha256:488c27b3db0ebee97a830e6b5a3ea930c4a6e2c07f27a5e67e1b3532e76b9ef1", + "sha256:48cfc4641d95d34766ad41d9573cc0f22a48aa88d22657a1fe01dca0dbae4de2", + "sha256:4b467a8c56974bf06e543e69ad803c6865249d7a5ccf6980457ed2bc50312703", + "sha256:53c56358d470fa507a2b6e67a68fd002364d23c83741dbc4c2e0680d80ca227e", + "sha256:5d1095bbee1851269f79fd8e0c9b5544e4c00c0c24965e66d8cba2eb5bb535fd", + "sha256:641dfe0ab73deb7069fb972d4d9725bf11c239c309ce694dd50b1473c0f641c3", + "sha256:64cbb1a3027c79ca6310bf101014614f6e6e18c226474606cf725238cf5bc2d4", + "sha256:66fe626fd7aa5982cdebad23e49e78ef7dbb3e3c2a5960a2b53632f1f703ea45", + "sha256:676f92141e3c5492d2a1596d52287d0d963df21bf5e55c8b03075a60e1ddf8aa", + "sha256:69e62c5034291c845fc4df7f8155e8544178b6c774f97a99e2734b05eb5bed31", + "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8", + "sha256:78f5243bb6b1060aed6213d5107744c19f9571ec76d54c99cc15938eb69e0e86", + "sha256:79cac3390bfa9836bb795be377395f28410811c9066bc4eefd8015258a7578c6", + "sha256:7ae6eabf519bc7871ce117fb18bf14e0e343eeb96c377667e3e5dd12095e0288", + "sha256:7e39e845c4d764208e7b8f6a21c541ade741e2c41afabdfa1caa28687a3c98cf", + "sha256:8161d9fbc7e9fe2326de89cd0abb9f3599bccc1287db0aba285cb68d204ce929", + "sha256:8bec2ac5da793c2685ce5319ca9bcf4eee683b8a1679051f8e6ec04c4f2fd7dc", + "sha256:959244a17184515f8c52dcb65fb662808767c0bd233c1d8a166e7cf74c9ea985", + "sha256:9b148068e881faa26d878ff63e79650e208e95cf1c22bd3f77c3ca7b1d9821a3", + "sha256:aa6f302a3a0b5f240ee201297fff0bbfe2fa0d415a94aeb257d8b461032389bd", + "sha256:ace9048de91293e467b44bce0f0381345078389814ff6e18dbac8fdbf896360e", + "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879", + "sha256:b01a840ecc25dce235ae4c1b6a0daefb2a203dba0e6e980637ee9c2f6ee0df57", + "sha256:b076e625396e787448d27a411aefff867db2bffac8ed04e8f7056b07024eed5a", + "sha256:b172f8e030e8ef247b3104902cc671e20df80163b60a203653150d2fc204d1ad", + "sha256:b1f097878d74fe51e1ddd1be62d8e3682748875b461232cf4b52ddc6e6db0bba", + "sha256:b95574d06aa9d2bd6e5cc35a5bbe35696342c96760b69dc4287dbd5abd4ad51d", + "sha256:bda1c5f347550c359f841d6614fb8ca42ae5cb0b74d39f8a1e204815ebe25750", + "sha256:cec6b9ce3bd2b7853d4a4563801292bfee40b030c05a3d29555fd2a8ee9bd68c", + "sha256:d1a987778b9c71da2fc8948e6f2656da6ef68f59298b7e9786849634c35d2c3c", + "sha256:d74c08e9aaef995f8c4ef6d202dbd219c318450fe2a76da624f2ebb9c8ec5d9f", + "sha256:e18aafdfb3e9ec0d261c942d35bd7c28d031c5855dadb491d2723ba54f4c3015", + "sha256:e216c5c45f89ef8971373fd1c5d8d1164b81f7f5f06bbf23c37e7908d19e8558", + "sha256:e695df2c58ce526eeab11a2e915448d3eb76f75dffe338ea613c1201b33bab2f", + "sha256:e7575ab65ca8399c8c4f9a7d61bbd2d204c8b8e447aab9d355682205c9dd948d", + "sha256:e995b3b76ccedc27fe4f477b349b7d64597e53a43fc2961db9d3fbace085d69d", + "sha256:ea31689f05043d520113e0552f039603c4dd71fa4c287b64cb3606140c66f425", + "sha256:eb5507795caabd9b2ae3f1adc95f67b1104971c22c624bb354232d65c4fc90b3", + "sha256:eb8668cfbc279a536c633137deeb9435d2962caec279c3f8cf8b91fff6ff8953", + "sha256:ecea0c38c9079570163d663c0433a9af4094a60aafdca491c6a3d248c7432827", + "sha256:f25d8b92a4e31ff1bd873654ec367ae811b3a943583e05432ea29264782dc32c", + "sha256:f60a297c3987c6c02ffb29effc70eadcbb412fe76947d394a1091a3615948e2f", + "sha256:f973643ef532d4f9be71dd88cf7588936685fdb576d93a79fe9f65bc337d9d73" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.10" + "version": "==7.6.12" }, "docker": { "hashes": [ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-analyse-service/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..7c52a50da5b0254652134c5e798d6dd64f134548 GIT binary patch literal 30967 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 literal 0 HcmV?d00001 diff --git a/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..123a1b2e8f1e901405809d63a1d9aaece647a12b GIT binary patch literal 40691 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 aiSNE~R1d*i_vZS4<{0rWe;F3AG5`SURCR;^ literal 0 HcmV?d00001 diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index 1c703b8375..2dd2aa7cea 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -2328,7 +2328,7 @@ "adminTheme" : "", "emailTheme" : "", "eventsEnabled" : false, - "eventsListeners" : [ "create-event-listener", "jboss-logging" ], + "eventsListeners" : [ "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], "adminEventsEnabled" : false, "adminEventsDetailsEnabled" : false, diff --git a/dbrepo-auth-service/listeners/.gitignore b/dbrepo-auth-service/listeners/.gitignore deleted file mode 100644 index 5d6e1ae3b1..0000000000 --- a/dbrepo-auth-service/listeners/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -### IntelliJ IDEA ### -out/ -!**/src/main/**/out/ -!**/src/test/**/out/ -target/ - -### Eclipse ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache -bin/ -!**/src/main/**/bin/ -!**/src/test/**/bin/ - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ - -### VS Code ### -.vscode/ - -### Mac OS ### -.DS_Store \ No newline at end of file diff --git a/dbrepo-auth-service/listeners/pom.xml b/dbrepo-auth-service/listeners/pom.xml deleted file mode 100644 index e70201b96a..0000000000 --- a/dbrepo-auth-service/listeners/pom.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-parent</artifactId> - <version>24.0.5</version> - </parent> - - <groupId>at.tuwien</groupId> - <artifactId>create-event-listener</artifactId> - <name>dbrepo-auth-service</name> - <version>24.0.5</version> - - <description>Create event listener</description> - - <url>https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.6/</url> - <developers> - <developer> - <name>Martin Weise</name> - <email>martin.weise@tuwien.ac.at</email> - <organization>TU Wien</organization> - </developer> - </developers> - - <properties> - <java.version>17</java.version> - <maven.version>3.9.8</maven.version> - <maven.compiler.source>${java.version}</maven.compiler.source> - <maven.compiler.target>${java.version}</maven.compiler.target> - <maven.compiler.release>${java.version}</maven.compiler.release> - <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version> - <testcontainers.version>1.19.1</testcontainers.version> - <keycloak-testcontainer.version>3.2.0</keycloak-testcontainer.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-core</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-server-spi</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-server-spi-private</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-services</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.keycloak</groupId> - <artifactId>keycloak-saml-core-public</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.jboss.logging</groupId> - <artifactId>jboss-logging</artifactId> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.jboss.spec.javax.ws.rs</groupId> - <artifactId>jboss-jaxrs-api_2.1_spec</artifactId> - </dependency> - <!-- Tests --> - <dependency> - <groupId>org.testcontainers</groupId> - <artifactId>junit-jupiter</artifactId> - <version>${testcontainers.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.github.dasniko</groupId> - <artifactId>testcontainers-keycloak</artifactId> - <version>${keycloak-testcontainer.version}</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <finalName>create-event-listener</finalName> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>${maven-compiler-plugin.version}</version> - <configuration> - <source>${java.version}</source> - <target>${java.version}</target> - </configuration> - </plugin> - <plugin> - <groupId>org.wildfly.plugins</groupId> - <artifactId>wildfly-maven-plugin</artifactId> - <configuration> - <skip>false</skip> - </configuration> - </plugin> - </plugins> - </build> -</project> \ No newline at end of file diff --git a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java deleted file mode 100644 index 769ec49097..0000000000 --- a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/Client.java +++ /dev/null @@ -1,65 +0,0 @@ -package at.tuwien; - -import org.jboss.logging.Logger; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URI; -import java.net.URL; -import java.nio.charset.Charset; -import java.util.Base64; - -public class Client { - private static final Logger log = Logger.getLogger(Client.class); - - public static void postService(String data) throws IOException { - try { - final String urlString = System.getenv("METADATA_SERVICE_ENDPOINT"); - log.debugf("METADATA_SERVICE_ENDPOINT: %s", urlString); - if (urlString == null || urlString.isEmpty()) { - throw new IllegalArgumentException("Environment variable METADATA_SERVICE_ENDPOINT is not set or is empty."); - } - final String systemUsername = System.getenv("SYSTEM_USERNAME"); - if (systemUsername == null || systemUsername.isEmpty()) { - throw new IllegalArgumentException("Environment variable SYSTEM_USERNAME is not set or is empty."); - } - log.debugf("SYSTEM_USERNAME: %s", systemUsername); - final String systemPassword = System.getenv("SYSTEM_PASSWORD"); - if (systemPassword == null || systemPassword.isEmpty()) { - throw new IllegalArgumentException("Environment variable SYSTEM_PASSWORD is not set or is empty."); - } - - URL url = URI.create(urlString).toURL(); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setDoOutput(true); - conn.setRequestMethod("POST"); - final String token = systemUsername + ":" + systemPassword; - conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(token.getBytes( - Charset.defaultCharset()))); - conn.setRequestProperty("Content-Type", "application/json; utf-8"); - - OutputStream os = conn.getOutputStream(); - os.write(data.getBytes()); - os.flush(); - - final int responseCode = conn.getResponseCode(); - if (responseCode != HttpURLConnection.HTTP_CREATED && responseCode != HttpURLConnection.HTTP_OK) { - throw new RuntimeException("Failed : HTTP error code : " + responseCode); - } - - final BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); - String output; - log.debugf("Output from Server .... \n"); - while ((output = br.readLine()) != null) { - System.out.println(output); - log.debugf("Input from Server: %s", output); - } - conn.disconnect(); - } catch (IOException e) { - throw new IOException("Failed to post service: " + e.getMessage(), e); - } - } -} diff --git a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java deleted file mode 100644 index 2b5d9221a7..0000000000 --- a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProvider.java +++ /dev/null @@ -1,139 +0,0 @@ -package at.tuwien; - -import org.jboss.logging.Logger; -import org.keycloak.events.Event; -import org.keycloak.events.EventListenerProvider; -import org.keycloak.events.EventType; -import org.keycloak.events.admin.AdminEvent; -import org.keycloak.events.admin.OperationType; -import org.keycloak.events.admin.ResourceType; -import org.keycloak.models.KeycloakSession; -import org.keycloak.models.RealmModel; -import org.keycloak.models.RealmProvider; -import org.keycloak.models.UserModel; - -import java.util.StringJoiner; - -public class CreateEventListenerProvider implements EventListenerProvider { - - private static final Logger log = Logger.getLogger(CreateEventListenerProvider.class); - - private final KeycloakSession session; - private final RealmProvider model; - - public CreateEventListenerProvider(KeycloakSession session) { - this.session = session; - this.model = session.realms(); - } - - @Override - public void onEvent(Event event) { - - log.debugf("New %s Event", event.getType()); - log.debugf("onEvent-> %s", toString(event)); - - if (EventType.REGISTER.equals(event.getType())) { - - event.getDetails().forEach((key, value) -> log.debugf("%s : %s", key, value)); - - RealmModel realm = this.model.getRealm(event.getRealmId()); - UserModel user = this.session.users().getUserById(realm, event.getUserId()); - sendUserData(user); - } - - } - - @Override - public void onEvent(AdminEvent adminEvent, boolean b) { - log.debug("onEvent(AdminEvent)"); - log.debugf("Resource path: %s", adminEvent.getResourcePath()); - log.debugf("Resource type: %s", adminEvent.getResourceType()); - log.debugf("Operation type: %s", adminEvent.getOperationType()); - log.debugf("AdminEvent.toString(): %s", toString(adminEvent)); - if (ResourceType.USER.equals(adminEvent.getResourceType()) - && OperationType.CREATE.equals(adminEvent.getOperationType())) { - RealmModel realm = this.model.getRealm(adminEvent.getRealmId()); - UserModel user = this.session.users().getUserById(realm, adminEvent.getResourcePath().substring(6)); - - sendUserData(user); - } - } - - private void sendUserData(UserModel user) { - final String userData = "{" + - quoteAttr("id", user.getId()) + ", " + - quoteAttr("username", user.getUsername()) + ", " + - quoteAttr("email", user.getEmail()) + ", " + - quoteAttr("ldap_id", user.getFirstAttribute("LDAP_ID")) + ", " + - quoteAttr("given_name", user.getFirstName()) + ", " + - quoteAttr("family_name", user.getLastName()) + - "}"; - try { - log.debugf("create new user in API: %s", userData); - Client.postService(userData); - } catch (Exception e) { - log.errorf("Failed to call API: %s", e); - } - } - - private static String quoteAttr(String key, String value) { - if (value == null || value.isBlank() || value.isEmpty() || value.contentEquals(" ")) { - return "\"" + key + "\": null"; - } - return "\"" + key + "\": \"" + value + "\""; - } - - @Override - public void close() { - } - - private String toString(Event event) { - final StringJoiner joiner = new StringJoiner(", "); - joiner.add("type=" + event.getType()) - .add("realmId=" + event.getRealmId()) - .add("clientId=" + event.getClientId()) - .add("userId=" + event.getUserId()) - .add("ipAddress=" + event.getIpAddress()); - if (event.getError() != null) { - joiner.add("error=" + event.getError()); - } - if (event.getDetails() != null) { - event.getDetails().forEach((key, value) -> { - if (value == null || !value.contains(" ")) { - joiner.add(key + "=" + value); - } else { - joiner.add(key + "='" + value + "'"); - } - }); - } - return joiner.toString(); - } - - private String toString(AdminEvent event) { - RealmModel realm = this.model.getRealm(event.getRealmId()); - UserModel newRegisteredUser = this.session.users().getUserById(realm, event.getAuthDetails().getUserId()); - - StringJoiner joiner = new StringJoiner(", "); - - joiner.add("operationType=" + event.getOperationType()) - .add("realmId=" + event.getAuthDetails().getRealmId()) - .add("clientId=" + event.getAuthDetails().getClientId()) - .add("userId=" + event.getAuthDetails().getUserId()); - - if (newRegisteredUser != null) { - joiner.add("email=" + newRegisteredUser.getEmail()) - .add("username=" + newRegisteredUser.getUsername()) - .add("firstName=" + newRegisteredUser.getFirstName()) - .add("lastName=" + newRegisteredUser.getLastName()); - } - - joiner.add("ipAddress=" + event.getAuthDetails().getIpAddress()) - .add("resourcePath=" + event.getResourcePath()); - - if (event.getError() != null) { - joiner.add("error=" + event.getError()); - } - - return joiner.toString(); - } -} diff --git a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java b/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java deleted file mode 100644 index 61477ffa33..0000000000 --- a/dbrepo-auth-service/listeners/src/main/java/at/tuwien/CreateEventListenerProviderFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -package at.tuwien; - -import org.keycloak.Config; -import org.keycloak.events.EventListenerProvider; -import org.keycloak.events.EventListenerProviderFactory; -import org.keycloak.models.KeycloakSession; -import org.keycloak.models.KeycloakSessionFactory; - -public class CreateEventListenerProviderFactory implements EventListenerProviderFactory { - - @Override - public EventListenerProvider create(KeycloakSession keycloakSession) { - return new CreateEventListenerProvider(keycloakSession); - } - - @Override - public void init(Config.Scope scope) { - - } - - @Override - public void postInit(KeycloakSessionFactory keycloakSessionFactory) { - - } - - @Override - public void close() { - - } - - @Override - public String getId() { - return "create-event-listener"; - } - -} diff --git a/dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml b/dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml deleted file mode 100644 index c0330ba082..0000000000 --- a/dbrepo-auth-service/listeners/src/main/resources/META-INF/jboss-deployment-structure.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<jboss-deployment-structure> - <deployment> - <dependencies> - <module name="org.keycloak.keycloak-services" /> - </dependencies> - </deployment> -</jboss-deployment-structure> \ No newline at end of file diff --git a/dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory b/dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory deleted file mode 100644 index df3c5521f0..0000000000 --- a/dbrepo-auth-service/listeners/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory +++ /dev/null @@ -1 +0,0 @@ -at.tuwien.CreateEventListenerProviderFactory \ No newline at end of file diff --git a/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java b/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java deleted file mode 100644 index c3d6ee94cc..0000000000 --- a/dbrepo-auth-service/listeners/src/test/java/at/tuwien/EventListenerIntegrationTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package at.tuwien; - -import dasniko.testcontainers.keycloak.KeycloakContainer; -import org.testcontainers.images.PullPolicy; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; - -@Testcontainers -public class EventListenerIntegrationTest { - - @Container - private static KeycloakContainer keycloakContainer = new KeycloakContainer("quay.io/keycloak/keycloak:24.0") - .withImagePullPolicy(PullPolicy.alwaysPull()) - .withAdminUsername("admin") - .withAdminPassword("admin") - .withRealmImportFile("dbrepo-realm.json") - .withEnv("KC_HOSTNAME_STRICT_HTTPS", "false"); -} diff --git a/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json b/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json deleted file mode 100644 index 56f2003e96..0000000000 --- a/dbrepo-auth-service/listeners/src/test/resources/dbrepo-realm.json +++ /dev/null @@ -1,2798 +0,0 @@ -{ - "id" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "realm" : "dbrepo", - "notBefore" : 0, - "defaultSignatureAlgorithm" : "RS256", - "revokeRefreshToken" : false, - "refreshTokenMaxReuse" : 1, - "accessTokenLifespan" : 900, - "accessTokenLifespanForImplicitFlow" : 900, - "ssoSessionIdleTimeout" : 864000, - "ssoSessionMaxLifespan" : 2592000, - "ssoSessionIdleTimeoutRememberMe" : 0, - "ssoSessionMaxLifespanRememberMe" : 0, - "offlineSessionIdleTimeout" : 2592000, - "offlineSessionMaxLifespanEnabled" : false, - "offlineSessionMaxLifespan" : 5184000, - "clientSessionIdleTimeout" : 0, - "clientSessionMaxLifespan" : 0, - "clientOfflineSessionIdleTimeout" : 0, - "clientOfflineSessionMaxLifespan" : 0, - "accessCodeLifespan" : 60, - "accessCodeLifespanUserAction" : 300, - "accessCodeLifespanLogin" : 1800, - "actionTokenGeneratedByAdminLifespan" : 43200, - "actionTokenGeneratedByUserLifespan" : 1800, - "oauth2DeviceCodeLifespan" : 600, - "oauth2DevicePollingInterval" : 5, - "enabled" : true, - "sslRequired" : "none", - "registrationAllowed" : false, - "registrationEmailAsUsername" : false, - "rememberMe" : false, - "verifyEmail" : true, - "loginWithEmailAllowed" : false, - "duplicateEmailsAllowed" : false, - "resetPasswordAllowed" : false, - "editUsernameAllowed" : false, - "bruteForceProtected" : false, - "permanentLockout" : false, - "maxTemporaryLockouts" : 0, - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "48f38342-1e3f-427a-995d-c436eaee65cb", - "name" : "default-user-handling", - "description" : "${default-user-handling}", - "composite" : true, - "composites" : { - "realm" : [ "modify-user-theme", "modify-user-information" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "9bb4a8dc-28e0-4645-b62f-cc94425f0cb0", - "name" : "default-maintenance-handling", - "description" : "${default-maintenance-handling}", - "composite" : true, - "composites" : { - "realm" : [ "create-maintenance-message", "find-maintenance-message", "update-maintenance-message", "delete-maintenance-message", "list-maintenance-messages" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "7ee1c424-11b0-46a9-b0ed-725e9b7fc40c", - "name" : "default-system-roles", - "description" : "${default-system-roles}", - "composite" : true, - "composites" : { - "realm" : [ "delete-database-view", "update-semantic-unit", "export-query-data", "default-data-steward-roles", "execute-query", "default-user-handling", "delete-table-data", "find-query", "list-database-views", "persist-query", "update-search-index", "delete-database-access", "view-table-history", "create-ontology", "update-ontology", "modify-user-theme", "default-system-roles", "create-semantic-concept", "default-container-handling", "create-container", "create-table", "default-broker-handling", "default-maintenance-handling", "execute-semantic-query", "uma_authorization", "table-semantic-analyse", "list-containers", "check-database-access", "escalated-query-handling", "delete-identifier", "modify-database-owner", "list-tables", "export-table-data", "create-database-access", "delete-container", "re-execute-query", "create-semantic-unit", "escalated-identifier-handling", "system", "update-table-statistic", "escalated-semantics-handling", "default-database-handling", "delete-ontology", "find-database", "find-database-view", "update-semantic-concept", "find-user", "import-database-data", "publish-identifier", "default-roles-dbrepo", "find-foreign-user", "create-database", "create-maintenance-message", "find-maintenance-message", "escalated-container-handling", "default-researcher-roles", "default-identifier-handling", "escalated-user-handling", "modify-user-information", "create-database-view", "update-maintenance-message", "delete-foreign-table", "offline_access", "modify-foreign-table-column-semantics", "delete-maintenance-message", "find-container", "insert-table-data", "modify-identifier-metadata", "modify-database-image", "escalated-broker-handling", "modify-table-column-semantics", "escalated-database-handling", "default-semantics-handling", "update-database-access", "default-query-handling", "find-table", "list-queries", "default-developer-roles", "create-identifier", "escalated-table-handling", "find-identifier", "view-table-data", "list-licenses", "default-table-handling", "list-identifiers", "create-foreign-identifier", "list-databases", "list-ontologies", "modify-database-visibility", "list-maintenance-messages", "delete-table" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "143ba359-5fa2-451e-8296-43ecf20bb251", - "name" : "update-semantic-concept", - "description" : "${update-semantic-concept}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "5136d7a3-e3f0-4585-bacd-15cb8a56095c", - "name" : "escalated-container-handling", - "description" : "${escalated-container-handling}", - "composite" : true, - "composites" : { - "realm" : [ "create-container", "delete-container" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "b0bc8649-7d84-4dd3-84f0-7f174425babe", - "name" : "list-tables", - "description" : "${list-tables}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "bfd85d9c-2772-4660-a8f0-cdc0cd8252b3", - "name" : "default-database-handling", - "description" : "${default-database-handling}", - "composite" : true, - "composites" : { - "realm" : [ "modify-database-image", "modify-database-owner", "update-database-access", "create-database", "list-databases", "create-database-access", "find-database", "modify-database-visibility", "import-database-data", "delete-database-access", "check-database-access" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "74648f9a-777e-4ef9-b97b-4c5d749d862f", - "name" : "update-search-index", - "description" : "${update-search-index}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "22492b64-c633-48a0-9678-b28669f2885b", - "name" : "execute-semantic-query", - "description" : "${execute-semantic-query}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "4ed919fa-edc5-44e5-9411-607786e4a86d", - "name" : "view-table-history", - "description" : "${view-table-history}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d89a2881-b642-4abb-b990-196e71372f6b", - "name" : "default-table-handling", - "description" : "${default-table-handling}", - "composite" : true, - "composites" : { - "realm" : [ "modify-table-column-semantics", "list-tables", "update-table-statistic", "find-table", "create-table", "delete-table" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "b0d66d3d-59b4-4aae-aa66-e3d5a49f28e3", - "name" : "view-database-view-data", - "description" : "${view-database-view-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "f5ea431a-9b2c-4195-bcb4-9511f38e4b44", - "name" : "create-database-view", - "description" : "${create-database-view}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a5ffc20e-8b11-498c-9f3b-b5740aec24c7", - "name" : "default-semantics-handling", - "description" : "${default-semantics-handling}", - "composite" : true, - "composites" : { - "realm" : [ "create-semantic-unit", "create-semantic-concept", "execute-semantic-query", "table-semantic-analyse" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "fe4a01f3-6590-4df6-9ade-5a9c1fae4736", - "name" : "create-semantic-unit", - "description" : "${create-semantic-unit}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "0e12eedf-545d-4d32-ac4d-2821dcb118b8", - "name" : "update-table-statistic", - "description" : "${update-table-statistic}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e63e61a2-d852-4ad3-bfb5-92d9ceafef6a", - "name" : "escalated-user-handling", - "description" : "${escalated-user-handling}", - "composite" : true, - "composites" : { - "realm" : [ "find-user" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "be4e1aba-e276-4241-b6ea-01dce6c52f8b", - "name" : "find-container", - "description" : "${find-container}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "3a801b48-f3c2-4bc6-aa25-c7a91d5b32a7", - "name" : "default-researcher-roles", - "description" : "${default-researcher-roles}", - "composite" : true, - "composites" : { - "realm" : [ "default-table-handling", "default-semantics-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-broker-handling", "default-identifier-handling" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "3d8104fb-8307-40f0-b4b2-c3e518957110", - "name" : "view-table-data", - "description" : "${view-table-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "fe71b907-7020-44ab-9964-da2b87264582", - "name" : "create-database", - "description" : "${create-database}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e51b63c2-48dd-4bd6-95fb-d257d21b26ba", - "name" : "import-database-data", - "description" : "${import-database-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "1f0a9b13-c2b8-474c-bc08-59dbd71835a6", - "name" : "modify-database-image", - "description" : "${modify-database-image}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a7ad038c-5c06-42fc-951c-15ac09d4df66", - "name" : "modify-database-owner", - "description" : "${modify-database-owner}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "c12c1f4e-186f-4153-a795-26e79fb623d6", - "name" : "create-ontology", - "description" : "${create-ontology}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "b60a5694-4099-4f7d-a7e9-4c433e0eb9c9", - "name" : "update-semantic-unit", - "description" : "${update-semantic-unit}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e9854bbb-4580-4757-b1ae-305934173249", - "name" : "create-database-access", - "description" : "${create-database-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "50c604c1-7c6e-43f3-9c43-2398f5eff66e", - "name" : "list-databases", - "description" : "${list-databases}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "535f1484-4514-4d24-8d97-e3f6c11a426b", - "name" : "create-container", - "description" : "${create-container}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "f4116230-8642-4bb7-bbc8-db9c5c07b558", - "name" : "create-maintenance-message", - "description" : "${create-maintenance-message}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "973f0999-cc70-4b28-9f43-979c470bea8e", - "name" : "default-data-steward-roles", - "description" : "${default-data-steward-roles}", - "composite" : true, - "composites" : { - "realm" : [ "escalated-identifier-handling", "default-semantics-handling", "escalated-semantics-handling", "default-user-handling" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e1383fb7-d54c-4732-9146-93030eb2ca50", - "name" : "escalated-query-handling", - "description" : "${escalated-query-handling}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "993b5c69-9eb2-42af-ac28-b4a46c6b61f2", - "name" : "find-user", - "description" : "${find-user}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e4cfdc4d-2373-477b-a8df-161db99aba00", - "name" : "create-foreign-identifier", - "description" : "${create-foreign-identifier}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "6a5872a5-2b51-415d-ae2d-25a6db4a35df", - "name" : "escalated-semantics-handling", - "description" : "${escalated-semantics-handling}", - "composite" : true, - "composites" : { - "realm" : [ "update-semantic-unit", "create-ontology", "update-ontology", "list-ontologies", "delete-ontology", "modify-foreign-table-column-semantics", "update-semantic-concept" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "09147c48-273b-450b-8b11-7ef9b9245244", - "name" : "export-table-data", - "description" : "${export-table-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d14af590-60a8-4d75-b864-40ee0165bd7f", - "name" : "delete-database-access", - "description" : "${delete-database-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "be051d45-cd74-4b13-8a45-f2d3351bd995", - "name" : "table-semantic-analyse", - "description" : "${table-semantic-analyse}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "272a79a7-e282-4261-8f7d-5d5d1364243a", - "name" : "update-maintenance-message", - "description" : "${update-maintenance-message}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "64c16bfb-2015-48ad-a23f-637ff24419cb", - "name" : "default-query-handling", - "description" : "${default-query-handling}", - "composite" : true, - "composites" : { - "realm" : [ "delete-database-view", "export-query-data", "execute-query", "delete-table-data", "export-table-data", "list-queries", "find-query", "list-database-views", "persist-query", "view-table-data", "re-execute-query", "view-table-history", "create-database-view", "find-database-view", "insert-table-data" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "c047d521-cec3-4444-86c4-aef098489b7b", - "name" : "delete-maintenance-message", - "description" : "${delete-maintenance-message}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "88f82262-be80-4d18-9fb4-5529da031f33", - "name" : "system", - "description" : "${system}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e14ab76b-1c24-484d-ae2d-478b8457edea", - "name" : "list-licenses", - "description" : "${list-licenses}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d4f29937-3ca0-41e9-9786-2b7b921b6cdd", - "name" : "modify-foreign-table-column-semantics", - "description" : "${modify-foreign-table-column-semantics}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "8eda9f5c-938c-4915-bed5-6a81a1de15a8", - "name" : "list-database-views", - "description" : "${list-database-views}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "b372f8f7-d203-4293-b991-ad93fb505917", - "name" : "escalated-database-handling", - "description" : "${escalated-database-handling}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "abd2d9ee-ebc4-4d0a-839e-6b588a6d442a", - "name" : "default-roles-dbrepo", - "description" : "${role_default-roles}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "3293799a-82b9-4f47-8f25-1aad2e0222fd", - "name" : "find-identifier", - "description" : "${find-identifier}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "aaa3f804-38a0-4474-b8e9-f1020c4b3f62", - "name" : "list-queries", - "description" : "${list-queries}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "76e38f7b-99bf-4d12-8d74-1c7d8812f443", - "name" : "update-ontology", - "description" : "${update-ontology}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "11f7973e-d1eb-42cb-a35d-c59dfc122775", - "name" : "modify-user-theme", - "description" : "${modify-user-theme}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "f392bfcb-0be5-4fad-9ce4-8ac6396f176d", - "name" : "export-query-data", - "description" : "${export-query-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "da493b7e-fb9b-43ca-82a5-e274ad2e6b39", - "name" : "find-query", - "description" : "${find-query}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a4d4a788-ebcf-4d32-baed-4a85616ca037", - "name" : "escalated-identifier-handling", - "description" : "${escalated-identifier-handling}", - "composite" : true, - "composites" : { - "realm" : [ "create-foreign-identifier", "modify-identifier-metadata" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "ea38d69d-17b8-4c65-95e8-1c3501b83618", - "name" : "default-container-handling", - "description" : "${default-container-handling}", - "composite" : true, - "composites" : { - "realm" : [ "find-container", "list-containers" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "8b8813e0-af07-4d04-a8c1-e3f37192bace", - "name" : "publish-identifier", - "description" : "${publish-identifier}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "47f5eee7-9821-4bf8-b434-0da1f81c3e5a", - "name" : "default-broker-handling", - "description" : "${default-broker-handling}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "71874bde-64a5-4a69-8685-d8998303a80c", - "name" : "delete-table-data", - "description" : "${delete-table-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "7c0306fc-3b03-4c64-87d1-9a34f2073977", - "name" : "modify-table-column-semantics", - "description" : "${modify-table-column-semantics}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "cd0ee04c-4a5e-4035-a11b-f6a1165f7829", - "name" : "delete-container", - "description" : "${delete-container}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "67ee39c0-d601-4a67-a0fe-c4f0021d557e", - "name" : "list-containers", - "description" : "${list-containers}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "795c7bb8-3502-414a-a97b-2ba1cfd6a79c", - "name" : "persist-query", - "description" : "${persist-query}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d05e7698-ddf5-4f20-9027-771afb2cc3c7", - "name" : "list-identifiers", - "description" : "${list-identifiers}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e4bfaf36-9a5d-43e0-9fa3-0f4ea7bad8d0", - "name" : "default-developer-roles", - "description" : "${default-developer-roles}", - "composite" : true, - "composites" : { - "realm" : [ "escalated-query-handling", "escalated-broker-handling", "default-table-handling", "escalated-database-handling", "default-container-handling", "default-query-handling", "default-user-handling", "default-database-handling", "default-maintenance-handling", "escalated-container-handling", "escalated-table-handling", "default-identifier-handling" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "e2cb054e-ea41-4ab0-881b-e6f576f7424e", - "name" : "create-semantic-concept", - "description" : "${create-semantic-concept}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "feb612cc-96a6-4ed2-aaa5-01f39b25beb5", - "name" : "insert-table-data", - "description" : "${insert-table-data}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a0942e33-441b-4343-9f02-4353d03f7bbb", - "name" : "find-database", - "description" : "${find-database}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "6a0bb740-4448-49be-aee8-6dd183325be5", - "name" : "delete-foreign-table", - "description" : "${delete-foreign-table}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "7f3652c7-3073-4566-ab63-25385495ebc3", - "name" : "modify-database-visibility", - "description" : "${modify-database-visibility}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "4a5df51d-f14d-41a2-ad70-6521df5a5b4f", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "fd41c4c3-d2f8-4f49-84c7-dba84e9a5575", - "name" : "execute-query", - "description" : "${execute-query}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "2963c2bb-b129-4224-b98f-c8eeab8e72d1", - "name" : "create-table", - "description" : "${create-table}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "0c487c93-448f-4a82-8b9f-ebd8a0904bf8", - "name" : "find-foreign-user", - "description" : "${find-foreign-user}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "cf9735a9-fb70-4cc5-b5f4-75afc4e5654b", - "name" : "modify-identifier-metadata", - "description" : "${modify-identifier-metadata}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "64c2b8f2-1527-4928-81ea-b2651512d028", - "name" : "delete-ontology", - "description" : "${delete-ontology}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d6e38368-b40f-423b-82e4-e8aa595237c9", - "name" : "find-maintenance-message", - "description" : "${find-maintenance-message}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "fd1cc463-3e67-49d9-81b8-2cd90c1daa9c", - "name" : "check-database-access", - "description" : "${check-database-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "74013867-e426-46cc-ab98-2f4a9225ad1e", - "name" : "find-table", - "description" : "${find-table}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a2cc60df-d280-46c5-a539-92e2aa249b4a", - "name" : "modify-user-information", - "description" : "${modify-user-information}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "c367241f-b5b5-491f-84d5-07fe1bef3877", - "name" : "default-identifier-handling", - "description" : "${default-identifier-handling}", - "composite" : true, - "composites" : { - "realm" : [ "delete-identifier", "list-identifiers", "create-identifier", "find-identifier", "publish-identifier" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "ba1ad8f2-39aa-487d-987f-645e8a459559", - "name" : "delete-table", - "description" : "${delete-table}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "09f7bdb0-296f-46c8-a3a3-8f9254fb17e4", - "name" : "list-maintenance-messages", - "description" : "${list-maintenance-messages}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "fe3bc45c-61c2-4ece-bcaf-d410dc7de501", - "name" : "update-database-access", - "description" : "${update-database-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "f43e86ed-76de-4ca8-9b5e-c292c9359bfe", - "name" : "escalated-broker-handling", - "description" : "${escalated-broker-handling}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "916b1e65-f60c-42cd-96e4-5c98ffc1ba3c", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "d1afa3ed-bf4f-469a-a061-ad7325fb8d9e", - "name" : "delete-database-view", - "description" : "${delete-database-view}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "6f044bad-6651-4408-bffa-20c2d8f92eee", - "name" : "create-identifier", - "description" : "${create-identifier}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "be91195a-e30a-4d15-a8da-0aca0a68782f", - "name" : "escalated-table-handling", - "description" : "${escalated-table-handling}", - "composite" : true, - "composites" : { - "realm" : [ "delete-foreign-table" ] - }, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "98bee7d6-d78c-4e7f-b6a3-3705968b248c", - "name" : "list-ontologies", - "description" : "${list-ontologies}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "15720c6b-027d-4d53-a0ff-0124bfab7c4c", - "name" : "re-execute-query", - "description" : "${re-execute-query}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "a9b5181a-8135-41d3-9862-ef80af42211d", - "name" : "delete-identifier", - "description" : "${delete-identifier}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - }, { - "id" : "469c2e63-cda6-48d4-ab8f-eb59a2c69798", - "name" : "find-database-view", - "description" : "${find-database-view}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0", - "attributes" : { } - } ], - "client" : { - "realm-management" : [ { - "id" : "4628f654-f8f3-483b-8f92-2a7fc5930b14", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "95c2cc47-12f5-4d73-8b74-67e270c45ade", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "824791f3-c345-42f8-b103-b7e6d7e40114", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "1f840202-b7e2-4195-bac9-64e64dad2037", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "3c32c096-bb13-44c9-a080-d756a48a9ea3", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "e4b85a68-7f31-4fcf-89a2-f10d7df358e9", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "7d317752-ae56-46f2-a2ce-67c64d1b35f6", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-users", "query-groups" ] - } - }, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "28824208-976e-4622-b4d7-3d18efbb46fa", - "name" : "realm-admin", - "description" : "${role_realm-admin}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-realms", "view-identity-providers", "manage-identity-providers", "manage-authorization", "query-clients", "view-authorization", "view-users", "manage-users", "view-realm", "query-users", "view-clients", "query-groups", "create-client", "manage-clients", "manage-events", "impersonation", "view-events", "manage-realm" ] - } - }, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "57e846a2-930d-4621-819d-c35086507146", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "7fad9cde-bf96-475a-9174-14a87da51f95", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "bbcac294-d78a-4ea1-a4bf-0384266d2fe1", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "480e1437-ab9e-47de-b47a-edc6b6e285de", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "b9a9a8f5-f91e-4e73-9e88-1cdf42bd49f9", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "4d1397fb-247c-436f-b26f-124cd89afb08", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "e31f522b-b283-4ae1-b875-52afcd98b1d2", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "51822d02-fa28-4a49-89da-bc534719d8a8", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "b2743ce5-0ce8-4157-ae00-f693560f0b39", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "7ea3d7e0-9bf4-438a-b773-243daf622aaa", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - }, { - "id" : "fb73f6f5-0ed5-41d0-852c-0eb3b195b15a", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "attributes" : { } - } ], - "security-admin-console" : [ ], - "dbrepo-client" : [ ], - "admin-cli" : [ ], - "rabbitmq-client" : [ ], - "account-console" : [ ], - "broker" : [ { - "id" : "de0cfd5e-c2fe-4082-ac39-e3b092139a0f", - "name" : "read-token", - "description" : "${role_read-token}", - "composite" : false, - "clientRole" : true, - "containerId" : "88694c91-753d-4c44-9740-ec9ac06bba45", - "attributes" : { } - } ], - "account" : [ { - "id" : "acd78c04-eefc-4344-a5b4-3fc83d848936", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "939be844-8c49-45b3-9ca1-4b10a454b346", - "name" : "view-profile", - "description" : "${role_view-profile}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "e52fdf00-3e73-4c17-bc1c-643493710a6b", - "name" : "view-applications", - "description" : "${role_view-applications}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "b02a822e-a708-420a-bddc-1a315033fd7c", - "name" : "view-consent", - "description" : "${role_view-consent}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "c590e5f5-2cbf-4151-b1dc-96c454f1f654", - "name" : "view-groups", - "description" : "${role_view-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "15974151-6c13-426b-8cc3-7683dd1311e1", - "name" : "manage-account-links", - "description" : "${role_manage-account-links}", - "composite" : false, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "c12d8d94-c2df-498e-bbe4-2f934a83ae92", - "name" : "manage-consent", - "description" : "${role_manage-consent}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "view-consent" ] - } - }, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - }, { - "id" : "55f85811-bded-4d6b-8f7b-45844b963875", - "name" : "manage-account", - "description" : "${role_manage-account}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "manage-account-links" ] - } - }, - "clientRole" : true, - "containerId" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "attributes" : { } - } ] - } - }, - "groups" : [ { - "id" : "f2ce17fe-7b15-47a4-bbf8-86f415298fa9", - "name" : "data-stewards", - "path" : "/data-stewards", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "default-data-steward-roles" ], - "clientRoles" : { } - }, { - "id" : "124d9888-0b6e-46aa-8225-077dcedaf16e", - "name" : "developers", - "path" : "/developers", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "default-developer-roles" ], - "clientRoles" : { } - }, { - "id" : "f467c38e-9041-4faa-ae0b-39cec65ff4db", - "name" : "researchers", - "path" : "/researchers", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "default-researcher-roles" ], - "clientRoles" : { } - }, { - "id" : "2b9f94b4-d434-4a98-8eab-25678cfee983", - "name" : "system", - "path" : "/system", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "default-system-roles" ], - "clientRoles" : { } - } ], - "defaultRole" : { - "id" : "abd2d9ee-ebc4-4d0a-839e-6b588a6d442a", - "name" : "default-roles-dbrepo", - "description" : "${role_default-roles}", - "composite" : false, - "clientRole" : false, - "containerId" : "82c39861-d877-4667-a0f3-4daa2ee230e0" - }, - "defaultGroups" : [ "/researchers" ], - "requiredCredentials" : [ "password" ], - "otpPolicyType" : "totp", - "otpPolicyAlgorithm" : "HmacSHA1", - "otpPolicyInitialCounter" : 0, - "otpPolicyDigits" : 6, - "otpPolicyLookAheadWindow" : 1, - "otpPolicyPeriod" : 30, - "otpPolicyCodeReusable" : false, - "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], - "localizationTexts" : { }, - "webAuthnPolicyRpEntityName" : "keycloak", - "webAuthnPolicySignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "scopeMappings" : [ { - "clientScope" : "rabbitmq.tag:administrator", - "roles" : [ "escalated-broker-handling" ] - }, { - "clientScope" : "rabbitmq.tag:management", - "roles" : [ "default-broker-handling" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "e767a4a6-79e9-4e08-82b7-1076e1a09142", - "clientId" : "account", - "name" : "${client_account}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/dbrepo/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/dbrepo/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "d3c4a04e-39ce-4549-a34a-11e25774cd96", - "clientId" : "account-console", - "name" : "${client_account-console}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/dbrepo/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/dbrepo/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "22d90d9c-9881-474c-8dfd-a62c808a9f1c", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "81ef0f59-a5ca-4be4-a1d1-0c32edf1cfd6", - "clientId" : "admin-cli", - "name" : "${client_admin-cli}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : false, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "88694c91-753d-4c44-9740-ec9ac06bba45", - "clientId" : "broker", - "name" : "${client_broker}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "6b7ef364-4132-4831-b4e2-b6e9e9dc63ee", - "clientId" : "dbrepo-client", - "name" : "${dbrepo-client}", - "description" : "", - "rootUrl" : "", - "adminUrl" : "", - "baseUrl" : "", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : true, - "clientAuthenticatorType" : "client-secret", - "secret" : "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG", - "redirectUris" : [ "*" ], - "webOrigins" : [ "*" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "oidc.ciba.grant.enabled" : "false", - "client.secret.creation.time" : "1680085365", - "backchannel.logout.session.required" : "true", - "post.logout.redirect.uris" : "*", - "oauth2.device.authorization.grant.enabled" : "false", - "backchannel.logout.revoke.offline.tokens" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "da0b27c1-ae2e-4baa-bf78-db233e15c78d", - "name" : "preferred_username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "preferred_username", - "userinfo.token.claim" : "true" - } - }, { - "id" : "7c94de93-f60f-487b-b4b7-1891c67f74cc", - "name" : "aud", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-hardcoded-claim-mapper", - "consentRequired" : false, - "config" : { - "claim.value" : "dbrepo", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "aud", - "access.tokenResponse.claim" : "false" - } - }, { - "id" : "0b4c644f-0cf0-4794-8395-d5d83009dabe", - "name" : "uid", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "CUSTOM_ID", - "id.token.claim" : "true", - "lightweight.claim" : "false", - "access.token.claim" : "true", - "claim.name" : "uid", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "roles", "attributes" ], - "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] - }, { - "id" : "25741f6b-4867-4138-8238-6345c6ba8702", - "clientId" : "rabbitmq-client", - "name" : "${rabbitmq-client}", - "description" : "", - "rootUrl" : "", - "adminUrl" : "", - "baseUrl" : "", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "secret" : "JEC2FexxrX4N65fLeDGukAl6R3Lc9y0u", - "redirectUris" : [ "*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "oidc.ciba.grant.enabled" : "false", - "client.secret.creation.time" : "1680000860", - "backchannel.logout.session.required" : "true", - "post.logout.redirect.uris" : "*", - "oauth2.device.authorization.grant.enabled" : "false", - "backchannel.logout.revoke.offline.tokens" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "01a937ed-f0e8-4137-80f3-3be3c447f7fb", - "name" : "username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "false", - "user.attribute" : "username", - "id.token.claim" : "false", - "access.token.claim" : "true", - "claim.name" : "client_id", - "jsonType.label" : "String" - } - }, { - "id" : "f1afc22d-f595-403b-ba2e-6ab19d98205e", - "name" : "Audience", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-hardcoded-claim-mapper", - "consentRequired" : false, - "config" : { - "claim.value" : "rabbitmq", - "userinfo.token.claim" : "false", - "id.token.claim" : "false", - "access.token.claim" : "true", - "claim.name" : "aud", - "access.tokenResponse.claim" : "false" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "rabbitmq.tag:management" ], - "optionalClientScopes" : [ "rabbitmq.read:*/*", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "roles", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] - }, { - "id" : "cfffd5d0-aa19-4057-8ca0-f2c51ca0e930", - "clientId" : "realm-management", - "name" : "${client_realm-management}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "f205c451-9524-4380-acc3-947f7ecb6b7c", - "clientId" : "security-admin-console", - "name" : "${client_security-admin-console}", - "rootUrl" : "${authAdminUrl}", - "baseUrl" : "/admin/dbrepo/console/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/admin/dbrepo/console/*" ], - "webOrigins" : [ "+" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "c4d54410-3f22-4259-9571-94da2c43b752", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - } ], - "clientScopes" : [ { - "id" : "69f4ecf0-4165-49ab-bf0d-38409b15b706", - "name" : "rabbitmq.tag:administrator", - "description" : "administrator", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "gui.order" : "", - "consent.screen.text" : "" - } - }, { - "id" : "7f6e9b44-e2eb-417d-b0fe-db820c9a6564", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "782819fe-ba5d-4ddb-9f95-cabb69d79c8d", - "name" : "email verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "emailVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email_verified", - "jsonType.label" : "boolean" - } - }, { - "id" : "ca613fc8-bbf2-4240-8b33-a1874f1559f3", - "name" : "email", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "email", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "b9da268f-6745-49dc-a764-3c54e385accc", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "84f0487a-1d7d-470c-9b8e-5835294ae235", - "name" : "username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "preferred_username", - "jsonType.label" : "String" - } - }, { - "id" : "bbdcdb36-3ec0-443d-b1af-9993d40f0567", - "name" : "gender", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "gender", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "gender", - "jsonType.label" : "String" - } - }, { - "id" : "9faa870b-5491-4ce9-b27d-c9ce07d6a95e", - "name" : "birthdate", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "birthdate", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "birthdate", - "jsonType.label" : "String" - } - }, { - "id" : "f0e3c012-9523-4076-83ae-e466e2d08220", - "name" : "full name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-full-name-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - }, { - "id" : "f757d8ec-e181-429c-9287-9ad0600b061f", - "name" : "profile", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "profile", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "profile", - "jsonType.label" : "String" - } - }, { - "id" : "18cfbf4b-0a8e-45c7-a832-c0f72c92f3f3", - "name" : "updated at", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "updatedAt", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "updated_at", - "jsonType.label" : "long" - } - }, { - "id" : "841ea785-26ab-429a-a420-09ce3948924d", - "name" : "family name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "lastName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "family_name", - "jsonType.label" : "String" - } - }, { - "id" : "bfba13ff-f952-4e89-bbb1-a693fdebfae8", - "name" : "website", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "website", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "website", - "jsonType.label" : "String" - } - }, { - "id" : "475f071d-5149-4379-b928-76482f5f519c", - "name" : "zoneinfo", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "zoneinfo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "zoneinfo", - "jsonType.label" : "String" - } - }, { - "id" : "b8bebfed-b5e9-4604-a0ee-9817f7d439ac", - "name" : "middle name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "middleName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "middle_name", - "jsonType.label" : "String" - } - }, { - "id" : "445232c8-6830-476c-a6f1-8bbef167595a", - "name" : "picture", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "picture", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "picture", - "jsonType.label" : "String" - } - }, { - "id" : "65f2e474-6ede-4872-86e4-e49504dd0f2a", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - }, { - "id" : "16cd5a27-ccf3-453c-ae1e-8621813ab73c", - "name" : "given name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "firstName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "given_name", - "jsonType.label" : "String" - } - }, { - "id" : "f9efedfc-3388-457c-b10a-1dff4525ff9b", - "name" : "nickname", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "nickname", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "nickname", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "627fa054-08eb-4206-af71-9e838e984b8b", - "name" : "microprofile-jwt", - "description" : "Microprofile - JWT built-in scope", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "e6cc53e5-5d7e-468e-88c8-0737dd3dc759", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "multivalued" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "foo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "groups", - "jsonType.label" : "String" - } - }, { - "id" : "83b4444c-10fc-44e8-a0c0-0c1da1f9bba3", - "name" : "upn", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "upn", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "4122ff9e-ad3c-4142-afc6-9aefdecfc86d", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "bb0747fa-c008-4af3-93be-e7739650ebd5", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "2e76447d-fbe7-4fa7-a16c-54a381b960ae", - "name" : "rabbitmq.configure:*/*", - "description" : "", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false", - "gui.order" : "", - "consent.screen.text" : "" - } - }, { - "id" : "52aad832-c6c4-49df-8a04-6ad4a406fdfa", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "dae802fb-9138-408a-b80e-a40eb0f56814", - "name" : "phone number", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumber", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number", - "jsonType.label" : "String" - } - }, { - "id" : "feb06a8d-b0eb-4911-8464-368d93f566fa", - "name" : "phone number verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumberVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" - } - } ] - }, { - "id" : "f64d64e8-57ce-4eb2-b99e-9f02fdbd99f9", - "name" : "web-origins", - "description" : "OpenID Connect scope for add allowed web origins to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" - }, - "protocolMappers" : [ { - "id" : "c6411e3b-6478-453d-b530-5fe175a4d786", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { } - } ] - }, { - "id" : "55341d34-0086-4173-ae61-d9b175b179d8", - "name" : "acr", - "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "58ea3217-0fff-4207-9d08-919f5493b629", - "name" : "acr loa level", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-acr-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - } ] - }, { - "id" : "a02c2c38-923c-46ec-9899-321412b388e5", - "name" : "attributes", - "description" : "User Attributes", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "gui.order" : "", - "consent.screen.text" : "" - }, - "protocolMappers" : [ { - "id" : "78c461c1-f3f9-4d10-8835-097f13bdcd60", - "name" : "Theme", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "aggregate.attrs" : "false", - "multivalued" : "false", - "userinfo.token.claim" : "true", - "user.attribute" : "theme_dark", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "attributes.theme_dark" - } - } ] - }, { - "id" : "06062e22-89c0-4e1d-a25b-2483903b02d5", - "name" : "rabbitmq.write:*/*", - "description" : "", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false", - "gui.order" : "", - "consent.screen.text" : "" - } - }, { - "id" : "db63e03b-7918-492f-997b-f2dda98f3b39", - "name" : "rabbitmq.tag:management", - "description" : "management", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "gui.order" : "", - "consent.screen.text" : "" - } - }, { - "id" : "210cc792-6c07-45a6-a77e-827cdf3b41ba", - "name" : "offline_access", - "description" : "OpenID Connect built-in scope: offline_access", - "protocol" : "openid-connect", - "attributes" : { - "consent.screen.text" : "${offlineAccessScopeConsentText}", - "display.on.consent.screen" : "true" - } - }, { - "id" : "425abf4a-2ee2-431d-aa92-e373a36fe556", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "8d4ffe4d-1d01-4ca1-8ff4-44eacca61b30", - "name" : "address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-address-mapper", - "consentRequired" : false, - "config" : { - "user.attribute.formatted" : "formatted", - "user.attribute.country" : "country", - "user.attribute.postal_code" : "postal_code", - "userinfo.token.claim" : "true", - "user.attribute.street" : "street", - "id.token.claim" : "true", - "user.attribute.region" : "region", - "access.token.claim" : "true", - "user.attribute.locality" : "locality" - } - } ] - }, { - "id" : "c96f0b73-ea79-4b46-93ef-d1092297f855", - "name" : "rabbitmq.read:*/*", - "description" : "", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false", - "gui.order" : "", - "consent.screen.text" : "" - } - }, { - "id" : "37f61543-dad7-4a82-8e10-77acdd1eefdc", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "3b6b6914-8ad1-4a71-88ec-444f754aaacb", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - }, { - "id" : "2defedf5-9af3-4531-822c-a879dedcd29d", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - }, { - "id" : "a7bd6723-e58e-47f7-95c0-2925ce99283d", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - } ] - } ], - "defaultDefaultClientScopes" : [ "rabbitmq.tag:administrator", "rabbitmq.tag:management" ], - "defaultOptionalClientScopes" : [ "rabbitmq.write:*/*", "offline_access", "rabbitmq.configure:*/*", "roles", "role_list", "address", "phone", "acr", "microprofile-jwt", "email", "attributes", "profile", "rabbitmq.read:*/*", "web-origins" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "xXSSProtection" : "1; mode=block", - "strictTransportSecurity" : "max-age=31536000; includeSubDomains" - }, - "smtpServer" : { }, - "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], - "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], - "adminEventsEnabled" : false, - "adminEventsDetailsEnabled" : false, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "4d3f9f14-f5d2-4b0c-8ea7-e6d078aa2191", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "f35bce67-1e75-408b-b065-52183368d4fd", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "0efa669d-1017-4b4a-82e1-c2eaf72de2c9", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "528fb423-d66e-472e-9120-1f03ba9e0f18", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "3ab11d74-5e76-408a-b85a-26bf8950f979", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] - } - }, { - "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "f565cb47-3bcf-4078-8f94-eb4179c375b8", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "104ec5a9-025b-4c44-8ac0-82d22887ca3e", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper" ] - } - } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "fb763636-e1ea-49c7-adca-ea105cdec4ad", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}],\"unmanagedAttributePolicy\":\"ENABLED\"}" ] - } - } ], - "org.keycloak.keys.KeyProvider" : [ { - "id" : "2f53ccf3-37b0-4d34-83e7-ed497499ee51", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEA3b1tNLfcjFLUw9UShVDNf+ZD8sQqb4YBaIXcSJTX/zDQUPiCp176BBGI3s4VplDArnOW+LumozmKogeoHEnGEIDW8ovgK5uMU9tSA2p0qqGBUMOdR8YATTIfCJe7qGiiuGa3WZy3sQLM70SuRzx02YU8gvUcvl2Js4KyqAziOUX/w3Wa59H9jjGNUXYyqaPWJp73eHzbVYWySzyLG22mVlcUtBx5siL5T2/Xu0p9z4l7/bapwwmOVi1ZrcHjbEAwdGEiSMGI/uWqAF+r1BRpmJLR7HNXcL3eK4/56VYLaiwSejfyYeRFMITEn/UxGYhcXZ5xMUUCG0TxjBhLYpTBuwIDAQABAoIBAA4dwebcxkrH99Poa8+WkiE7JgaS9sahx9OBI2xwJANoIU2TpzGuNLQZ76uLgB+rPWZTD9Xm5a1iJjwOyQ9/937TzPCk91D0tpgcusRikb8jx/6TGB9acL4kBjYUVCCHr3BA2G75MKKGtJ2OMvAbCQSosZj+r2VDwYFEPUkV2jheE5JHSBkwyIRrus3JCwu8gu5fyCg9z8ljcxJxI5HIsi4v8Z21aCw/cLj7h5cMt44wCjQz4rOfYNBEFeHDtlfR1QtWKgjm4ZHHJbKrzf9b2kQXclziceEbSM0tYbROEXKi+s0Zc+z3HEG89vv0vfN400clmzzIAijKY6gg3pPRWdECgYEA+lnWYbSlXDMNYx6RBXm1RnlMUYIm4oy4/9ljgnoGJ6WCn3SjFkgaDtiKfGIG1BSB85r04pAPANgcWHf5tWDnq0ARvBVG0BX2bKd++7B3D4d3CRYKCwm88SslJXv9dfHVhq4+zViFPiUWwT20A72jCuUCvL88y5fh/YBecfdh+jECgYEA4r5RD0NB9dMaeg5/jk/GEHIo4Z9KLc6FrSoOFo2xFkPOy1sgDpDOiNtypuWvniO7k7Ose3DS3hlfTMsKzIW/CgQJ20+Y4cvBWDaOsRxfjj7w3d+jH5OSJdKKSzTrgLKc9ZhlRzVXy0J0hipIA6HG5kdVdLXmh85ITmf1CbJhE6sCgYBjPVeBNbXTHZ2x6/z62aslO5IoQVqetb/kE82hfDOSZcao5Ph9Lam+ttH2ynkAevykj4mBgi+gWwqpey2uW7KaLPSaxShj9kDQA3mP1fzsV/u0y1rB02Nlin/YIxVvOqU1FT9p8SwoXVVu1sHUNck62VtDbN9xqUx5S/ikXrclEQKBgQCoTssOwEcK+Vty9KYcdfy4onTUHZBLdjxl8Iyqkxy7QTQUYRznkvesQPDXEDGO+kk3dyx2KKZt9Hl4IFNww2quPZcvcuMx4DQxjbXXpA8OIIxcta95NepLJwA+mRai3nKCH1A2TlNP7pFeMa5o+8IPly3Ix2lKr4Wepa4PN5i1pwKBgCZ1QP6XAOERl9NznNmU0rXVcvYNP4PIIfQWfvGsldZ4QKkmjjAGiS0/oYqdWs+UDRZyCRChaVjDXO9fk0PEG5OGKAj9nyiYCT/M8xtJ3UeP5ffZZvJ/vnye3QdDIo1e38ZzsWwJHmLYw7fRqY9W5Vxo0Vsy22U3CJY70KTxVdTy" ], - "keyUse" : [ "ENC" ], - "certificate" : [ "MIICmzCCAYMCBgGG3GWycDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdvW00t9yMUtTD1RKFUM1/5kPyxCpvhgFohdxIlNf/MNBQ+IKnXvoEEYjezhWmUMCuc5b4u6ajOYqiB6gcScYQgNbyi+Arm4xT21IDanSqoYFQw51HxgBNMh8Il7uoaKK4ZrdZnLexAszvRK5HPHTZhTyC9Ry+XYmzgrKoDOI5Rf/DdZrn0f2OMY1RdjKpo9Ymnvd4fNtVhbJLPIsbbaZWVxS0HHmyIvlPb9e7Sn3PiXv9tqnDCY5WLVmtweNsQDB0YSJIwYj+5aoAX6vUFGmYktHsc1dwvd4rj/npVgtqLBJ6N/Jh5EUwhMSf9TEZiFxdnnExRQIbRPGMGEtilMG7AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAK3kQ1VkQrzvSWvmXmazmNoA1ZiPzRDs1XhGUWxgsxzgPylr3dGBuqQbKvgnLUBQLSqlJHpI4fZflHswu1qrvVZYtekPcGef4WhcKAu2i1RwxrKa6RJQ1tRbrLuVYCzPv5p/DWgltWVn88aoLnqQn0SK/0PB/o4a4Cm7Kq2ZzCr1dACBr06LvOHsc7249OySmbG4HH+pLK6jVURhZ9VaObqAHe2FJBVVoIzURbdiRRURqumrIvbnpeaU1aFyg6ED5wTnXvmMPmVPt9F79mcB33bASO5wyu00X8t1hyN2Show2l2vxLACGUzVkTQt15s7uDLKE7qLmKSR3EuSGXWv3wA=" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - }, { - "id" : "230cb681-9ceb-4b1b-8a4c-929a11b08de0", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "8a489935-9a95-459b-9059-59b438ef0fa8" ], - "secret" : [ "xSCVgBlrLPWoF54gKQdR7BqXlfNaCD43xtS_ZgQRC0tGNAbqhy2Q9y8LdD2IR7K__8VGaDGYtyZayopgTebhDBb4gHDjDOBX7flhFYRrm0G3aTIuCIyFG-bPULwmyP_oHeC6tjwdQhqx5G0tE2mQQqPC9dDZuUA5I7QREIGK8cI" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - }, { - "id" : "28ca0b6d-b2e2-4785-b04b-2391e6344e30", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "6dc4834f-a1de-4cfe-a29d-e84ac8e9b1a8" ], - "secret" : [ "HpuzG_jWYKwypLeoPEMC4A" ], - "priority" : [ "100" ] - } - }, { - "id" : "bd7945cf-6d35-4e03-9c3a-197f2dc76973", - "name" : "hmac-generated", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "5034d264-cb50-4006-a59e-2ce636eb5f38" ], - "secret" : [ "ToVIw-a4IE-Yp9JpP8ztb8NAICYO8CT3tUiDPT6DdiBcgzKJ9Ym9vspxGVdmPceX3mAgbnGLAcTx1PkInSVrbZs-tX9QXFwdlyGbewhKiNpH8wEg32Wk4GuUDpTv8JCsymgWyQBY681jvIMv05eCoK2QWpqCzcgP828KM5peCzo" ], - "priority" : [ "100" ], - "algorithm" : [ "HS256" ] - } - }, { - "id" : "2293ff99-3c6d-46d1-8635-5e679d5b134a", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEpAIBAAKCAQEAqqnHQ2BWWW9vDNLRCcxD++xZg/16oqMo/c1l+lcFEjjAIJjJp/HqrPYU/U9GvquGE6PbVFtTzW1KcKawOW+FJNOA3CGo8Q1TFEfz43B8rZpKsFbJKvQGVv1Z4HaKPvLUm7iMm8Hv91cLduuoWx6Q3DPe2vg13GKKEZe7UFghF+0T9u8EKzA/XqQ0OiICmsmYPbwvf9N3bCKsB/Y10EYmZRb8IhCoV9mmO5TxgWgiuNeCTtNCv2ePYqL/U0WvyGFW0reasIK8eg3KrAUj8DpyOgPOVBn3lBGf+3KFSYi+0bwZbJZWqbC/Xlk20Go1YfeJPRIt7ImxD27R/lNjgDO/MwIDAQABAoIBADNcMt6hAHub4JTAYS6Mra0EPRBO2XhWmACBrv3+8ETClXd5475KPLDewgRVtlmtbwU8G8awUXESQgPS9lfiqvQhPreA3cHlm6oP2WMKOEtakr2s8I+frsTBLCo0Ini9RaSzjoVVgS0zofyhASKi+T970MafSj5P3XNb8YBFdXgoYDiA7FXLH6a/+m7LScL+wGcFMAAeYESxZbMQLfH3v8L+4EcTraiwjLG17ZdlF3dpybMyUSse6ZQ/PdlyvBuzzLXhN6Ce2gd9ATfS+YWTzo7Yf+GU+ex5bIpVOfHqtuM/hyq7YGKENClsXwNZIAoFnvGCbvECAfgyapVrD30IfykCgYEA0rgsSZ82pxT40NxwgBD1g9lbNVBKXphRB/3S078qusUzJjT7AldEj4imGPhAbI7bI8gAeWJsp1XJWkjM8ktaVrh+NQl7p8e9OPh0pQF/5Bdg8ajbjXESpjnaU66pVYRQy/d+jNli/YRAHX5RUfsBl+6W4+WSVMGmKBiqJsur+ecCgYEAz1YVXClcmUnyZem5B+2E9noIzjF6ROE+jIb6rawM85P3Xd0lXtECQavtxw+Qk7I32qOwrxl1UpK2foVel3pazi+4OpMfmqtYGenRP1Zk1cZwrDo0cIemTDGjj3kJ8tYn12CGolFQpJZgK6OHzvG0tOxI5VZgjIViWNPe1PGWXtUCgYEAxXGNDe8BZs1f11S2lUlOw5yGug3hoYFXbAWJ5p7Ziuf8ZXB/QlJDC7se54a11wKEk6Jzz0lKRgE8CjzszJuOqnN0zn10QGIIC7nCklo1W6QMUmPGVWH994N976tZP6gbjQL6sT+AYcvpx7j0ubxYYeRNvnz+ACzzY964kGGHY0ECgYEAumlwPPNnMN7+VEjGNm2D7UMdJZ3wi3tkjF5ThdA5uMohTsAk+FG80KSu3RmOaGyEsUwY7+VYyYvlDm4E9PZqLBVVczyR3rMNPAcwPd0EPfvzk7WlLkOX7ct3fehaXH3VRlyfz9KCSeh1wOZ/lT1VtpD2nVOC7PSDzs92+kfXZZ0CgYAnrD1y4skgXkdwolZ3unn3EFyGm2d+X5aMTHwQPdWxqoNIAl/9wdghlzihwnPhhsxq1WzlxuC3V2IMrNPtRx70Mi+FbSmR5m4Xx5RptgMtMlwno+L40PzNJgMjHGjt0wcx3Vel8wuohDtnqMyS7P5nG1/TQx0Cyzwn7QOXlNpgbQ==" ], - "keyUse" : [ "SIG" ], - "certificate" : [ "MIICmzCCAYMCBgGG3GWyBTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZkYnJlcG8wHhcNMjMwMzEzMTkxMzE3WhcNMzMwMzEzMTkxNDU3WjARMQ8wDQYDVQQDDAZkYnJlcG8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqqcdDYFZZb28M0tEJzEP77FmD/Xqioyj9zWX6VwUSOMAgmMmn8eqs9hT9T0a+q4YTo9tUW1PNbUpwprA5b4Uk04DcIajxDVMUR/PjcHytmkqwVskq9AZW/Vngdoo+8tSbuIybwe/3Vwt266hbHpDcM97a+DXcYooRl7tQWCEX7RP27wQrMD9epDQ6IgKayZg9vC9/03dsIqwH9jXQRiZlFvwiEKhX2aY7lPGBaCK414JO00K/Z49iov9TRa/IYVbSt5qwgrx6DcqsBSPwOnI6A85UGfeUEZ/7coVJiL7RvBlsllapsL9eWTbQajVh94k9Ei3sibEPbtH+U2OAM78zAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAASnN1Cuif1sdfEK2kWAURSXGJCohCROLWdKFjaeHPRaEfpbFJsgxW0Yj3nwX5O3bUlOWoTyENwnXSsXMQsqnNi+At32CKaKO8+AkhAbgQL9F0B+KeJwmYv3cUj5N/LYkJjBvZBzUZ4Ugu5dcxH0k7AktLAIwimkyEnxTNolOA3UyrGGpREr8MCKWVr10RFuOpF/0CsJNNwbHXzalO9D756EUcRWZ9VSg6QVNso0YYRKTnILWDn9hcTRnqGy3SHo3anFTqQZ+BB57YbgFWy6udC0LYRB3zdp6zNti87eu/VEymiDY/mmo1AB8Tm0b6vxFz4AKcL3ax5qS6YnZ9efSzk=" ], - "priority" : [ "100" ] - } - } ] - }, - "internationalizationEnabled" : false, - "supportedLocales" : [ ], - "authenticationFlows" : [ { - "id" : "88e5d526-2298-413c-a904-133ad839d47f", - "alias" : "Account verification options", - "description" : "Method with which to verity the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "a690c715-fbae-4c20-b680-bd4010718761", - "alias" : "Browser - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "ad6d407e-c73e-4439-baf3-d7c99c6cb6ad", - "alias" : "Direct Grant - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "e5d03405-e10a-408a-adb2-41dbb4f24515", - "alias" : "First broker login - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "96b93843-62d0-44f1-84dd-21cc5f95f523", - "alias" : "Handle Existing Account", - "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-confirm-link", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Account verification options", - "userSetupAllowed" : false - } ] - }, { - "id" : "088f4051-36ab-4952-a4f2-4ba53c408083", - "alias" : "Reset - Conditional OTP", - "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "05f37bb2-779d-4e3f-ad1b-f6eb33bb3de4", - "alias" : "User creation or linking", - "description" : "Flow for the existing/non-existing user alternatives", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "create unique user config", - "authenticator" : "idp-create-user-if-unique", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Handle Existing Account", - "userSetupAllowed" : false - } ] - }, { - "id" : "300a5647-7d2c-4348-9f1f-51504bfda1c4", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "26afc672-314b-4ad9-9711-7aaeafd7c00c", - "alias" : "browser", - "description" : "browser based authentication", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-cookie", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-spnego", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "identity-provider-redirector", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 25, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "forms", - "userSetupAllowed" : false - } ] - }, { - "id" : "9b301f6c-eda7-4da0-ba09-1a6454ff910d", - "alias" : "clients", - "description" : "Base authentication for clients", - "providerId" : "client-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "client-secret", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-secret-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-x509", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "6e54f1be-dbad-4b6d-8eee-8e048d413c63", - "alias" : "direct grant", - "description" : "OpenID Connect Resource Owner Grant", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "direct-grant-validate-username", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "Direct Grant - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "31da4b94-03c4-4d79-9ac3-5df1445c0781", - "alias" : "docker auth", - "description" : "Used by Docker clients to authenticate against the IDP", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "docker-http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "2e16651d-681f-4d9b-9dd4-9acdb465cd43", - "alias" : "first broker login", - "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "review profile config", - "authenticator" : "idp-review-profile", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "User creation or linking", - "userSetupAllowed" : false - } ] - }, { - "id" : "da109a26-fefa-48a4-ae8e-1d49627c2db8", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "4c983c77-241f-41c5-8b8a-e2cd6fc08914", - "alias" : "registration", - "description" : "registration flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-page-form", - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : true, - "flowAlias" : "registration form", - "userSetupAllowed" : false - } ] - }, { - "id" : "d62c8dd6-633c-408a-aa99-43071510efb4", - "alias" : "registration form", - "description" : "registration form", - "providerId" : "form-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-user-creation", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-password-action", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-recaptcha-action", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 60, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "c8ca5be7-e76d-4e16-b5ca-3ced99d92dbb", - "alias" : "reset credentials", - "description" : "Reset credentials for a user if they forgot their password or something", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "reset-credentials-choose-user", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-credential-email", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 40, - "autheticatorFlow" : true, - "flowAlias" : "Reset - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "389c1c37-e8af-4610-a507-e1257f55b954", - "alias" : "saml ecp", - "description" : "SAML ECP Profile Authentication Flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - } ], - "authenticatorConfig" : [ { - "id" : "d66ca9d0-1645-4c84-abfe-c0a696f17de4", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "061cc6b8-90be-4423-9bf9-974ead709b5d", - "alias" : "review profile config", - "config" : { - "update.profile.on.first.login" : "missing" - } - } ], - "requiredActions" : [ { - "alias" : "CONFIGURE_TOTP", - "name" : "Configure OTP", - "providerId" : "CONFIGURE_TOTP", - "enabled" : true, - "defaultAction" : false, - "priority" : 10, - "config" : { } - }, { - "alias" : "TERMS_AND_CONDITIONS", - "name" : "Terms and Conditions", - "providerId" : "TERMS_AND_CONDITIONS", - "enabled" : false, - "defaultAction" : false, - "priority" : 20, - "config" : { } - }, { - "alias" : "UPDATE_PASSWORD", - "name" : "Update Password", - "providerId" : "UPDATE_PASSWORD", - "enabled" : false, - "defaultAction" : false, - "priority" : 30, - "config" : { } - }, { - "alias" : "UPDATE_PROFILE", - "name" : "Update Profile", - "providerId" : "UPDATE_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 40, - "config" : { } - }, { - "alias" : "VERIFY_EMAIL", - "name" : "Verify Email", - "providerId" : "VERIFY_EMAIL", - "enabled" : false, - "defaultAction" : false, - "priority" : 50, - "config" : { } - }, { - "alias" : "delete_account", - "name" : "Delete Account", - "providerId" : "delete_account", - "enabled" : false, - "defaultAction" : false, - "priority" : 60, - "config" : { } - }, { - "alias" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "config" : { } - }, { - "alias" : "update_user_locale", - "name" : "Update User Locale", - "providerId" : "update_user_locale", - "enabled" : true, - "defaultAction" : false, - "priority" : 1000, - "config" : { } - } ], - "browserFlow" : "browser", - "registrationFlow" : "registration", - "directGrantFlow" : "direct grant", - "resetCredentialsFlow" : "reset credentials", - "clientAuthenticationFlow" : "clients", - "dockerAuthenticationFlow" : "docker auth", - "firstBrokerLoginFlow" : "first broker login", - "attributes" : { - "cibaBackchannelTokenDeliveryMode" : "poll", - "cibaAuthRequestedUserHint" : "login_hint", - "clientOfflineSessionMaxLifespan" : "0", - "oauth2DevicePollingInterval" : "5", - "clientSessionIdleTimeout" : "0", - "actionTokenGeneratedByUserLifespan-execute-actions" : "", - "actionTokenGeneratedByUserLifespan-verify-email" : "", - "clientOfflineSessionIdleTimeout" : "0", - "actionTokenGeneratedByUserLifespan-reset-credentials" : "", - "cibaInterval" : "5", - "realmReusableOtpCode" : "false", - "cibaExpiresIn" : "120", - "oauth2DeviceCodeLifespan" : "600", - "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", - "parRequestUriLifespan" : "60", - "clientSessionMaxLifespan" : "0", - "shortVerificationUri" : "" - }, - "keycloakVersion" : "24.0.5", - "userManagedAccessAllowed" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] - } -} \ No newline at end of file diff --git a/dbrepo-auth-service/listeners/target/create-event-listener.jar b/dbrepo-auth-service/listeners/target/create-event-listener.jar deleted file mode 100644 index 26cb91c37666c966f6382d35feaaf9f5da5c7f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10139 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 diff --git a/dbrepo-dashboard-service/.coverage b/dbrepo-dashboard-service/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..506ffe7fba86b0e70757d0f15ea4bb6516472b50 GIT binary patch literal 53248 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 KMnhouga82c+IkQG literal 0 HcmV?d00001 diff --git a/dbrepo-dashboard-service/access.py b/dbrepo-dashboard-service/access.py new file mode 100644 index 0000000000..2f576db368 --- /dev/null +++ b/dbrepo-dashboard-service/access.py @@ -0,0 +1,41 @@ +import logging + +from grafana_client.client import GrafanaException +from werkzeug.exceptions import NotFound + +from api.dto import Permission +from clients import grafana_client + +statistics_row_title = '${table_id}' + + +def remove_anonymous_read_access(uid: str) -> None: + grafana = grafana_client.connect() + permissions = grafana.dashboard.get_permissions_by_uid(uid) + viewer_role = [permission for permission in permissions if + 'permissionName' in permission and permission['permissionName'] != 'View'] + if len(viewer_role) == 0: + logging.warning(f'Failed to find permissionName=View') + return None + try: + response = grafana_client.generic_post(f'/api/access-control/dashboards/{uid}/builtInRoles/Viewer', + Permission(permission='').model_dump()) + if response.status_code != 200: + raise OSError(f'Failed to remove anonymous read access: {response.content}') + except GrafanaException as e: + raise OSError(f'Failed to remove anonymous read access: {e.message}') + logging.info(f"Removed anonymous read access from dashboard with uid: {uid}") + + +def update_access(uid: str, username: str, permission: Permission) -> None: + try: + response = grafana_client.generic_get(f'/api/users/lookup?loginOrEmail={username}') + if response.status_code == 404: + raise NotFound(f"Failed to find user: {username}") + if response.status_code != 200: + raise OSError(f"Failed to add access to user: {username}") + grafana_client.generic_post(f"/api/access-control/dashboards/{uid}/users/{response.json()['id']}", + permission.model_dump()) + except GrafanaException as e: + logging.error(f'Failed to add access: {e.message}') + logging.info(f"Add access for dashboard with uid: {uid}") diff --git a/dbrepo-dashboard-service/api/dto.py b/dbrepo-dashboard-service/api/dto.py new file mode 100644 index 0000000000..e2dab237d5 --- /dev/null +++ b/dbrepo-dashboard-service/api/dto.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from typing import Optional + +from pydantic import BaseModel + + +class Datasource(BaseModel): + uid: str + type: str + id: Optional[int] = None + orgId: Optional[int] = None + name: Optional[str] = None + typeLogoUrl: Optional[str] = None + access: Optional[str] = None + url: Optional[str] = None + user: Optional[str] = None + basicAuth: Optional[bool] = None + withCredentials: Optional[bool] = None + isDefault: Optional[bool] = None + version: Optional[int] = None + readOnly: Optional[bool] = None + jsonData: Optional[dict] = None + secureJsonFields: Optional[dict] = None + basicAuthUser: Optional[str] = None + basicAuthPassword: Optional[str] = None + password: Optional[str] = None + + +class CreateDatasource(BaseModel): + name: str + type: str + access: str + url: str + basicAuth: bool + version: int + readOnly: bool + jsonData: Optional[dict] = None + secureJsonData: Optional[dict] = None + basicAuthUser: Optional[str] = None + + +class Permission(BaseModel): + permission: str + + +class CreateDatasourceRequest(BaseModel): + database_internal_name: str + readonly: bool + type: str diff --git a/dbrepo-dashboard-service/clients/grafana_client.py b/dbrepo-dashboard-service/clients/grafana_client.py new file mode 100644 index 0000000000..8f7d5aab0f --- /dev/null +++ b/dbrepo-dashboard-service/clients/grafana_client.py @@ -0,0 +1,27 @@ +import logging +import os + +import requests +from requests import Response + +from grafana_client import GrafanaApi + +url = os.getenv('DASHBOARD_UI_ENDPOINT', 'http://localhost:3000') +username = os.getenv('SYSTEM_USERNAME', 'admin') +password = os.getenv('SYSTEM_PASSWORD', 'admin') + + +def connect() -> GrafanaApi: + return GrafanaApi.from_url(url=f'{url}', credential=(username, password)) + + +def generic_get(api_url: str) -> Response: + request_url = url + api_url + logging.debug(f'generic get url={request_url}, auth=({username}, <reacted>)') + return requests.get(request_url, auth=(username, password)) + + +def generic_post(api_url: str, payload: dict) -> Response: + request_url = url + api_url + logging.debug(f'generic post url={request_url}, payload={payload}, auth=({username}, <reacted>)') + return requests.post(request_url, json=payload, auth=(username, password)) diff --git a/dbrepo-dashboard-service/clients/keycloak_client.py b/dbrepo-dashboard-service/clients/keycloak_client.py new file mode 100644 index 0000000000..a04998e909 --- /dev/null +++ b/dbrepo-dashboard-service/clients/keycloak_client.py @@ -0,0 +1,36 @@ +import logging +import requests +from dataclasses import dataclass +from typing import List + +from flask import current_app +from jwt import jwk_from_pem, JWT + + +@dataclass(init=True, eq=True) +class User: + username: str + roles: List[str] + + +class KeycloakClient: + + def obtain_user_token(self, username: str, password: str) -> str: + response = requests.post( + f"{current_app.config['AUTH_SERVICE_ENDPOINT']}/realms/dbrepo/protocol/openid-connect/token", + data={ + "username": username, + "password": password, + "grant_type": "password", + "client_id": current_app.config["AUTH_SERVICE_CLIENT"], + "client_secret": current_app.config["AUTH_SERVICE_CLIENT_SECRET"] + }) + body = response.json() + if "access_token" not in body: + raise AssertionError(f"Failed to obtain user token(s): {response.status_code}") + return response.json()["access_token"] + + def verify_jwt(self, access_token: str) -> User: + public_key = jwk_from_pem(str(current_app.config["JWT_PUBKEY"]).encode('utf-8')) + payload = JWT().decode(message=access_token, key=public_key, do_time_check=True) + return User(username=payload.get('client_id'), roles=payload.get('realm_access')["roles"]) diff --git a/dbrepo-dashboard-service/coverage.txt b/dbrepo-dashboard-service/coverage.txt new file mode 100644 index 0000000000..5436bf1f29 --- /dev/null +++ b/dbrepo-dashboard-service/coverage.txt @@ -0,0 +1,7 @@ +Name Stmts Miss Cover +-------------------------------------------------- +app.py 210 29 86% +clients/keycloak_client.py 36 9 75% +clients/opensearch_client.py 179 51 72% +-------------------------------------------------- +TOTAL 425 89 79% diff --git a/dbrepo-dashboard-service/dashboard.py b/dbrepo-dashboard-service/dashboard.py new file mode 100644 index 0000000000..c77c1834cc --- /dev/null +++ b/dbrepo-dashboard-service/dashboard.py @@ -0,0 +1,273 @@ +import logging +import os + +from dbrepo.api.dto import Database, Table +from grafana_client.client import GrafanaException + +from clients import grafana_client + +statistics_row_title = '${table_id}' + +base_url = os.getenv('BASE_URL', 'http://localhost') +datasource_uid = os.getenv('JSON_DATASOURCE_NAME', 'dbrepojson0') + + +def map_link(title: str, url: str) -> dict: + return dict(targetBlank=True, + asDropdown=False, + includeVars=False, + keepTime=False, + tags=[], + type='link', + icon='info', + title=title, + url=url) + + +def map_statistics_row(dashboard: dict) -> dict | None: + filtered_panels = [panel for panel in dashboard['panels'] if + panel['type'] == 'row' and panel['title'] == statistics_row_title and 'id' in panel] + if len(filtered_panels) > 0 and filtered_panels[0]['id'] is not None: + return filtered_panels[0] + logging.warning(f'Failed to find statistics row id') + return None + + +def map_links(database: Database) -> [dict]: + links = [] + if len(database.identifiers) > 0: + links.append(map_link('Database', f"{base_url}/pid/{database.identifiers[0].id}")) + else: + links.append(map_link('Database', f"{base_url}/database/{database.id}")) + return links + + +def map_templating(database: Database) -> dict: + options = [dict(selected=False, + text=table.name, + value=str(table.id)) for table in database.tables] + selected = dict(selected=True, + text=[table.name for table in database.tables], + value=[str(table.id) for table in database.tables]) + datasource = dict(uid=datasource_uid, + type='yesoreyeram-infinity-datasource') + return dict(list=[dict(description='', + name='table_id', + hide=0, + includeAll=True, + multi=True, + datasource=datasource, + refresh=1, + regex='', + sort=0, + definition='dbrepo-json- (infinity) json', + query=dict(queryType='infinity', + query='', + infinityQuery=dict(format='table', + filters=[], + parser='backend', + refId='variable', + root_selector='', + source='url', + type='json', + url=f"/api/database/{database.id}/table", + columns=[dict(selector='id', + text='value', + type='number'), + dict( + selector='internal_name', + text='name', + type='string')], + url_options=dict(data='', + method='GET'))), + label='Table ID', + skipUrlSync=False, + type='query', + current=selected, + options=options)]) + + +def map_timeseries_panel(database: Database, table: Table) -> dict: + datasource = dict(uid=datasource_uid, + type='yesoreyeram-infinity-datasource') + return dict( + title=table['name'], + type='timeseries', + datasource=datasource, + targets=[dict(datasource=datasource, + format='table', + global_query_id='', + hide=False, + refId='A', + root_selector='', + source='url', + type='json', + url=f"/api/database/{database['id']}/table/{table['id']}", + url_options=dict(data='', + method='GET'))], + gridPos=dict(h=8, + w=12, + x=0, + y=0), + options=dict(legend=dict(displayMode='list', + placement='bottom', + showLegend=True), + tooltip=dict(mode='single', + sort='none')), + fieldConfig=dict( + defaults=dict(color=dict(mode='palette-classic'), + custom=dict( + axisBorderShow=False, + axisCenteredZero=False, + axisColorMode='text', + axisLabel='', + axisPlacement='auto', + barAlignment=0, + drawStyle='line', + fillOpacity=0, + gradientMode='none', + hideFrom=dict(legend=False, + tooltip=False, + viz=False), + insertNulls=False, + lineInterpolation='linear', + lineWidth=1, + pointSize=5, + scaleDistribution=dict(type='linear'), + showPoints='auto', + spanNulls=False, + stacking=dict(group='A', + mode='none'), + thresholdsStyle=dict(mode='absolute'))))) + + +def map_panels(dashboard: dict, database_id: int | None = None) -> [dict]: + datasource = dict(uid=datasource_uid, + type='yesoreyeram-infinity-datasource') + if map_statistics_row(dashboard) is None: + dashboard['panels'].append(dict(collapsed=False, + repeat='table_id', + repeatDirection='h', + title=statistics_row_title, + type='row', + panels=[], + targets=[dict(refId='A', + datasource=datasource)], + gridPos=dict(h=1, + w=24, + x=0, + y=0))) + dashboard['panels'].append(dict(title='Sample', + type='table', + fieldConfig=dict( + defaults=dict( + color=dict(mode='palette-classic'), + custom=dict(axisBorderShow=False, + axisCenteredZero=False, + axisColorMode='text', + axisLabel='', + axisPlacement='auto', + barAlignment=0, + drawStyle='line', + fillOpacity=0, + gradientMode='none', + hideFrom=dict( + legend=False, + tooltip=False, + viz=False), + insertNulls=False, + lineInterpolation='linear', + lineWidth=1, + pointSize=5, + scaleDistribution=dict( + type='linear'), + showPoints='auto', + spanNulls=False, + stacking=dict(group='A', + mode='none'), + thresholdsStyle=dict( + mode='off'))), + overrides=[]), + options=dict(legend=dict(displayMode='list', + placement='bottom', + showLegend=True, + calcs=[]), + tooltip=dict(mode='single', + sort='none')), + targets=[dict(format='json', + columns=[], + datasource=datasource, + filters=[], + global_query_id='', + refId='A', + root_selector='', + source='url', + type='json', + url='/api/database/' + str( + database_id) + '/table/${table_id}/data', + url_options=dict(data='', + method='GET'))], + datasource=datasource, + gridPos=dict(h=4, + w=12, + x=0, + y=0))) + return dashboard['panels'] + + +def find(uid: str): + grafana = grafana_client.connect() + try: + return grafana.dashboard.get_dashboard(uid) + except GrafanaException: + return None + + +def create(database_name: str, uid: str = '') -> dict: + grafana = grafana_client.connect() + dashboard = dict(uid=uid, + title=f'{database_name} Overview', + tags=['generated', 'dbrepo'], + timezone='browser', + fiscalYearStartMonth=1, + panels=[]) + dashboard['panels'] = map_panels(dashboard) + payload = dict(folderUid='', + overwrite=False, + dashboard=dashboard) + dashboard = grafana.dashboard.update_dashboard(payload) + logging.info(f"Created dashboard with uid: {dashboard['uid']}") + return dashboard + + +def find(uid: str) -> dict | None: + grafana = grafana_client.connect() + try: + return grafana.dashboard.get_dashboard(uid)['dashboard'] + except GrafanaException: + return None + + +def delete(uid: str) -> None: + grafana = grafana_client.connect() + grafana.dashboard.delete_dashboard(uid) + + +def update(database: Database) -> dict: + grafana = grafana_client.connect() + dashboard = find(database.dashboard_uid) + # update metadata + if len(database.identifiers) > 0 and len(database.identifiers[0].titles) > 0: + dashboard['title'] = database.identifiers[0].titles[0].title + if len(database.identifiers) > 0 and len(database.identifiers[0].descriptions) > 0: + dashboard['description'] = database.identifiers[0].descriptions[0].description + dashboard['links'] = map_links(database) + dashboard['templating'] = map_templating(database) + # update panels + dashboard['panels'] = map_panels(dashboard, database.id) + payload = dict(folderUid='', + overwrite=True, + dashboard=dashboard) + dashboard = grafana.dashboard.update_dashboard(payload) + logging.info(f"Updated dashboard with uid: {dashboard['uid']}") + return dashboard diff --git a/dbrepo-dashboard-service/report.xml b/dbrepo-dashboard-service/report.xml new file mode 100644 index 0000000000..202b3db684 --- /dev/null +++ b/dbrepo-dashboard-service/report.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="48" time="25.604" timestamp="2025-01-29T15:46:14.797988+01:00" hostname="medusa"><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_auth_fails" time="11.131" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_no_role_fails" time="0.317" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_not_found_fails" time="0.370" /><testcase classname="test.test_app.JwtTest" name="test_delete_database_succeeds" time="0.524" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_fails" time="0.154" /><testcase classname="test.test_app.JwtTest" name="test_get_fields_succeeds" time="0.218" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_no_query_fails" time="0.173" /><testcase classname="test.test_app.JwtTest" name="test_get_fuzzy_search_succeeds" time="0.283" /><testcase classname="test.test_app.JwtTest" name="test_get_index_fails" time="0.240" /><testcase classname="test.test_app.JwtTest" name="test_get_index_succeeds" time="0.190" /><testcase classname="test.test_app.JwtTest" name="test_health_succeeds" time="0.160" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_column_succeeds" time="0.386" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_concept_succeeds" time="0.341" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_identifier_succeeds" time="0.312" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_media_type_fails" time="0.140" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_no_body_fails" time="0.134" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_succeeds" time="0.284" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_table_succeeds" time="0.336" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_unit_succeeds" time="0.246" /><testcase classname="test.test_app.JwtTest" name="test_post_general_search_view_succeeds" time="0.281" /><testcase classname="test.test_app.JwtTest" name="test_update_database_empty_body_fails" time="0.177" /><testcase classname="test.test_app.JwtTest" name="test_update_database_malformed_body_fails" time="0.180" /><testcase classname="test.test_app.JwtTest" name="test_update_database_media_type_fails" time="0.231" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_auth_fails" time="0.119" /><testcase classname="test.test_app.JwtTest" name="test_update_database_no_body_fails" time="0.150" /><testcase classname="test.test_app.JwtTest" name="test_update_database_succeeds" time="0.243" /><testcase classname="test.test_jwt.JwtTest" name="test_get_user_roles_succeeds" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_password_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_empty_username_fails" time="0.127" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_password_fails" time="0.142" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_no_username_fails" time="0.146" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_password_succeeds" time="0.152" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_empty_token_fails" time="0.144" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_malformed_token_fails" time="0.143" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_no_token_fails" time="0.130" /><testcase classname="test.test_jwt.JwtTest" name="test_verify_token_succeeds" time="0.212" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_fails" time="0.120" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_delete_database_succeeds" time="0.172" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_fuzzy_search_succeeds" time="0.190" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_database_succeeds" time="0.201" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_get_fields_for_index_user_succeeds" time="0.202" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_unit_independent_search_fails" time="0.208" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_create_succeeds" time="0.205" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_malformed_fails" time="0.237" /><testcase classname="test.test_opensearch_client.OpenSearchClientTest" name="test_update_database_succeeds" time="0.214" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_malformed_fails" time="0.112" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_obtain_user_token_succeeds" time="0.149" /><testcase classname="test.test_keycloak_client.JwtTest" name="test_verify_jwt_succeeds" time="0.684" /></testsuite></testsuites> \ No newline at end of file diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index 68778de757..60348a8197 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -6,6 +6,10 @@ map $http_upgrade $connection_upgrade { client_max_body_size 20G; +proxy_buffer_size 128k; +proxy_buffers 4 256k; +proxy_busy_buffers_size 256k; + resolver 127.0.0.11 valid=30s; # docker dns upstream broker { diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java deleted file mode 100644 index 16f45aec4d..0000000000 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/auth/CreateUserDto.java +++ /dev/null @@ -1,46 +0,0 @@ -package at.tuwien.api.auth; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - -import java.util.UUID; - -@Getter -@Setter -@Builder -@EqualsAndHashCode -@NoArgsConstructor -@AllArgsConstructor -@Jacksonized -@ToString -public class CreateUserDto { - - @NotNull - @Schema(example = "3b91bc36-3eae-4662-a4be-8993624ab0cb", description = "The user id generated by Keycloak") - private UUID id; - - @NotNull - @JsonProperty("ldap_id") - @Schema(example = "ea022d6d-b4a4-42f3-836f-ff4e596a527a", description = "The user id generated by OpenLDAP") - private UUID ldapId; - - @NotBlank - @Schema(example = "user") - private String username; - - @JsonProperty("given_name") - @Schema(example = "foo") - private String givenName; - - @JsonProperty("family_name") - @Schema(example = "bar") - private String familyName; - - @Schema(example = "foo.bar@example.com") - private String email; - -} diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index 51f323c30f..c4dd579b3d 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -1,6 +1,5 @@ package at.tuwien.endpoints; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; @@ -90,62 +89,6 @@ public class UserEndpoint extends AbstractEndpoint { } } - @PostMapping - @Transactional(rollbackFor = {Exception.class}) - @PreAuthorize("hasAuthority('system')") - @Observed(name = "dbrepo_user_create") - @Operation(summary = "Create user", - description = "This webhook is called from the auth service to add a user to the metadata database. Requires role `system`.", - hidden = true) - @ApiResponses(value = { - @ApiResponse(responseCode = "201", - description = "Created user", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = UserDto.class))}), - @ApiResponse(responseCode = "400", - description = "Parameters are not well-formed (likely email)", - content = {@Content(mediaType = "application/json")}), - @ApiResponse(responseCode = "403", - description = "Internal authentication to the auth service is invalid", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "404", - description = "Default role not found", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "409", - description = "User with username already exists", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "417", - description = "User with e-mail already exists", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "502", - description = "Failed to create in auth service", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - @ApiResponse(responseCode = "503", - description = "Failed to create in auth service", - content = {@Content( - mediaType = "application/json", - schema = @Schema(implementation = ApiErrorDto.class))}), - }) - public ResponseEntity<UserBriefDto> create(@NotNull @Valid @RequestBody CreateUserDto data) - throws UserExistsException, EmailExistsException, AuthServiceException, AuthServiceConnectionException, - UserNotFoundException, CredentialsInvalidException { - log.debug("endpoint create user, data.id={}, data.username={}", data.getId(), data.getUsername()); - return ResponseEntity.status(HttpStatus.CREATED) - .body(userMapper.userToUserBriefDto( - userService.create(data))); - } - @GetMapping("/{userId}") @Transactional(readOnly = true) @PreAuthorize("isAuthenticated()") diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java index b1a65fc0cd..a06e58ca48 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/UserEndpointUnitTest.java @@ -1,13 +1,11 @@ package at.tuwien.endpoints; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; import at.tuwien.exception.*; -import at.tuwien.service.AuthenticationService; import at.tuwien.service.DatabaseService; import at.tuwien.service.UserService; import at.tuwien.test.AbstractUnitTest; @@ -41,9 +39,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @MockBean private UserService userService; - @MockBean - private AuthenticationService authenticationService; - @MockBean private DatabaseService databaseService; @@ -90,25 +85,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { assertEquals(0, response.size()); } - @Test - @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME, authorities = {"system"}) - public void create_succeeds() throws UserExistsException, EmailExistsException, UserNotFoundException, - AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { - - /* test */ - create_generic(USER_1_SIGNUP_REQUEST_DTO, USER_1); - } - - @Test - @WithMockUser(username = USER_1_USERNAME) - public void create_noRole_fails() { - - /* test */ - assertThrows(org.springframework.security.access.AccessDeniedException.class, () -> { - create_generic(USER_1_SIGNUP_REQUEST_DTO, null); - }); - } - @Test @WithAnonymousUser public void find_anonymous_fails() { @@ -212,8 +188,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-user-information"}) - public void modify_succeeds() throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException, - AuthServiceException, AuthServiceConnectionException { + public void modify_succeeds() throws NotAllowedException, UserNotFoundException, AuthServiceException { final UserUpdateDto request = UserUpdateDto.builder() .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) @@ -254,8 +229,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME) public void password_succeeds() throws NotAllowedException, DataServiceException, DataServiceConnectionException, - UserNotFoundException, DatabaseNotFoundException, AuthServiceException, AuthServiceConnectionException, - CredentialsInvalidException { + UserNotFoundException, DatabaseNotFoundException { final UserPasswordDto request = UserPasswordDto.builder() .password(USER_1_PASSWORD) .build(); @@ -293,20 +267,6 @@ public class UserEndpointUnitTest extends AbstractUnitTest { return response.getBody(); } - protected void create_generic(CreateUserDto data, User user) throws UserExistsException, EmailExistsException, - UserNotFoundException, AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { - - /* mock */ - when(userService.create(any(CreateUserDto.class))) - .thenReturn(user); - - /* test */ - final ResponseEntity<UserBriefDto> response = userEndpoint.create(data); - assertEquals(HttpStatus.CREATED, response.getStatusCode()); - final UserBriefDto body = response.getBody(); - assertNotNull(body); - } - protected ResponseEntity<UserDto> find_generic(UUID id, User user, Principal principal) throws NotAllowedException, UserNotFoundException { @@ -329,8 +289,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { } protected void modify_generic(UUID userId, User user, Principal principal, UserUpdateDto data) - throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException, AuthServiceException, - AuthServiceConnectionException { + throws NotAllowedException, UserNotFoundException, AuthServiceException { /* mock */ if (user != null) { when(userService.findById(userId)) @@ -347,8 +306,7 @@ public class UserEndpointUnitTest extends AbstractUnitTest { } protected void password_generic(Principal principal, UserPasswordDto data) throws NotAllowedException, - DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, - AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException { + DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException { /* mock */ when(userService.findById(USER_1_ID)) diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java index e9d6b158ce..514d23b227 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServicePersistenceTest.java @@ -1,9 +1,10 @@ package at.tuwien.service; -import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.*; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.UserExistsException; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; import at.tuwien.test.AbstractUnitTest; @@ -70,15 +71,6 @@ public class UserServicePersistenceTest extends AbstractUnitTest { assertEquals(1, response.size()); } - @Test - public void create_succeeds() throws UserExistsException, UserNotFoundException, EmailExistsException, - AuthServiceException, AuthServiceConnectionException { - - /* test */ - final User response = userService.create(USER_2_SIGNUP_REQUEST_DTO); - assertEquals(USER_2_USERNAME, response.getUsername()); - } - @Test public void modify_succeeds() throws UserNotFoundException, AuthServiceException { final UserUpdateDto request = UserUpdateDto.builder() @@ -106,20 +98,6 @@ public class UserServicePersistenceTest extends AbstractUnitTest { assertNull(response.getOrcid()); } - @Test - public void updatePassword_succeeds() throws UserNotFoundException, AuthServiceException, - AuthServiceConnectionException { - final UserPasswordDto request = UserPasswordDto.builder() - .password(USER_3_PASSWORD) - .build(); - - /* mock */ - final User user = userService.create(USER_3_SIGNUP_REQUEST_DTO); - - /* test */ - userService.updatePassword(user, request); - } - @Test public void find_succeeds() throws UserNotFoundException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java index 4c423aa25b..58d7cdc5e4 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/UserServiceUnitTest.java @@ -1,7 +1,8 @@ package at.tuwien.service; import at.tuwien.entities.user.User; -import at.tuwien.exception.*; +import at.tuwien.exception.AuthServiceException; +import at.tuwien.exception.UserNotFoundException; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; import at.tuwien.test.AbstractUnitTest; @@ -76,23 +77,6 @@ public class UserServiceUnitTest extends AbstractUnitTest { assertEquals(2, response.size()); } - @Test - public void create_succeeds() throws UserNotFoundException, UserExistsException, EmailExistsException, - DataServiceException, DataServiceConnectionException, AuthServiceException, AuthServiceConnectionException, - CredentialsInvalidException { - - /* mock */ - when(userRepository.findById(USER_1_ID)) - .thenReturn(Optional.of(USER_1)); - when(userRepository.save(any(User.class))) - .thenReturn(USER_1); - - /* test */ - final User response = userService.create(USER_1_SIGNUP_REQUEST_DTO); - assertEquals(USER_1_ID, response.getId()); - assertEquals(USER_1_USERNAME, response.getUsername()); - } - @Test public void modify_succeeds() throws UserNotFoundException, AuthServiceException { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java index b3612fcc0f..7240b8e1d1 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/utils/KeycloakUtils.java @@ -9,6 +9,8 @@ import lombok.extern.log4j.Log4j2; import org.keycloak.admin.client.Keycloak; import org.keycloak.representations.idm.UserRepresentation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import java.util.List; @@ -22,6 +24,13 @@ public class KeycloakUtils { private final KeycloakConfig keycloakConfig; private final MetadataMapper metadataMapper; + @Bean + @Primary + public Keycloak keycloak() { + return Keycloak.getInstance(keycloakConfig.getKeycloakEndpoint(), "master", + keycloakConfig.getKeycloakUsername(), keycloakConfig.getKeycloakPassword(), "admin-cli"); + } + @Autowired public KeycloakUtils(Keycloak keycloak, KeycloakConfig keycloakConfig, MetadataMapper metadataMapper) { this.keycloak = keycloak; diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java index 4b62b61dcb..c1ebc38007 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/config/KeycloakConfig.java @@ -1,12 +1,16 @@ package at.tuwien.config; import lombok.Getter; +import lombok.extern.log4j.Log4j2; +import org.keycloak.OAuth2Constants; import org.keycloak.admin.client.Keycloak; +import org.keycloak.admin.client.KeycloakBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; +@Log4j2 @Getter @Configuration public class KeycloakConfig { @@ -35,6 +39,14 @@ public class KeycloakConfig { @Bean public Keycloak keycloak() { - return Keycloak.getInstance(keycloakEndpoint, "master", keycloakUsername, keycloakPassword, "admin-cli"); + return KeycloakBuilder.builder() + .serverUrl(keycloakEndpoint) + .realm("master") + .clientId("admin-cli") + .grantType(OAuth2Constants.PASSWORD) + .scope(OAuth2Constants.SCOPE_OPENID) + .username(keycloakUsername) + .password(keycloakPassword) + .build(); } } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/KeycloakListener.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/KeycloakListener.java new file mode 100644 index 0000000000..f3028b2420 --- /dev/null +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/KeycloakListener.java @@ -0,0 +1,5 @@ +package at.tuwien.listener; + +public interface KeycloakListener { + void syncUsers(); +} diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/impl/KeycloakListenerImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/impl/KeycloakListenerImpl.java new file mode 100644 index 0000000000..71fb09e172 --- /dev/null +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/listener/impl/KeycloakListenerImpl.java @@ -0,0 +1,66 @@ +package at.tuwien.listener.impl; + +import at.tuwien.config.KeycloakConfig; +import at.tuwien.entities.user.User; +import at.tuwien.listener.KeycloakListener; +import at.tuwien.repository.UserRepository; +import at.tuwien.service.UserService; +import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.RandomStringUtils; +import org.keycloak.admin.client.Keycloak; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.UUID; + +@Log4j2 +@Component +public class KeycloakListenerImpl implements KeycloakListener { + + private final Keycloak keycloak; + private final UserService userService; + private final KeycloakConfig keycloakConfig; + private final UserRepository userRepository; + + @Autowired + public KeycloakListenerImpl(Keycloak keycloak, UserService userService, KeycloakConfig keycloakConfig, + UserRepository userRepository) { + this.keycloak = keycloak; + this.userService = userService; + this.keycloakConfig = keycloakConfig; + this.userRepository = userRepository; + } + + @Override + @Scheduled(fixedRate = 5000) + public void syncUsers() { + final List<String> knownUsernames = userService.findAll() + .stream() + .map(User::getUsername) + .toList(); + final List<User> unknownUsers = keycloak.realm(keycloakConfig.getRealm()) + .users() + .list() + .stream() + .filter(user -> !knownUsernames.contains(user.getUsername())) + .map(user -> User.builder() + .id(UUID.fromString(user.firstAttribute("LDAP_ID"))) + .keycloakId(UUID.fromString(user.getId())) + .username(user.getUsername()) + .theme("light") + .mariadbPassword(userService.getMariaDbPassword(RandomStringUtils.randomAlphabetic(10))) /* user needs to set it later to access */ + .language("en") + .firstname(user.getFirstName()) + .lastname(user.getLastName()) + .isInternal(false) + .build()) + .toList(); + if (unknownUsers.isEmpty()) { + return; + } + userRepository.saveAll(unknownUsers); + log.info("Synced {} unknown user(s) to metadata database", unknownUsers.size()); + } +} diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java index 581641a93a..4a3c80028a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/UserService.java @@ -1,10 +1,8 @@ package at.tuwien.service; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; @@ -41,14 +39,6 @@ public interface UserService { */ User findById(UUID id) throws UserNotFoundException; - /** - * Creates a user in the metadata database managed by Keycloak in the given realm. - * - * @param data The user data. - * @return The user, if successful. - */ - User create(CreateUserDto data) throws UserNotFoundException, AuthServiceException; - /** * Updates the user information for a user with given id in the metadata database. * diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index cb550be1a5..7d455ad4e2 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -1,10 +1,8 @@ package at.tuwien.service.impl; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserUpdateDto; import at.tuwien.entities.user.User; -import at.tuwien.exception.AuthServiceConnectionException; import at.tuwien.exception.AuthServiceException; import at.tuwien.exception.UserExistsException; import at.tuwien.exception.UserNotFoundException; @@ -14,7 +12,6 @@ import at.tuwien.repository.UserRepository; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -69,26 +66,6 @@ public class UserServiceImpl implements UserService { return optional.get(); } - @Override - public User create(CreateUserDto data) throws UserNotFoundException, AuthServiceException { - /* create at authentication service */ - final User entity = User.builder() - .id(data.getLdapId()) - .keycloakId(data.getId()) - .username(data.getUsername()) - .theme("light") - .mariadbPassword(getMariaDbPassword(RandomStringUtils.randomAlphabetic(10))) /* user needs to set it later to access */ - .language("en") - .firstname(data.getGivenName()) - .lastname(data.getFamilyName()) - .isInternal(false) - .build(); - /* save in metadata database */ - final User user = userRepository.save(entity); - log.info("Created user with id: {}", user.getId()); - return user; - } - @Override public User modify(User user, UserUpdateDto data) throws UserNotFoundException, AuthServiceException { user.setFirstname(data.getFirstname()); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java index 0f07af9af9..bccf903b8b 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java @@ -5,7 +5,6 @@ import at.tuwien.api.amqp.CreateVirtualHostDto; import at.tuwien.api.amqp.ExchangeDto; import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto; import at.tuwien.api.amqp.QueueDto; -import at.tuwien.api.auth.CreateUserDto; import at.tuwien.api.auth.LoginRequestDto; import at.tuwien.api.auth.RefreshTokenRequestDto; import at.tuwien.api.container.ContainerBriefDto; @@ -602,12 +601,6 @@ public abstract class BaseTest { public final static Principal USER_1_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_1_DETAILS, USER_1_PASSWORD, USER_1_DETAILS.getAuthorities()); - public final static CreateUserDto USER_1_SIGNUP_REQUEST_DTO = CreateUserDto.builder() - .id(USER_1_KEYCLOAK_ID) - .ldapId(USER_1_ID) - .username(USER_1_USERNAME) - .build(); - public final static LoginRequestDto USER_1_LOGIN_REQUEST_DTO = LoginRequestDto.builder() .username(USER_1_USERNAME) .password(USER_1_PASSWORD) @@ -680,15 +673,6 @@ public abstract class BaseTest { .qualifiedName(USER_2_QUALIFIED_NAME) .build(); - public final static CreateUserDto USER_2_SIGNUP_REQUEST_DTO = CreateUserDto.builder() - .id(USER_2_KEYCLOAK_ID) - .ldapId(USER_2_ID) - .username(USER_2_USERNAME) - .email(USER_2_EMAIL) - .givenName(USER_2_FIRSTNAME) - .familyName(USER_2_LASTNAME) - .build(); - public final static UserDetails USER_2_DETAILS = UserDetailsDto.builder() .id(USER_2_ID.toString()) .username(USER_2_USERNAME) @@ -774,12 +758,6 @@ public abstract class BaseTest { .authorities(AUTHORITY_DEFAULT_RESEARCHER_AUTHORITIES) .build(); - public final static CreateUserDto USER_3_SIGNUP_REQUEST_DTO = CreateUserDto.builder() - .id(USER_3_KEYCLOAK_ID) - .ldapId(USER_3_ID) - .username(USER_3_USERNAME) - .build(); - public final static Principal USER_3_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_3_DETAILS, USER_3_PASSWORD, USER_3_DETAILS.getAuthorities()); diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 6c62e03b92..4fc5ec3cab 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2ff9fc673f1fb1e5dc272aa711f4e730088fa0188b44449db042abf99b6c4db7" + "sha256": "30aa6fefdbdbb9f57d58ebc8660eee64445a831cea44c6ca1fa605f2a2e1adc3" }, "pipfile-spec": 6, "requires": { @@ -18,93 +18,98 @@ "default": { "aiohappyeyeballs": { "hashes": [ - "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", - "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8" + "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", + "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0" ], - "markers": "python_version >= '3.8'", - "version": "==2.4.4" + "markers": "python_version >= '3.9'", + "version": "==2.4.6" }, "aiohttp": { "hashes": [ - "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", - "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33", - "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", - "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", - "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9", - "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e", - "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350", - "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226", - "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", - "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a", - "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6", - "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add", - "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", - "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", - "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", - "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e", - "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", - "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1", - "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c", - "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", - "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5", - "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e", - "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", - "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3", - "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438", - "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", - "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3", - "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", - "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", - "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2", - "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", - "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c", - "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55", - "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", - "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e", - "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1", - "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", - "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", - "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", - "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", - "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1", - "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", - "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", - "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", - "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", - "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8", - "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", - "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", - "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", - "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", - "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", - "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef", - "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28", - "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", - "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", - "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", - "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", - "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", - "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", - "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", - "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745", - "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", - "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", - "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43", - "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", - "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", - "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd", - "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d", - "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", - "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", - "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", - "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", - "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", - "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f", - "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", - "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e" + "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", + "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", + "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", + "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", + "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", + "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", + "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", + "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", + "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", + "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", + "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", + "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", + "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", + "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", + "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", + "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", + "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", + "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", + "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", + "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", + "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", + "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", + "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", + "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", + "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", + "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", + "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", + "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", + "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", + "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", + "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", + "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", + "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", + "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", + "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", + "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", + "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", + "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", + "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", + "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", + "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", + "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", + "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", + "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", + "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", + "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", + "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", + "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", + "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", + "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", + "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", + "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", + "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", + "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", + "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", + "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", + "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", + "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", + "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", + "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", + "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", + "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", + "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", + "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", + "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", + "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", + "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", + "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", + "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", + "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", + "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", + "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", + "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", + "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", + "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", + "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", + "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", + "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", + "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", + "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", + "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287" ], "markers": "python_version >= '3.9'", - "version": "==3.11.11" + "version": "==3.11.12" }, "aiosignal": { "hashes": [ @@ -140,11 +145,11 @@ }, "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "cffi": { "hashes": [ @@ -327,42 +332,46 @@ }, "cryptography": { "hashes": [ - "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", - "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", - "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", - "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", - "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", - "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", - "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", - "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", - "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", - "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", - "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", - "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", - "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", - "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", - "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", - "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", - "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", - "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", - "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", - "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", - "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", - "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", - "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", - "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", - "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", - "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", - "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4" + "sha256:00918d859aa4e57db8299607086f793fa7813ae2ff5a4637e318a25ef82730f7", + "sha256:1e8d181e90a777b63f3f0caa836844a1182f1f265687fac2115fcf245f5fbec3", + "sha256:1f9a92144fa0c877117e9748c74501bea842f93d21ee00b0cf922846d9d0b183", + "sha256:21377472ca4ada2906bc313168c9dc7b1d7ca417b63c1c3011d0c74b7de9ae69", + "sha256:24979e9f2040c953a94bf3c6782e67795a4c260734e5264dceea65c8f4bae64a", + "sha256:2a46a89ad3e6176223b632056f321bc7de36b9f9b93b2cc1cccf935a3849dc62", + "sha256:322eb03ecc62784536bc173f1483e76747aafeb69c8728df48537eb431cd1911", + "sha256:436df4f203482f41aad60ed1813811ac4ab102765ecae7a2bbb1dbb66dcff5a7", + "sha256:4f422e8c6a28cf8b7f883eb790695d6d45b0c385a2583073f3cec434cc705e1a", + "sha256:53f23339864b617a3dfc2b0ac8d5c432625c80014c25caac9082314e9de56f41", + "sha256:5fed5cd6102bb4eb843e3315d2bf25fede494509bddadb81e03a859c1bc17b83", + "sha256:610a83540765a8d8ce0f351ce42e26e53e1f774a6efb71eb1b41eb01d01c3d12", + "sha256:6c8acf6f3d1f47acb2248ec3ea261171a671f3d9428e34ad0357148d492c7864", + "sha256:6f76fdd6fd048576a04c5210d53aa04ca34d2ed63336d4abd306d0cbe298fddf", + "sha256:72198e2b5925155497a5a3e8c216c7fb3e64c16ccee11f0e7da272fa93b35c4c", + "sha256:887143b9ff6bad2b7570da75a7fe8bbf5f65276365ac259a5d2d5147a73775f2", + "sha256:888fcc3fce0c888785a4876ca55f9f43787f4c5c1cc1e2e0da71ad481ff82c5b", + "sha256:8e6a85a93d0642bd774460a86513c5d9d80b5c002ca9693e63f6e540f1815ed0", + "sha256:94f99f2b943b354a5b6307d7e8d19f5c423a794462bde2bf310c770ba052b1c4", + "sha256:9b336599e2cb77b1008cb2ac264b290803ec5e8e89d618a5e978ff5eb6f715d9", + "sha256:a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008", + "sha256:b8272f257cf1cbd3f2e120f14c68bff2b6bdfcc157fafdee84a1b795efd72862", + "sha256:bf688f615c29bfe9dfc44312ca470989279f0e94bb9f631f85e3459af8efc009", + "sha256:d9c5b9f698a83c8bd71e0f4d3f9f839ef244798e5ffe96febfa9714717db7af7", + "sha256:dd7c7e2d71d908dc0f8d2027e1604102140d84b155e658c20e8ad1304317691f", + "sha256:df978682c1504fc93b3209de21aeabf2375cb1571d4e61907b3e7a2540e83026", + "sha256:e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f", + "sha256:eb3889330f2a4a148abead555399ec9a32b13b7c8ba969b72d8e500eb7ef84cd", + "sha256:f4daefc971c2d1f82f03097dc6f216744a6cd2ac0f04c68fb935ea2ba2a0d420", + "sha256:f51f5705ab27898afda1aaa430f34ad90dc117421057782022edf0600bec5f14", + "sha256:fd0ee90072861e276b0ff08bd627abec29e32a53b2be44e41dbcdf87cbee2b00" ], "markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'", - "version": "==44.0.0" + "version": "==44.0.1" }, "dbrepo": { "hashes": [ - "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" + "sha256:f25d5adbd618bf2906578e671af2bf3bcc24d738ef8bc791c220e7e5b714e2f7" ], - "path": "./lib/dbrepo-1.6.3.tar.gz" + "path": "./lib/dbrepo-1.7.0.tar.gz" }, "docker": { "hashes": [ @@ -1255,10 +1264,10 @@ }, "pytz": { "hashes": [ - "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", - "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725" + "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", + "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e" ], - "version": "==2024.2" + "version": "==2025.1" }, "pyyaml": { "hashes": [ @@ -1463,66 +1472,66 @@ }, "sqlalchemy": { "hashes": [ - "sha256:03f0528c53ca0b67094c4764523c1451ea15959bbf0a8a8a3096900014db0278", - "sha256:12b0f1ec623cccf058cf21cb544f0e74656618165b083d78145cafde156ea7b6", - "sha256:12b28d99a9c14eaf4055810df1001557176716de0167b91026e648e65229bffb", - "sha256:1b2690456528a87234a75d1a1644cdb330a6926f455403c8e4f6cad6921f9098", - "sha256:1cdba1f73b64530c47b27118b7053b8447e6d6f3c8104e3ac59f3d40c33aa9fd", - "sha256:293f9ade06b2e68dd03cfb14d49202fac47b7bb94bffcff174568c951fbc7af2", - "sha256:2952748ecd67ed3b56773c185e85fc084f6bdcdec10e5032a7c25a6bc7d682ef", - "sha256:2f95fc8e3f34b5f6b3effb49d10ac97c569ec8e32f985612d9b25dd12d0d2e94", - "sha256:2fa2c0913f02341d25fb858e4fb2031e6b0813494cca1ba07d417674128ce11b", - "sha256:3151822aa1db0eb5afd65ccfafebe0ef5cda3a7701a279c8d0bf17781a793bb4", - "sha256:35bd2df269de082065d4b23ae08502a47255832cc3f17619a5cea92ce478b02b", - "sha256:41296bbcaa55ef5fdd32389a35c710133b097f7b2609d8218c0eabded43a1d84", - "sha256:44f569d0b1eb82301b92b72085583277316e7367e038d97c3a1a899d9a05e342", - "sha256:46954173612617a99a64aee103bcd3f078901b9a8dcfc6ae80cbf34ba23df989", - "sha256:4b12885dc85a2ab2b7d00995bac6d967bffa8594123b02ed21e8eb2205a7584b", - "sha256:4f581d365af9373a738c49e0c51e8b18e08d8a6b1b15cc556773bcd8a192fa8b", - "sha256:51bc9cfef83e0ac84f86bf2b10eaccb27c5a3e66a1212bef676f5bee6ef33ebb", - "sha256:521ef85c04c33009166777c77e76c8a676e2d8528dc83a57836b63ca9c69dcd1", - "sha256:5bc3339db84c5fb9130ac0e2f20347ee77b5dd2596ba327ce0d399752f4fce39", - "sha256:635d8a21577341dfe4f7fa59ec394b346da12420b86624a69e466d446de16aff", - "sha256:648ec5acf95ad59255452ef759054f2176849662af4521db6cb245263ae4aa33", - "sha256:650dcb70739957a492ad8acff65d099a9586b9b8920e3507ca61ec3ce650bb72", - "sha256:6b788f14c5bb91db7f468dcf76f8b64423660a05e57fe277d3f4fad7b9dcb7ce", - "sha256:6c67415258f9f3c69867ec02fea1bf6508153709ecbd731a982442a590f2b7e4", - "sha256:74bbd1d0a9bacf34266a7907d43260c8d65d31d691bb2356f41b17c2dca5b1d0", - "sha256:75311559f5c9881a9808eadbeb20ed8d8ba3f7225bef3afed2000c2a9f4d49b9", - "sha256:78361be6dc9073ed17ab380985d1e45e48a642313ab68ab6afa2457354ff692c", - "sha256:7b7e772dc4bc507fdec4ee20182f15bd60d2a84f1e087a8accf5b5b7a0dcf2ba", - "sha256:82df02816c14f8dc9f4d74aea4cb84a92f4b0620235daa76dde002409a3fbb5a", - "sha256:84b9f23b0fa98a6a4b99d73989350a94e4a4ec476b9a7dfe9b79ba5939f5e80b", - "sha256:8c4096727193762e72ce9437e2a86a110cf081241919ce3fab8e89c02f6b6658", - "sha256:8e47f1af09444f87c67b4f1bb6231e12ba6d4d9f03050d7fc88df6d075231a49", - "sha256:93d1543cd8359040c02b6614421c8e10cd7a788c40047dbc507ed46c29ae5636", - "sha256:94b564e38b344d3e67d2e224f0aec6ba09a77e4582ced41e7bfd0f757d926ec9", - "sha256:955a2a765aa1bd81aafa69ffda179d4fe3e2a3ad462a736ae5b6f387f78bfeb8", - "sha256:9d087663b7e1feabea8c578d6887d59bb00388158e8bff3a76be11aa3f748ca2", - "sha256:9df21b8d9e5c136ea6cde1c50d2b1c29a2b5ff2b1d610165c23ff250e0704087", - "sha256:a8998bf9f8658bd3839cbc44ddbe982955641863da0c1efe5b00c1ab4f5c16b1", - "sha256:b2eae3423e538c10d93ae3e87788c6a84658c3ed6db62e6a61bb9495b0ad16bb", - "sha256:b661b49d0cb0ab311a189b31e25576b7ac3e20783beb1e1817d72d9d02508bf5", - "sha256:bedee60385c1c0411378cbd4dc486362f5ee88deceea50002772912d798bb00f", - "sha256:c505edd429abdfe3643fa3b2e83efb3445a34a9dc49d5f692dd087be966020e0", - "sha256:cce918ada64c956b62ca2c2af59b125767097ec1dca89650a6221e887521bfd7", - "sha256:cf5ae8a9dcf657fd72144a7fd01f243236ea39e7344e579a121c4205aedf07bb", - "sha256:cf95a60b36997dad99692314c4713f141b61c5b0b4cc5c3426faad570b31ca01", - "sha256:d57bafbab289e147d064ffbd5cca2d7b1394b63417c0636cea1f2e93d16eb9e8", - "sha256:d70f53a0646cc418ca4853da57cf3ddddbccb8c98406791f24426f2dd77fd0e2", - "sha256:d75ead7dd4d255068ea0f21492ee67937bd7c90964c8f3c2bea83c7b7f81b95f", - "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e", - "sha256:db18ff6b8c0f1917f8b20f8eca35c28bbccb9f83afa94743e03d40203ed83de9", - "sha256:dfff7be361048244c3aa0f60b5e63221c5e0f0e509f4e47b8910e22b57d10ae7", - "sha256:e4fb5ac86d8fe8151966814f6720996430462e633d225497566b3996966b9bdb", - "sha256:e56a139bfe136a22c438478a86f8204c1eb5eed36f4e15c4224e4b9db01cb3e4", - "sha256:e6f5d254a22394847245f411a2956976401e84da4288aa70cbcd5190744062c1", - "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069", - "sha256:ea308cec940905ba008291d93619d92edaf83232ec85fbd514dcb329f3192761", - "sha256:eaa8039b6d20137a4e02603aba37d12cd2dde7887500b8855356682fc33933f4" + "sha256:0398361acebb42975deb747a824b5188817d32b5c8f8aba767d51ad0cc7bb08d", + "sha256:0561832b04c6071bac3aad45b0d3bb6d2c4f46a8409f0a7a9c9fa6673b41bc03", + "sha256:07258341402a718f166618470cde0c34e4cec85a39767dce4e24f61ba5e667ea", + "sha256:0a826f21848632add58bef4f755a33d45105d25656a0c849f2dc2df1c71f6f50", + "sha256:1052723e6cd95312f6a6eff9a279fd41bbae67633415373fdac3c430eca3425d", + "sha256:12d5b06a1f3aeccf295a5843c86835033797fea292c60e72b07bcb5d820e6dd3", + "sha256:12f5c9ed53334c3ce719155424dc5407aaa4f6cadeb09c5b627e06abb93933a1", + "sha256:2a0ef3f98175d77180ffdc623d38e9f1736e8d86b6ba70bff182a7e68bed7727", + "sha256:2f2951dc4b4f990a4b394d6b382accb33141d4d3bd3ef4e2b27287135d6bdd68", + "sha256:3868acb639c136d98107c9096303d2d8e5da2880f7706f9f8c06a7f961961149", + "sha256:386b7d136919bb66ced64d2228b92d66140de5fefb3c7df6bd79069a269a7b06", + "sha256:3d3043375dd5bbcb2282894cbb12e6c559654c67b5fffb462fda815a55bf93f7", + "sha256:3e35d5565b35b66905b79ca4ae85840a8d40d31e0b3e2990f2e7692071b179ca", + "sha256:402c2316d95ed90d3d3c25ad0390afa52f4d2c56b348f212aa9c8d072a40eee5", + "sha256:40310db77a55512a18827488e592965d3dec6a3f1e3d8af3f8243134029daca3", + "sha256:40e9cdbd18c1f84631312b64993f7d755d85a3930252f6276a77432a2b25a2f3", + "sha256:49aa2cdd1e88adb1617c672a09bf4ebf2f05c9448c6dbeba096a3aeeb9d4d443", + "sha256:57dd41ba32430cbcc812041d4de8d2ca4651aeefad2626921ae2a23deb8cd6ff", + "sha256:5dba1cdb8f319084f5b00d41207b2079822aa8d6a4667c0f369fce85e34b0c86", + "sha256:5e1d9e429028ce04f187a9f522818386c8b076723cdbe9345708384f49ebcec6", + "sha256:63178c675d4c80def39f1febd625a6333f44c0ba269edd8a468b156394b27753", + "sha256:6493bc0eacdbb2c0f0d260d8988e943fee06089cd239bd7f3d0c45d1657a70e2", + "sha256:64aa8934200e222f72fcfd82ee71c0130a9c07d5725af6fe6e919017d095b297", + "sha256:665255e7aae5f38237b3a6eae49d2358d83a59f39ac21036413fab5d1e810578", + "sha256:6db316d6e340f862ec059dc12e395d71f39746a20503b124edc255973977b728", + "sha256:70065dfabf023b155a9c2a18f573e47e6ca709b9e8619b2e04c54d5bcf193178", + "sha256:8455aa60da49cb112df62b4721bd8ad3654a3a02b9452c783e651637a1f21fa2", + "sha256:8b0ac78898c50e2574e9f938d2e5caa8fe187d7a5b69b65faa1ea4648925b096", + "sha256:8bf312ed8ac096d674c6aa9131b249093c1b37c35db6a967daa4c84746bc1bc9", + "sha256:92f99f2623ff16bd4aaf786ccde759c1f676d39c7bf2855eb0b540e1ac4530c8", + "sha256:9c8bcad7fc12f0cc5896d8e10fdf703c45bd487294a986903fe032c72201596b", + "sha256:9cd136184dd5f58892f24001cdce986f5d7e96059d004118d5410671579834a4", + "sha256:9eb4fa13c8c7a2404b6a8e3772c17a55b1ba18bc711e25e4d6c0c9f5f541b02a", + "sha256:a2bc4e49e8329f3283d99840c136ff2cd1a29e49b5624a46a290f04dff48e079", + "sha256:a5645cd45f56895cfe3ca3459aed9ff2d3f9aaa29ff7edf557fa7a23515a3725", + "sha256:a9afbc3909d0274d6ac8ec891e30210563b2c8bdd52ebbda14146354e7a69373", + "sha256:aa498d1392216fae47eaf10c593e06c34476ced9549657fca713d0d1ba5f7248", + "sha256:afd776cf1ebfc7f9aa42a09cf19feadb40a26366802d86c1fba080d8e5e74bdd", + "sha256:b335a7c958bc945e10c522c069cd6e5804f4ff20f9a744dd38e748eb602cbbda", + "sha256:b3c4817dff8cef5697f5afe5fec6bc1783994d55a68391be24cb7d80d2dbc3a6", + "sha256:b79ee64d01d05a5476d5cceb3c27b5535e6bb84ee0f872ba60d9a8cd4d0e6579", + "sha256:b87a90f14c68c925817423b0424381f0e16d80fc9a1a1046ef202ab25b19a444", + "sha256:bf89e0e4a30714b357f5d46b6f20e0099d38b30d45fa68ea48589faf5f12f62d", + "sha256:c058b84c3b24812c859300f3b5abf300daa34df20d4d4f42e9652a4d1c48c8a4", + "sha256:c09a6ea87658695e527104cf857c70f79f14e9484605e205217aae0ec27b45fc", + "sha256:c57b8e0841f3fce7b703530ed70c7c36269c6d180ea2e02e36b34cb7288c50c7", + "sha256:c9cea5b756173bb86e2235f2f871b406a9b9d722417ae31e5391ccaef5348f2c", + "sha256:cb39ed598aaf102251483f3e4675c5dd6b289c8142210ef76ba24aae0a8f8aba", + "sha256:e036549ad14f2b414c725349cce0772ea34a7ab008e9cd67f9084e4f371d1f32", + "sha256:e185ea07a99ce8b8edfc788c586c538c4b1351007e614ceb708fd01b095ef33e", + "sha256:e5a4d82bdb4bf1ac1285a68eab02d253ab73355d9f0fe725a97e1e0fa689decb", + "sha256:eae27ad7580529a427cfdd52c87abb2dfb15ce2b7a3e0fc29fbb63e2ed6f8120", + "sha256:ecef029b69843b82048c5b347d8e6049356aa24ed644006c9a9d7098c3bd3bfd", + "sha256:ee3bee874cb1fadee2ff2b79fc9fc808aa638670f28b2145074538d4a6a5028e", + "sha256:f0d3de936b192980209d7b5149e3c98977c3810d401482d05fb6d668d53c1c63", + "sha256:f53c0d6a859b2db58332e0e6a921582a02c1677cc93d4cbb36fdf49709b327b2", + "sha256:f9d57f1b3061b3e21476b0ad5f0397b112b94ace21d1f439f2db472e568178ae" ], "markers": "python_version >= '3.7'", - "version": "==2.0.37" + "version": "==2.0.38" }, "sqlalchemy-utils": { "hashes": [ @@ -1773,11 +1782,11 @@ "develop": { "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "charset-normalizer": { "hashes": [ @@ -1879,72 +1888,73 @@ }, "coverage": { "hashes": [ - "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", - "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", - "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", - "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", - "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", - "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", - "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", - "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", - "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", - "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", - "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", - "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", - "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", - "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", - "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", - "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", - "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", - "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", - "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", - "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", - "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", - "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", - "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", - "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", - "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", - "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", - "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", - "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", - "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", - "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", - "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", - "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", - "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", - "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", - "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", - "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", - "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", - "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", - "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", - "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", - "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", - "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", - "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", - "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", - "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", - "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", - "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", - "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", - "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", - "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", - "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", - "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", - "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", - "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", - "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", - "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", - "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", - "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", - "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", - "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", - "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", - "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" + "sha256:00b2086892cf06c7c2d74983c9595dc511acca00665480b3ddff749ec4fb2a95", + "sha256:0533adc29adf6a69c1baa88c3d7dbcaadcffa21afbed3ca7a225a440e4744bf9", + "sha256:06097c7abfa611c91edb9e6920264e5be1d6ceb374efb4986f38b09eed4cb2fe", + "sha256:07e92ae5a289a4bc4c0aae710c0948d3c7892e20fd3588224ebe242039573bf0", + "sha256:0a9d8be07fb0832636a0f72b80d2a652fe665e80e720301fb22b191c3434d924", + "sha256:0e549f54ac5f301e8e04c569dfdb907f7be71b06b88b5063ce9d6953d2d58574", + "sha256:0ef01d70198431719af0b1f5dcbefc557d44a190e749004042927b2a3fed0702", + "sha256:0f16f44025c06792e0fb09571ae454bcc7a3ec75eeb3c36b025eccf501b1a4c3", + "sha256:14d47376a4f445e9743f6c83291e60adb1b127607a3618e3185bbc8091f0467b", + "sha256:1a936309a65cc5ca80fa9f20a442ff9e2d06927ec9a4f54bcba9c14c066323f2", + "sha256:1ceeb90c3eda1f2d8c4c578c14167dbd8c674ecd7d38e45647543f19839dd6ea", + "sha256:1f7ffa05da41754e20512202c866d0ebfc440bba3b0ed15133070e20bf5aeb5f", + "sha256:200e10beb6ddd7c3ded322a4186313d5ca9e63e33d8fab4faa67ef46d3460af3", + "sha256:220fa6c0ad7d9caef57f2c8771918324563ef0d8272c94974717c3909664e674", + "sha256:2251fabcfee0a55a8578a9d29cecfee5f2de02f11530e7d5c5a05859aa85aee9", + "sha256:2458f275944db8129f95d91aee32c828a408481ecde3b30af31d552c2ce284a0", + "sha256:299cf973a7abff87a30609879c10df0b3bfc33d021e1adabc29138a48888841e", + "sha256:2b996819ced9f7dbb812c701485d58f261bef08f9b85304d41219b1496b591ef", + "sha256:3688b99604a24492bcfe1c106278c45586eb819bf66a654d8a9a1433022fb2eb", + "sha256:3a1e465f398c713f1b212400b4e79a09829cd42aebd360362cd89c5bdc44eb87", + "sha256:488c27b3db0ebee97a830e6b5a3ea930c4a6e2c07f27a5e67e1b3532e76b9ef1", + "sha256:48cfc4641d95d34766ad41d9573cc0f22a48aa88d22657a1fe01dca0dbae4de2", + "sha256:4b467a8c56974bf06e543e69ad803c6865249d7a5ccf6980457ed2bc50312703", + "sha256:53c56358d470fa507a2b6e67a68fd002364d23c83741dbc4c2e0680d80ca227e", + "sha256:5d1095bbee1851269f79fd8e0c9b5544e4c00c0c24965e66d8cba2eb5bb535fd", + "sha256:641dfe0ab73deb7069fb972d4d9725bf11c239c309ce694dd50b1473c0f641c3", + "sha256:64cbb1a3027c79ca6310bf101014614f6e6e18c226474606cf725238cf5bc2d4", + "sha256:66fe626fd7aa5982cdebad23e49e78ef7dbb3e3c2a5960a2b53632f1f703ea45", + "sha256:676f92141e3c5492d2a1596d52287d0d963df21bf5e55c8b03075a60e1ddf8aa", + "sha256:69e62c5034291c845fc4df7f8155e8544178b6c774f97a99e2734b05eb5bed31", + "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8", + "sha256:78f5243bb6b1060aed6213d5107744c19f9571ec76d54c99cc15938eb69e0e86", + "sha256:79cac3390bfa9836bb795be377395f28410811c9066bc4eefd8015258a7578c6", + "sha256:7ae6eabf519bc7871ce117fb18bf14e0e343eeb96c377667e3e5dd12095e0288", + "sha256:7e39e845c4d764208e7b8f6a21c541ade741e2c41afabdfa1caa28687a3c98cf", + "sha256:8161d9fbc7e9fe2326de89cd0abb9f3599bccc1287db0aba285cb68d204ce929", + "sha256:8bec2ac5da793c2685ce5319ca9bcf4eee683b8a1679051f8e6ec04c4f2fd7dc", + "sha256:959244a17184515f8c52dcb65fb662808767c0bd233c1d8a166e7cf74c9ea985", + "sha256:9b148068e881faa26d878ff63e79650e208e95cf1c22bd3f77c3ca7b1d9821a3", + "sha256:aa6f302a3a0b5f240ee201297fff0bbfe2fa0d415a94aeb257d8b461032389bd", + "sha256:ace9048de91293e467b44bce0f0381345078389814ff6e18dbac8fdbf896360e", + "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879", + "sha256:b01a840ecc25dce235ae4c1b6a0daefb2a203dba0e6e980637ee9c2f6ee0df57", + "sha256:b076e625396e787448d27a411aefff867db2bffac8ed04e8f7056b07024eed5a", + "sha256:b172f8e030e8ef247b3104902cc671e20df80163b60a203653150d2fc204d1ad", + "sha256:b1f097878d74fe51e1ddd1be62d8e3682748875b461232cf4b52ddc6e6db0bba", + "sha256:b95574d06aa9d2bd6e5cc35a5bbe35696342c96760b69dc4287dbd5abd4ad51d", + "sha256:bda1c5f347550c359f841d6614fb8ca42ae5cb0b74d39f8a1e204815ebe25750", + "sha256:cec6b9ce3bd2b7853d4a4563801292bfee40b030c05a3d29555fd2a8ee9bd68c", + "sha256:d1a987778b9c71da2fc8948e6f2656da6ef68f59298b7e9786849634c35d2c3c", + "sha256:d74c08e9aaef995f8c4ef6d202dbd219c318450fe2a76da624f2ebb9c8ec5d9f", + "sha256:e18aafdfb3e9ec0d261c942d35bd7c28d031c5855dadb491d2723ba54f4c3015", + "sha256:e216c5c45f89ef8971373fd1c5d8d1164b81f7f5f06bbf23c37e7908d19e8558", + "sha256:e695df2c58ce526eeab11a2e915448d3eb76f75dffe338ea613c1201b33bab2f", + "sha256:e7575ab65ca8399c8c4f9a7d61bbd2d204c8b8e447aab9d355682205c9dd948d", + "sha256:e995b3b76ccedc27fe4f477b349b7d64597e53a43fc2961db9d3fbace085d69d", + "sha256:ea31689f05043d520113e0552f039603c4dd71fa4c287b64cb3606140c66f425", + "sha256:eb5507795caabd9b2ae3f1adc95f67b1104971c22c624bb354232d65c4fc90b3", + "sha256:eb8668cfbc279a536c633137deeb9435d2962caec279c3f8cf8b91fff6ff8953", + "sha256:ecea0c38c9079570163d663c0433a9af4094a60aafdca491c6a3d248c7432827", + "sha256:f25d8b92a4e31ff1bd873654ec367ae811b3a943583e05432ea29264782dc32c", + "sha256:f60a297c3987c6c02ffb29effc70eadcbb412fe76947d394a1091a3615948e2f", + "sha256:f973643ef532d4f9be71dd88cf7588936685fdb576d93a79fe9f65bc337d9d73" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.10" + "version": "==7.6.12" }, "idna": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 039873e7c5..77017b6d15 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -18,93 +18,98 @@ "default": { "aiohappyeyeballs": { "hashes": [ - "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745", - "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8" + "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", + "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0" ], - "markers": "python_version >= '3.8'", - "version": "==2.4.4" + "markers": "python_version >= '3.9'", + "version": "==2.4.6" }, "aiohttp": { "hashes": [ - "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", - "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33", - "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", - "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665", - "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9", - "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e", - "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350", - "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226", - "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", - "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a", - "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6", - "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add", - "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e", - "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", - "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03", - "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e", - "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", - "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1", - "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c", - "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538", - "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5", - "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e", - "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", - "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3", - "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438", - "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", - "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3", - "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", - "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287", - "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2", - "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9", - "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c", - "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55", - "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", - "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e", - "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1", - "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", - "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", - "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773", - "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", - "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1", - "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", - "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", - "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34", - "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", - "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8", - "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", - "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", - "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", - "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62", - "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac", - "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef", - "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28", - "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", - "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", - "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76", - "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", - "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d", - "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", - "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", - "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745", - "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", - "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", - "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43", - "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", - "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", - "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd", - "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d", - "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", - "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", - "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2", - "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b", - "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", - "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f", - "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204", - "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e" + "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", + "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", + "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", + "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", + "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", + "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", + "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", + "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", + "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", + "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", + "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", + "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", + "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", + "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", + "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", + "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", + "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", + "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", + "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", + "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", + "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", + "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", + "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", + "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", + "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", + "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", + "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", + "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", + "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", + "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", + "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", + "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", + "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", + "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", + "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", + "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", + "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", + "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", + "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", + "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", + "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", + "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", + "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", + "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", + "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", + "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", + "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", + "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", + "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", + "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", + "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", + "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", + "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", + "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", + "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", + "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", + "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", + "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", + "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", + "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", + "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", + "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", + "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", + "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", + "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", + "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", + "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", + "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", + "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", + "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", + "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", + "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", + "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", + "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", + "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", + "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", + "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", + "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", + "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", + "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", + "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287" ], "markers": "python_version >= '3.9'", - "version": "==3.11.11" + "version": "==3.11.12" }, "aiosignal": { "hashes": [ @@ -140,11 +145,11 @@ }, "certifi": { "hashes": [ - "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", - "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db" + "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", + "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe" ], "markers": "python_version >= '3.6'", - "version": "==2024.12.14" + "version": "==2025.1.31" }, "charset-normalizer": { "hashes": [ @@ -254,8 +259,10 @@ }, "dbrepo": { "hashes": [ - "sha256:ac99f4bd19961f08665abd513e4d9452fcea5554f122457840e95f90698bab4d" + "sha256:199a5e4d4ede04d871681880f3797a4bdbb09317ee3796df14c8c501756216d6", + "sha256:7d62d00d51c1f0a178c795a8cc09b3b4c93ee0a18aed6514e2cb60465cd877f7" ], + "markers": "python_version >= '3.11'", "path": "./lib/dbrepo-1.6.3.tar.gz" }, "docker": { @@ -956,10 +963,10 @@ }, "pytz": { "hashes": [ - "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", - "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725" + "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57", + "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e" ], - "version": "==2024.2" + "version": "==2025.1" }, "rdflib": { "hashes": [ @@ -1226,72 +1233,73 @@ "develop": { "coverage": { "hashes": [ - "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", - "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", - "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", - "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", - "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", - "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", - "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", - "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", - "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", - "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", - "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", - "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", - "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", - "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", - "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", - "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", - "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", - "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", - "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", - "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", - "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", - "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", - "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", - "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", - "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", - "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", - "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", - "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", - "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", - "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", - "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", - "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", - "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", - "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", - "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", - "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", - "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", - "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", - "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", - "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", - "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", - "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", - "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", - "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", - "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", - "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", - "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", - "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", - "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", - "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", - "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", - "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", - "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", - "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", - "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", - "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", - "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", - "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", - "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", - "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", - "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", - "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" + "sha256:00b2086892cf06c7c2d74983c9595dc511acca00665480b3ddff749ec4fb2a95", + "sha256:0533adc29adf6a69c1baa88c3d7dbcaadcffa21afbed3ca7a225a440e4744bf9", + "sha256:06097c7abfa611c91edb9e6920264e5be1d6ceb374efb4986f38b09eed4cb2fe", + "sha256:07e92ae5a289a4bc4c0aae710c0948d3c7892e20fd3588224ebe242039573bf0", + "sha256:0a9d8be07fb0832636a0f72b80d2a652fe665e80e720301fb22b191c3434d924", + "sha256:0e549f54ac5f301e8e04c569dfdb907f7be71b06b88b5063ce9d6953d2d58574", + "sha256:0ef01d70198431719af0b1f5dcbefc557d44a190e749004042927b2a3fed0702", + "sha256:0f16f44025c06792e0fb09571ae454bcc7a3ec75eeb3c36b025eccf501b1a4c3", + "sha256:14d47376a4f445e9743f6c83291e60adb1b127607a3618e3185bbc8091f0467b", + "sha256:1a936309a65cc5ca80fa9f20a442ff9e2d06927ec9a4f54bcba9c14c066323f2", + "sha256:1ceeb90c3eda1f2d8c4c578c14167dbd8c674ecd7d38e45647543f19839dd6ea", + "sha256:1f7ffa05da41754e20512202c866d0ebfc440bba3b0ed15133070e20bf5aeb5f", + "sha256:200e10beb6ddd7c3ded322a4186313d5ca9e63e33d8fab4faa67ef46d3460af3", + "sha256:220fa6c0ad7d9caef57f2c8771918324563ef0d8272c94974717c3909664e674", + "sha256:2251fabcfee0a55a8578a9d29cecfee5f2de02f11530e7d5c5a05859aa85aee9", + "sha256:2458f275944db8129f95d91aee32c828a408481ecde3b30af31d552c2ce284a0", + "sha256:299cf973a7abff87a30609879c10df0b3bfc33d021e1adabc29138a48888841e", + "sha256:2b996819ced9f7dbb812c701485d58f261bef08f9b85304d41219b1496b591ef", + "sha256:3688b99604a24492bcfe1c106278c45586eb819bf66a654d8a9a1433022fb2eb", + "sha256:3a1e465f398c713f1b212400b4e79a09829cd42aebd360362cd89c5bdc44eb87", + "sha256:488c27b3db0ebee97a830e6b5a3ea930c4a6e2c07f27a5e67e1b3532e76b9ef1", + "sha256:48cfc4641d95d34766ad41d9573cc0f22a48aa88d22657a1fe01dca0dbae4de2", + "sha256:4b467a8c56974bf06e543e69ad803c6865249d7a5ccf6980457ed2bc50312703", + "sha256:53c56358d470fa507a2b6e67a68fd002364d23c83741dbc4c2e0680d80ca227e", + "sha256:5d1095bbee1851269f79fd8e0c9b5544e4c00c0c24965e66d8cba2eb5bb535fd", + "sha256:641dfe0ab73deb7069fb972d4d9725bf11c239c309ce694dd50b1473c0f641c3", + "sha256:64cbb1a3027c79ca6310bf101014614f6e6e18c226474606cf725238cf5bc2d4", + "sha256:66fe626fd7aa5982cdebad23e49e78ef7dbb3e3c2a5960a2b53632f1f703ea45", + "sha256:676f92141e3c5492d2a1596d52287d0d963df21bf5e55c8b03075a60e1ddf8aa", + "sha256:69e62c5034291c845fc4df7f8155e8544178b6c774f97a99e2734b05eb5bed31", + "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8", + "sha256:78f5243bb6b1060aed6213d5107744c19f9571ec76d54c99cc15938eb69e0e86", + "sha256:79cac3390bfa9836bb795be377395f28410811c9066bc4eefd8015258a7578c6", + "sha256:7ae6eabf519bc7871ce117fb18bf14e0e343eeb96c377667e3e5dd12095e0288", + "sha256:7e39e845c4d764208e7b8f6a21c541ade741e2c41afabdfa1caa28687a3c98cf", + "sha256:8161d9fbc7e9fe2326de89cd0abb9f3599bccc1287db0aba285cb68d204ce929", + "sha256:8bec2ac5da793c2685ce5319ca9bcf4eee683b8a1679051f8e6ec04c4f2fd7dc", + "sha256:959244a17184515f8c52dcb65fb662808767c0bd233c1d8a166e7cf74c9ea985", + "sha256:9b148068e881faa26d878ff63e79650e208e95cf1c22bd3f77c3ca7b1d9821a3", + "sha256:aa6f302a3a0b5f240ee201297fff0bbfe2fa0d415a94aeb257d8b461032389bd", + "sha256:ace9048de91293e467b44bce0f0381345078389814ff6e18dbac8fdbf896360e", + "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879", + "sha256:b01a840ecc25dce235ae4c1b6a0daefb2a203dba0e6e980637ee9c2f6ee0df57", + "sha256:b076e625396e787448d27a411aefff867db2bffac8ed04e8f7056b07024eed5a", + "sha256:b172f8e030e8ef247b3104902cc671e20df80163b60a203653150d2fc204d1ad", + "sha256:b1f097878d74fe51e1ddd1be62d8e3682748875b461232cf4b52ddc6e6db0bba", + "sha256:b95574d06aa9d2bd6e5cc35a5bbe35696342c96760b69dc4287dbd5abd4ad51d", + "sha256:bda1c5f347550c359f841d6614fb8ca42ae5cb0b74d39f8a1e204815ebe25750", + "sha256:cec6b9ce3bd2b7853d4a4563801292bfee40b030c05a3d29555fd2a8ee9bd68c", + "sha256:d1a987778b9c71da2fc8948e6f2656da6ef68f59298b7e9786849634c35d2c3c", + "sha256:d74c08e9aaef995f8c4ef6d202dbd219c318450fe2a76da624f2ebb9c8ec5d9f", + "sha256:e18aafdfb3e9ec0d261c942d35bd7c28d031c5855dadb491d2723ba54f4c3015", + "sha256:e216c5c45f89ef8971373fd1c5d8d1164b81f7f5f06bbf23c37e7908d19e8558", + "sha256:e695df2c58ce526eeab11a2e915448d3eb76f75dffe338ea613c1201b33bab2f", + "sha256:e7575ab65ca8399c8c4f9a7d61bbd2d204c8b8e447aab9d355682205c9dd948d", + "sha256:e995b3b76ccedc27fe4f477b349b7d64597e53a43fc2961db9d3fbace085d69d", + "sha256:ea31689f05043d520113e0552f039603c4dd71fa4c287b64cb3606140c66f425", + "sha256:eb5507795caabd9b2ae3f1adc95f67b1104971c22c624bb354232d65c4fc90b3", + "sha256:eb8668cfbc279a536c633137deeb9435d2962caec279c3f8cf8b91fff6ff8953", + "sha256:ecea0c38c9079570163d663c0433a9af4094a60aafdca491c6a3d248c7432827", + "sha256:f25d8b92a4e31ff1bd873654ec367ae811b3a943583e05432ea29264782dc32c", + "sha256:f60a297c3987c6c02ffb29effc70eadcbb412fe76947d394a1091a3615948e2f", + "sha256:f973643ef532d4f9be71dd88cf7588936685fdb576d93a79fe9f65bc337d9d73" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.10" + "version": "==7.6.12" }, "iniconfig": { "hashes": [ diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/init/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..7c52a50da5b0254652134c5e798d6dd64f134548 GIT binary patch literal 30967 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/init/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..123a1b2e8f1e901405809d63a1d9aaece647a12b GIT binary patch literal 40691 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 aiSNE~R1d*i_vZS4<{0rWe;F3AG5`SURCR;^ literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl b/dbrepo-search-service/lib/dbrepo-1.7.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..7c52a50da5b0254652134c5e798d6dd64f134548 GIT binary patch literal 30967 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 literal 0 HcmV?d00001 diff --git a/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.7.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..123a1b2e8f1e901405809d63a1d9aaece647a12b GIT binary patch literal 40691 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 aiSNE~R1d*i_vZS4<{0rWe;F3AG5`SURCR;^ literal 0 HcmV?d00001 diff --git a/docker-compose.yml b/docker-compose.yml index 9176f6404a..bd7e68eb9d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,7 +85,6 @@ services: - ./dbrepo-auth-service/import-realms.sh:/docker-entrypoint-initdb.d/import-realms.sh - ./dbrepo-auth-service/master-realm.json:/opt/keycloak/data/import/master-realm.json - ./dbrepo-auth-service/dbrepo-realm.json:/opt/keycloak/data/import/dbrepo-realm.json - - ./dbrepo-auth-service/listeners/target/create-event-listener.jar:/opt/bitnami/keycloak/providers/create-event-listener.jar ports: - "8080:8080" environment: @@ -96,9 +95,6 @@ services: KEYCLOAK_DATABASE_NAME: "${AUTH_DB_NAME:-keycloak}" KEYCLOAK_DATABASE_USER: "${AUTH_DB_USERNAME:-keycloak}" KEYCLOAK_DATABASE_PASSWORD: "${AUTH_DB_PASSWORD:-dbrepo}" - METADATA_SERVICE_ENDPOINT: "${METADATA_SERVICE_ENDPOINT:-http://metadata-service:8080}/api/user" - SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}" - SYSTEM_PASSWORD: "${SYSTEM_PASSWORD:-admin}" healthcheck: test: curl -fsS http://localhost:8080/realms/master interval: 10s diff --git a/helm/dbrepo/files/create-event-listener.jar b/helm/dbrepo/files/create-event-listener.jar deleted file mode 100644 index 9a9cd149f84ff92e5292a9fdc19a81edcc9ca7b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10138 zcmWIWW@Zs#VBp|j_)+H))uNu=U&zS7aE6J2L4<*U!Phm!QP<PYP2bni&(qB{I7H9a ztvBd&-XQ~lJ?^LMf3W8;a|RS?f4QKPp{lVre~#})51EvFr=P!PIW%{z+Qx2w&HA3? z`6^Dg=Px?;FD%_<#QC~APU4IXQ{u7Z$6It4Iv#$v_SP#l-ENl}C!g%tl$v>Oe^m9K zikEIbn7O=oZ9|Rfzf~&_w4|;)T6=WiGTrhF>9rrkZWi+2y0qPMa;RD2=gg-v-u*eP zlGQ9+&C8486FS@eJ=@(_rz~<<{?q>_ch-n;-WGZrtMv3?fq+$c)2n7TWd}}$mA-ig zC$1H}DmK^V^yI_`y>dTO`FKle_-AAp+<h4CzGtg`-+ZeH1{#|K?;JZH@awtWmX-Fm zb{y_+d9Ntn^OJRVnCkq{V+$6Uy$_kWCp)WsO5MF{D+59`%PT@$S$F3t*95KlreBb= zC+&YhT!wqbg?ZfTH(X4=r4#m1<<)8n`7fbYUVnXmC6?<jr<+~ZBF88ERhmzpS4&67 z%>C`#tkSLF{a*3b>S<ve;w2X!_3||PgQAFwfq{bo97POBfD<{25X!#QxkMqUVh}=B zR-9T?mYJMdtdCIt9Zfwm0|P^12_6Mp5CtWr<(a8@Na{dI2-#wOWQ%hX%kV0e#8jME zqDRmUeSF%Ii&7IyQgu_yQu9i5b25udQu9)azz&9_c~D6Gnb+pj#lXPufq{WR1KF^w zr2OJy-IUaVoczjMkO9RdMWx9lrA4WF6}dSIwSA6!O$Gw4-{&lvS-bLGjL3~jCR>JW z!a<qV%PtG;+{>aoV}`}*`QImhcP~Hx;Al&y>`}J9uZ%2i&ex7EY<&Gx$N$3Csr&AC zL`KzA%wj&KW4S!3$n!>6lI7m;{11&1Zyyz(u#Q{pu&qL5BmWJCr3>W>&F1|o<ep^c zdrqM_Al~n*cI?e<>#ojEj|ash!aqL0Syt&WFfiyaFfceF`v)HL`9<k^*{PMuIr)j% zdf>1r)^h~~kq<P40*dm>GE-8E+!B*Z@{20HbuMaa>Yn#Gd%0N8%U8#<RM-2g_Q#Vt zdY)&!b-6T7>7VxT)GhM%(L1TXiiH8;8c@3W|EYPmKNADPHC6@&Ba~$042~Oo_Ua|) zBo-IX4ZfWx6etoq`!+*Rcf!W4+q$+*^G^J5P<>6O;xz$J(<F}?nKos=ndc_VWW2op zlKAY5N9;cWkJ+{hY6f}NT3+9JJ+As~aowLkzhn<E%Bc!EML4RoY9zIM*=TkxBzW_$ zSF7J`ykP6}rZZ9UUa-@SfHxW)!eyrZU)|(+6Ib%OXUwax6PtG3D8@hHQ03bj$&1zJ zsEDZ4-pX!qT9|5GTdLq!difgLtIoT^%U18>`Ih@|S6lAY?zt9W9ND{4)^g0>mc+Kl zbB)s42X0)FDV)E(J1wr1oG<g+*~O{;@a&|ZbBmXVgvZWUye^?PAX>`)sz_!*-l441 z8;)Fju|#{$_NePmCi|SeX1aN?W!rv!KIMDthgCzO!!`Gu`_lY*Y2p8AMGeNkdew8z zTVC6+_PbmC^0l{}59%tr#MXP>_`}{OAb)G!^(j5Cf^2`pHqBQukEl3){(+W{&eZ<c zX;N>w*WXmWqazYsKd<I?G0*Dr8^r&A^=NDS{_0Drz@*&jCodjd_z=CLyz=m>eNs-V zGC#&1z7i9@gG;NWmwRvM0-;UZ>vsBZI?UVe#}T9Zzp^#`-z%GE70W;Q*tmPAFF3!4 z<Dpo;VdabiR{bkE8KifdHU7C@pTo{!#>bxDY)@l<@^tzavuICJFlS_C`IjYJo^nq& zhdrb}RpsBc33C@N&}4n6_s+A+=3Tto#yZBM%x^rp?yi(ht=!j;lzohImeogrYR3fC z4Tf_(&sI;E&&liWbou;^BTfQQ$y?UzglW|u{QC37O|c_QM-)Y#Mog-jT(iAjD{JEs zq|6UWo&ghY{W!qEz|beaz#xX2JaaNr^GYB|us6K2M)<g7?c?m!%7c9eZWJ{yZaK~F zHbKBCx9`V<gKKM!2rX;dR-(K1Eo<cJH|u;BcwRQky|rbF$xGL&i^gC46hq41sx1-s z^?3i=ZqmG$wSSMV|8n+JJCBj3y|J<N=V!C?@0IuJ{V9KC$Z-3kygpaJiUl67hF&aM zd|8j93>K=oH|=$1|2jiCVAEL-sdIddhj#s9<hNn^_by<|*2Si`suYA?$-l_rm*x0c z^5tvUSC_pX7Wp);O5&WRH$luY$@-VX(%u(+^JK&$qQ%cemg*>5UJ9yz8ltIH(91Nx zD>cHebCz()rFLFh$sGR;OY2%Wi(M9|<wPkTY<6Cj%Wi3SXzxLT>bqGV6Iu_PaxKl{ zTeETRine&i-md2lqZ(fwO$q$J!)}V4q*%ms_x~TBzS(+(zap^vwFpZ{Ouw{P(4#z| z03K_TX+?cIc-{wZh<eag84|9vus@?SEL+9)*zdM?9WOPH8%&m4Bl?0z^*HZopHov0 z>`0Tm72w3LQ+2f=k$uuK;SHtg2~nTCr?cmOND_Uug#8M4$g|DdZ|`XY$Vv9NINxRe z7LezkU4EijtuePUbO+DQ8wcfBSf|CZO=J6*aQRPV?b?Ya?%n&x$Ddc#_c?81cl?*M zoWO$auC*2W8eZKqS!sRH_HXQ#+%uO<-PQkg|9-}^!__M*a3k++)-Ks%|N0r*)<!dM z32zbJu9XpbvF%&yalw68d|sX`GoHC*@r4Cn9-jVoe*IPrj>6i!!tIZjh%xMWaX?RW z_rdHbAFs)#<=^sLDk<k$`g_UGxD$c#`6^nCceSdPtkmXsb3Nbx^|s4vtrw@=IX>sY z@<(Q0xI=m~+e_pGF3;K9W_)Vm+YHa+VmGQv&&S(Lv+dy0$@KlKaoS>4>Q}h~ajg15 zh8?w=FHS7$aoOOz`K#`1);&HF3scVYoPM#pY}!JZ6R&25Zu*<F$K{}RsLX-W5=SDp z@fb@;U)6~-y)p0Y$(k7XYnM3F^OF4X<SM#*9w>?$9$~e)vg~cg;>m5db{*Y*<$eC= zBnf3Mw@?WSi`BkzTUYkJ>s$0J$0;Ik`+i;iT00JvC8g86l+{9KcyRuB)_WuU;$oed z9`lqfpSGBu56_H#ma<&4N@Z!agVm}nAzFz?Vz^oPZ++SCa7!}pmezUM@Ir}l1B;U` z*N$uWUY~Jmb-JgD;!bV7Mt9Xl{ps&s6cvldEqstCy8g&&mTAv#AKhS;BWWbntt!i0 zblz4gPI-06#{#9?ey`kjp&zaG*sb>6pSS$Q(vn*{-aWgd$C^K*SL*w{zb}_0_q;5& zymI_exsTB=wVB^{eJXf&w01@C2QjJCu#?-qeAtlp@?%}>;-4Zm2bwH)Uz<ATvi)wI z(wf;_+aJqrF)lsBIN_Php(3%07k@1jFMn*FbY+jg$>W84qMPm==CR^GCHH#Px7rY$ z(-{djjE*x2-j%w(_5j;I?uyi-)%$hI<poxpeyscZ^Yu-Se@y7&f2`cY@=B0j+B0bH z9=-gB-yTir>VK5HrB%~7@addMwJvAkzX|_X(&WGL$Cfjmr#~e`C<TAgKDg++<f+2W z6MKWVwUj^T>2hCEU-7t2_VhD1*7;`zZ(X%cuhu`8<aBh&p6)Y-cX#DxEAQfO^*FIL z^W@v-tWxXbye<Zww$bsP;O%cJ7hK5K&pjpR$(z{=HN#!1oi^vD9e16t-7|3w`*iQJ z>PyMayF{m|8(ce_=HtzCMr7~IlS=7VHaxxc)L+?4%X{WFWlN(Zmubt^9?9wZ7+a}b zwc_o*OW$tnntJ8fmz|w<t7>j+nem@Xv*|MTX_?XqImW%`&c_EXjJji0>7l;nz><C1 zpPq9qQ_gmj;SSr<q_`<U_MCj<ouH(1BGwC^?~3f(y0owG?8S(Br9Lt1D{Gggz4&}C zamAGMXdT1Px4yca*&=$`nwL}Sw9zg{ue7OI#=ghPbabcc&MvFutb2R(a)sN${1mI7 zYY)7ttm=JY@!s}u(Y8fpS%$~A%vj<7WY;ks1MQOS(|XiPs!MN}@GlLn-1I$3I#ujE z^Lg<L;awTmg*rJl>t%m^pP746$L5Ff<9^fA9jre-sz>b%R@VIJP@GV1a!dSzZnwWq z<UtGPBk?oJ(ggY>C-9v}pYggeW?AL#7lPBISvPfQ8K(vuv}d{YCq72whxqFER~LTi z)S0pV9amcAhO%oX<_pM(7M+o|&e?xpy+ZZDeLE7F9+|MS{!qFtRK7_jK52Ct;}4^K zhxUm)5A+u?7ms<6BboaCljdX%-uaF@*KaaxUUlsAhfVQ66{h(lUtN%YmgU;q&!z&G z_s;WvT|DjDY1N&D%;~FZq&r_`DlOAwFJ64a#4o9s?d)0Ce~Wm^Z2J11CDj|Y&;6Hl zpWBFIef}&b{R=UN-k(tU_QP9kqdl`Ob1heU1JAJ?MZ3?Ju}dzQExP~Ggo6`#-hI)Q z+!N)uudI9drDEQBHl0#8?F)tWW!^E5cscWsbR*}UpLb09`28OLbL^~p&2rDOvD|dJ z*WdfmKQy?EEMDrLebC%|_TJ|ecFpa7?(x{^O_!gxcvbN9c@w4m=O_K~fBZ(l^OVoS zVu!~p%g)W6=F;8!NbT8ur|UfY38uH7nz*a>Zfr7J^QcFjSLW`SS6hX(f4*4zwECOX zJ_Y8Q<TXxB9ffNS&W-4<-oSS};5buEzwjIRN9Wo%&Py>d^v_@5Y5qtv=a7G)^1P)- zymz=xNn9Oqa6bFi46)uDYGz65rnmIWlG|S#S-Z|#W@+%04z?Om|A6Ogflca`S_|a- zA2Ye@C{6h*vae0)l~L>Z$I>NJlXd3af0D&{-o7jU;q8Eqiyvic#O3Dg<-C9Rd!W{| zk74!-=S~~f{!pxY@@W&d{WF;l!vFU3riuqHUa;+plGdiV@nzEs^t~)k{Jgz#!C~1u zu8QJ<0R?{+{c(+|?p)6OZIk6|W!43onyyrT*u3+@j(cBgtM;x>66&{W`gA!@=WM$N z>-%5D<~enZ@tf8!oDg65v^?)O`}W#vx&M3i7sc+|+4l3*e`)5I?|-QO<Ng01tw~-m zMR;E>F9So490P+kYMTdllN{0z+8V)G5qy2>zy9s&r}+(xCP+9bbudP5Gh}f(z$SEi zMuL)b(?Jynr+G`$qa&vEd`VdlIctJi?yhr}RF`<~I%AT1x!0ty$?9#1*|OVbO0M}$ zH_5b~xz~8^QscK<CV$)i-PY6W#G(5&mj&*ZPcMFN`P}}rZFqd0>Gw(o>nFW+Aqy@! zOzq6N!tu&KA~>x2kXPTf_tJKW?y`<&zf~B$dm|FkHmg1Bq4QeC{hd}bnoOr%ewX5Z z^leJD|E+B@yUS1cSxu}swsCS<RlSv|X#dU3#)%t^XI5yPl${t-wWaosov`ncH6Ooq zhMe(Bxt0I<ShHSax~y2z#KtP&Zb5+<`+i%IDMBi0Mo$E@^iDo)h&s=Gb!A9oQj+F0 z&Q+$Yl4pzWUsaRZIA?-N(Bh`2Ro6QohNxXW*Ll(6V)qB{B>8oMGnl`vd@#!=p!xCf ztvk*+TsWe&M$F_~QigVy&u%r9ti{`kKb%>j8&SH_&6rcvbGf{4L~_E~&QcD}b@RNH z4vB1T-@I74sdS;o#aqpOvs~s*^nQE)rp*)Q8CFXs&5FG3m-R@UWv$w+4RH^OgWknC zR%hfXTF=%`59{W=k@0{{c=m?K4V%`qJt<l6{o1~R&3oBduEz@Y^4>^#q?WUE-?x)% zrY?xq;hlQnUB@Q(_D;VX@gJN&^loo_)Kyb>LfG>45#hIgucf3nC~m%d<m`^t<xv+` z*uLDcOmk9i%H+WIdpGXMzV}o$zRCH^L3Y>0<b>&+ac{(QW|V5IwVCAgJ?f(2!B-bV z{j%hOF1<6n*uHn&mRqL3lbTc)3Nc()Y^q~sR{NG{@49zUvG9{W3!BcW{#opk@OAaR zzB|lnY=sj7r=Go$sdUrC-A3+|NU_WEOF1WwBrc8AZ4KzI-Dq{EQ<<%AmPOlcmV?@| z$}2v9E1Ms<fv0Vq%7>cLkn~;FQ@+ca7xL@0xgPU7cIA@Z>5W@hPrnbnC?aZ7aZ%(| zm+z6gd7HZuZXe;0@Vsi}_PiicPH=g(+y>*7IaXQh>bmJ`oZX*V2(hX8sEBs>E_FH* z^ygN03~Tq6gLfBy`>Z0bmM-_sV9uxZ<-REeC&kQ74i`UBpMKXTD(#4-W5WF<bGJ>Y zKA%)@>xkr@w(SCvA{sG#x~Z0Dl+?O^&xq*uT6cc=ih$zw>3ih@Zob~y)OShqb<hm2 z^!4op*A5(3i)(jh$$q|k|AJQ+7I-B-l{n9I#@{YF>m!>@+Jj!TdoAY1rRRmYo~@k6 zyf>D;n)P%0dH=ZRDVE=UeANCC%Dg}A(e;ntB9A)SJ-wc`>9FMb{U%q!nbhR(X|Cun zo+N+VlG%So#r99<rlvk_5p)oL(XAQ0_xh3FA5<deo>?Zd`*fkiljzg&v8@hzif7qp zJPwKTiW1&7>7}z;oipc@^U_)O+WCW-s++_cm40?~_G<}Em9D<Jgx}vdUp?vClaCc= z+WiXzZeHE`zv8~0>pxB5`Nt~R1W%S9zbxr~QbzuqmC5m2lPtHk%$Ohe)7DQ}_B{8m zIh~oRtuyV*9K3%qxyo-;d(>&ndTLJR`DdYB5qgOXP3LF+u&IkKxY}Zx_c^FD>fFN} z#>>`;A75n7AvZ^S-T!!FRnh;l*Mb9Mz1b$~%$~Bc>0`=<?E3lAyZ5)>H~+w{ruT^d z<wWCG=Url+Z{Bq><e21^%fTO4)Os?V-7IVLLG{^#M^5iEOQ&D{U;Cpg;bz{f8-1*E zLkzN1g<P-s{!kXKUvp};l=WP{rS2g$HD`~^e{}u@<3}HJe(CF_p9Hsl5?A|oDf;Ey z871d_d?;;Xxq8Xmr$+dGlCFTSYNVF+-nh<9Ny~QFCWlo`INCk8=ax<g)0!*sA!0W2 z4ytiMd)0YsrhgLaW(z;OccsPZeEEIn4`i$EpZ>8+>;3<2Z+<#6hCF<Kb>)AB8zIXk zUAA1*@=|1ez0t?>KNuA^B<-ompD{an$(A!Z8&`c?q{Uj7@#y|1yEn78>5Dn=#_=2| z(5y>&wExq`3+6XPyO;hH;4nyhadrNTAM>5gXeF}-tTy}oasR5O>d+0kCesDNwO*{y zy!nag=4l;G(PbfCQxg;|OH=1=bYi?2^X=3u$6GI_OYul1eRyfKo|o~8r>?JR-NC*h z@sn?k#GT4`vd7)jo+m*0(Pjrz?$FI04n+^$8Lw!29RDa>wNA%0b>^p-`JZC6=Pl9c z{uso-xaW!Rz7C#!#d|U)X8(|wIMsE@X?qi|P^(u{Ui)yK(%P<ZW`E+Xw92qUr&9K; zTKh!#%!JpOy_T}SK0VJ`Q6gFXQhRG<$M#D8>k&e(FD#jFb|zZaUXb!DP!sSptmcV) zxkIXYa_G5;IrBE^8LclbR)6U8^!1kP({}4LJWFrs-fj+GRiW8-YSr|;i}bX^uFAeJ ziVtiv-+W_1vg`4mGd^zNIlp;@)uJQcqK&&QZvA}wgo)Le{mOrWE$xDoCYM)T-xEEZ zU9a3hP4m;juHZ1G)4{7w8ZG8pCTzv|fzvj;>cQD_vtKsYt~xVyTj|ey4}RYexr%q* z5yFQJS8K-io8^k!u}PPjbzRhp<@MfR+wja=1xJ_v?K!*e?ZuYwzx(O~#OLmQe5&oB zQQgkCxi0(euAFlC(fL_#w$I%dqO*C0+poVy3cq=7=AU|dNUOYbVy2DdRH^N^m7^lw zZE#z&VzSp|mQrD3_xQP*ySJZA-EiFNm{8d=%}HLp>FTE+8)q**SNDIp>-5y0d(Tc^ z|7}B_M2~e@`d*nmN2F3W$$m^e_W5LDaM|g#UyHQW`+huKA!GbRZ|b}E&sM)Pid*+C z&vLsp|D(tIYXodREmk$rWbW{PmuPWMd+ou<|M%Yq3&!q_3M*%seADHS`WpF~suRc5 zm3e%=2HjD#lT=Q;_4lqbum6SO#c{0*j&bULx*Is@o#^>+_AIBrj~1=oF6&frnd^Oz z=I$le)gzyMymCf5_~QJaFRNaJGb_D5Z!dS{M_g#l^Xx*?LVHf3u);Iy&klX*xxRH) zb;nBgkmreMvNt#SUE4V8g}2dxFTQE%Je5<X9@z6H{e<+4@>7$Atfot>j*ty?NHOI; z@${9rPlI^5Y<}I>*sjz+*Bm{sx~wvlkyWW>-S2(qyz?R5^9MP$#~fffSe#*T{wG)D z>hED2_s+^yUcKgN#sRL#<1<s=#c_HXU#a&t(ND|e^zJ_XQ2Wl(GWlw@aMrLbKFLo_ z)`kClX27mnb>W@g{R+P5o42PO=6k@jOG}_mjCan?uS|KX9qiqYvEI?kczS0c_m0Iv z%n!F^-dU@%_R6GnYD^9SudZKri|OAQ(R?<dJ+H-}B~8Y4^)wrwnY%7(ti9wW+tzWS zDpNgc%H{=U4R0z)uRO~8CfvF1)LE~MzUz{bK6GU1%?&-p<FCAIU-FbUEz1+S{!Wgw zKmAX0ef|2NKXtYh7gQ_1$duVNU*Bz#Z`s~E?_U1ZDt?hKdBMxCU-x;O8}+kqRYCGq zov+s~GaO)R+A#6hjz)(ZCvC<XZPFXXqYXM{CnRdWb7hx1RK|NWEh|xR#ljU&yn5T5 zX1>W`?Ap93GH*#@Xnyw{m+cx2p9DVcZfD=Iz+lFgFzXL|zb@`((SKmu_<i$l$L+so zzp;B-W`9lS#}C$;O-}st9{$<<?$75paTo5&)N#KEpHRDSYQffh4fkugxY@28nV$J= z{k-Ka)rAu7A6)(a>#oT^_-Vh;_6;ZAF5)h^%v#lPOfSb>f8}?9X1jNt1=r)EzL*`k z5MR)_c*WGUn|!UCVlUjg)}axny~Nqd_U+3*_RkfkvemH3ng4jT*t=%qH2n$RA9|ku zslN9E*Y=nrMN;qm=UpiK`&m6<8_T~esrp*Je+7K^+3aNVPCm5$BbKu>z<Z;-c7gTX zssgtIt*O>a8{WN5IA3~ED`d@z#Cr8Cn|Hc@g3Tr;sa${2Y5gT}+3puBBNx`a`)>BH zVU6hL%kz((E@#{K-R9r2_|`k8Wd8BZIA*_U!kLHhpZ?aLeR%)#UuVld?)(1FxBRpH zo&2*0$Hg~B$bNb(Qx`SkPMIL%*UYmI)8kHDzGSc8^uX#%U{h7k&*yq}7vC?dmS1l8 zexauBo5Kd_$$!$7n>p8pUzoZ#Vc+FEna@2-?&xf<c(&U0==p-_jnk)RU5$Tj`C<0X zNY}60o1F^6UJ1^emSz51<ipDqS!;qG&K91(eD9)F+D%K^(gf9O-Q-ps&K2LddE+YI zb~it<7bneRjV&W*$lI=V>;ANuJ1gXUUig};joqIsR+~(m>>!txsc>f2iiHgOykv|E z?wt*nE12XrJ?&UY$48OFFGSc1X8oAw*wmRQ^xg2*`{TDiFx>M#Fz;Ao4Ilqw?+TXq z!;338`$dJg7<C@}=lU3aGFfroyQjBJe>9c6tl7<YK67?R=4>6OqpK@!O~{iC(9d7> zeRcQk;#2H4%X9Mfa%`S@QQ3Q*gTkFlvnH>OnLF>0lI@;bvSODPRoC|#SoS=UI#Ma# zbN<7WG+o9Lf7WR)?)5n>2wz-u@Q~H1LyOK%ekvxKtJN~2TWZNf&e*URsg&$Amo<?c z5tn--!c?od3U_&3zO2f;PyETP^AA>iw$kf%Hx1~wtNjzVv-ke*3krhgcuy(rbbhDu zw(xG$uHIMIuDxB6_js4=^|vi~!T0`6zE|hIJ$RSx+S}J(e6zc2x8OE=X?0kfJLjJ_ zwo2=#AHVQ}8!?gcuFN`0;oFUfK4u1nfBXy#X2{bzka;!4R2lX;uY&ws(5%(faNqpf z76N;Jhp%v3uktu$`)szZs09v<OlR{NeQ(|4nkA)Ok}*j^^LFON|8ZTv!gSn^mIWSB z&;D`mLt&bU%+dAVqy=*iMyz}Cw5HMjnV`qAAid3}f1dpsU1C>1^-NOk6{#8BHc_`u z|6E)At7!u7-KHZU!DZYLGka=&Jn#C`=)Y%rWXOM}r%Cyh&bQx|Rg{ZyELT_O{`B+J z-~IOvw<+nZT|CKgdfv}g-qr6#7wes<DfykjvvGT7rVC^H-_JIjvyVzoZTb=6ro_40 z@a4@kRli{7ORBwxER40TzrS?k_wn+A^DT?Y4Ogz!?UOnlKE*PBP2!3YvB~G6yjNVB zG)FA!UytYCm{$s0Cq(+Qmfm=3%~zzbaJQ|ogRH`b!UB(i*A7jU8cNejm_2uyED&9^ zbGNJ5nQ6uyo)I%;!z1;UC(L}f%OmEK+8gQC+Qnt}^_C<(byIQW%MI15NnM?sc*>x( z<@D5r*JjSyd8a{jsn@0h`W`-9WqW^%wOon|QeW4*aqHIOd$krREcQQ;`+g4Zsc<Fn zlWGS(tZUf&POICK^Tp(v+<=q&+kW}3%U|TL=xCe0x}S%ojAz?Qr(hc^zPrt9Uru{u z^{;z>(k0_9J3eh)@izU3s$IY5eG3-jtrue&4u(B#bNuut`ug|pv+P=WcNJbqc_3FB ze9-N#gn+}_$3<Cp4hXJd^ys#Ee0PS<IVWa|uB^S58~QX~YJ3;Xy)E<LsP~?ZlP8K! z=Sw;9-<((+wW5+G^n0sc=9T<Lwwb^7-P50btj2!DwN6>x1pZRfWjr$PG8>a-iqEK+ z89mQQYVxO@;s5zt|JG-9FMC#;ZCc+oYob}r>)o#|UwWr6_`5~qaxaH#Z^=H9Ie+Dz zzFxXXjC<-&u_?Y2<Ug!9_}}hi81rG*`g@P(9zEuFZQru$WWlR{PHV>1Xx{1Z@oHDK zbJp1PZSEyEj=yU@)g7O=$YT1Pg{A9uTAO&APT3V{|G(@<&=0#ApV>0CJof9j{);;- zS-$<J(DEx@b<5Rcw&+W5eSf({S$_Y4y0aIpr=1hsac1X>urpoWTL1Kx?VgypgLTW2 zPrtS^moD9!UlZVe)!f5!T1cH+lP%AWgOVvWcbX^2&rLX{Bv<p}&zg#9vkz9>I)CPb ziG|GnswEq5=3BfmWhrv$nqSU$q&_OBY@b@#qkrn312+ap-t>GqL*$h8y2+xVN7LPZ z{EvSe5S{ZkF66z#41w<TKcBE8ayV$_eD}HsNuUW^5Vj>RhZhv(7o--IWTqDLo^a%9 zP!M3fu(v!=DeEPp)v<*A5)%xMt&iP*@6+9T$BO4f&ajAUWi5QA+FCExE+8m;EMluL z8^7?qt&wrtw=A)(L3Nz4N65Kk1_p+W3=9my$d2>$b8(H(^YIK0`Rt|h>5RAM+6%ni zx?1PXoZlQ|aK-q+BQHJBobgp((4_Ijv(Q=NOQ*eb9(^k1ExhveOL4RDmtx_@RTp;r z>Qt>#UHWuph02$Ww;BWD=0t@|n>i=y%+v@bmtO&wcQ6EaGct)VL*}|cL599w1-AHL zNh65m>x#L01!4m3<rE-&3=9GcZygsiBCUTx)&^QM08s`ZLCY&3EReQS$lBmj?#TMT zV_9y2(Ep2(0kZf4<Wq<{(KUdUUm!F{Gl4b07fK-XfkFtP4nl&KV?bCShdMJM`43Ww zAiEM>GiZ4RLURG8W<(8y&lu2h4TLev@fm}?B7+zXNdlmlKwrKAF`R*6N#hq}!wD?r zKsObA5e353Bg{y_29IA-msB9z2Z~<wWfBPcf>@BFm)J!U=;ou(b0f_E$cAD*(yTYS z8R+B22s57YqnJTx6dBoIY)u=4!LwzN0vnP>5y=dD`hYfcknI2^W%R-oVMnbZS#}_b lT6C+>i%Nu5Qc6fxAqvg_Z&o&tA^`>ghHESg4C|CYJOFXFii`jN diff --git a/helm/dbrepo/templates/auth-configmap.yaml b/helm/dbrepo/templates/auth-configmap.yaml index 28ad32d664..534e901b42 100644 --- a/helm/dbrepo/templates/auth-configmap.yaml +++ b/helm/dbrepo/templates/auth-configmap.yaml @@ -4,9 +4,6 @@ kind: ConfigMap metadata: name: auth-service-config namespace: {{ include "common.names.namespace" . | quote }} -binaryData: - create-event-listener.jar: |- - {{ .Files.Get "files/create-event-listener.jar" | b64enc }} data: dbrepo-realm.json: |- { @@ -2339,7 +2336,7 @@ data: "adminTheme" : "", "emailTheme" : "", "eventsEnabled" : false, - "eventsListeners" : [ "create-event-listener", "jboss-logging" ], + "eventsListeners" : [ "jboss-logging" ], "enabledEventTypes" : [ "SEND_RESET_PASSWORD", "UPDATE_CONSENT_ERROR", "GRANT_CONSENT", "VERIFY_PROFILE_ERROR", "REMOVE_TOTP", "REVOKE_GRANT", "UPDATE_TOTP", "LOGIN_ERROR", "CLIENT_LOGIN", "RESET_PASSWORD_ERROR", "IMPERSONATE_ERROR", "CODE_TO_TOKEN_ERROR", "CUSTOM_REQUIRED_ACTION", "OAUTH2_DEVICE_CODE_TO_TOKEN_ERROR", "RESTART_AUTHENTICATION", "IMPERSONATE", "UPDATE_PROFILE_ERROR", "LOGIN", "OAUTH2_DEVICE_VERIFY_USER_CODE", "UPDATE_PASSWORD_ERROR", "CLIENT_INITIATED_ACCOUNT_LINKING", "TOKEN_EXCHANGE", "AUTHREQID_TO_TOKEN", "LOGOUT", "REGISTER", "DELETE_ACCOUNT_ERROR", "CLIENT_REGISTER", "IDENTITY_PROVIDER_LINK_ACCOUNT", "DELETE_ACCOUNT", "UPDATE_PASSWORD", "CLIENT_DELETE", "FEDERATED_IDENTITY_LINK_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN", "CLIENT_DELETE_ERROR", "VERIFY_EMAIL", "CLIENT_LOGIN_ERROR", "RESTART_AUTHENTICATION_ERROR", "EXECUTE_ACTIONS", "REMOVE_FEDERATED_IDENTITY_ERROR", "TOKEN_EXCHANGE_ERROR", "PERMISSION_TOKEN", "SEND_IDENTITY_PROVIDER_LINK_ERROR", "EXECUTE_ACTION_TOKEN_ERROR", "SEND_VERIFY_EMAIL", "OAUTH2_DEVICE_AUTH", "EXECUTE_ACTIONS_ERROR", "REMOVE_FEDERATED_IDENTITY", "OAUTH2_DEVICE_CODE_TO_TOKEN", "IDENTITY_PROVIDER_POST_LOGIN", "IDENTITY_PROVIDER_LINK_ACCOUNT_ERROR", "OAUTH2_DEVICE_VERIFY_USER_CODE_ERROR", "UPDATE_EMAIL", "REGISTER_ERROR", "REVOKE_GRANT_ERROR", "EXECUTE_ACTION_TOKEN", "LOGOUT_ERROR", "UPDATE_EMAIL_ERROR", "CLIENT_UPDATE_ERROR", "AUTHREQID_TO_TOKEN_ERROR", "UPDATE_PROFILE", "CLIENT_REGISTER_ERROR", "FEDERATED_IDENTITY_LINK", "SEND_IDENTITY_PROVIDER_LINK", "SEND_VERIFY_EMAIL_ERROR", "RESET_PASSWORD", "CLIENT_INITIATED_ACCOUNT_LINKING_ERROR", "OAUTH2_DEVICE_AUTH_ERROR", "UPDATE_CONSENT", "REMOVE_TOTP_ERROR", "VERIFY_EMAIL_ERROR", "SEND_RESET_PASSWORD_ERROR", "CLIENT_UPDATE", "CUSTOM_REQUIRED_ACTION_ERROR", "IDENTITY_PROVIDER_POST_LOGIN_ERROR", "UPDATE_TOTP_ERROR", "CODE_TO_TOKEN", "VERIFY_PROFILE", "GRANT_CONSENT_ERROR", "IDENTITY_PROVIDER_FIRST_LOGIN_ERROR" ], "adminEventsEnabled" : false, "adminEventsDetailsEnabled" : false, diff --git a/helm/dbrepo/templates/gateway-configmap.yaml b/helm/dbrepo/templates/gateway-configmap.yaml index 8ef3588715..da396d5226 100644 --- a/helm/dbrepo/templates/gateway-configmap.yaml +++ b/helm/dbrepo/templates/gateway-configmap.yaml @@ -12,6 +12,12 @@ data: '' close; } + client_max_body_size 20G; + + proxy_buffer_size 128k; + proxy_buffers 4 256k; + proxy_busy_buffers_size 256k; + server { listen 8080 default_server; server_name _; diff --git a/make/build.mk b/make/build.mk index 270b2cee6f..3a10b568e9 100644 --- a/make/build.mk +++ b/make/build.mk @@ -14,10 +14,6 @@ build-data-service: ## Build the Data Service. build-metadata-service: ## Build the Metadata Service. mvn -f ./dbrepo-metadata-service/pom.xml clean package -DskipTests -.PHONY: build-auth-event-listener -build-auth-event-listener: ## Build the Auth Service Event Listener. - mvn -f ./dbrepo-auth-service/listeners/pom.xml clean package -DskipTests - .PHONY: build-ui build-ui: ## Build the UI. bun --cwd ./dbrepo-ui build diff --git a/make/dev.mk b/make/dev.mk index 1c7d62d7ee..c20b4dd229 100644 --- a/make/dev.mk +++ b/make/dev.mk @@ -1,7 +1,7 @@ ##@ Development .PHONY: start-dev -start-dev: build-images build-auth-event-listener ## Start the development deployment. +start-dev: build-images ## Start the development deployment. docker container stop dbrepo-gateway-service || true docker container rm dbrepo-gateway-service || true docker compose up -d -- GitLab