Skip to content

Commit 1c211fa

Browse files
committed
Merge branch 'release_25.1' into dev
2 parents a467c8d + ec810e4 commit 1c211fa

8 files changed

Lines changed: 66 additions & 10 deletions

File tree

client/src/components/User/UserPreferencesForm.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import { BAlert } from "bootstrap-vue";
33
import { storeToRefs } from "pinia";
44
import { computed, ref, watchEffect } from "vue";
5-
import { useRouter } from "vue-router/composables";
65
76
import { isRegisteredUser } from "@/api";
87
import {
@@ -18,6 +17,7 @@ import LoadingSpan from "@/components/LoadingSpan.vue";
1817
1918
interface Props {
2019
formId: UserPreferencesKey;
20+
id?: string;
2121
}
2222
2323
const props = defineProps<Props>();
@@ -29,13 +29,11 @@ const breadcrumbItems = computed(() => [{ title: "User Preferences", to: "/user"
2929
const userStore = useUserStore();
3030
const { currentUser } = storeToRefs(userStore);
3131
32-
const router = useRouter();
33-
3432
const loading = ref(true);
3533
3634
const model = computed<UserPreferencesModel | undefined>(() => {
37-
if (router.currentRoute.params.id) {
38-
return getUserPreferencesModel(router.currentRoute.params.id);
35+
if (props.id) {
36+
return getUserPreferencesModel(props.id);
3937
} else if (isRegisteredUser(currentUser.value)) {
4038
return getUserPreferencesModel(currentUser.value.id);
4139
} else {

client/src/entry/analysis/router.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,10 @@ export function getRouter(Galaxy) {
673673
{
674674
path: "user/:formId",
675675
component: UserPreferencesForm,
676-
props: true,
676+
props: (route) => ({
677+
formId: route.params.formId,
678+
id: route.query.id,
679+
}),
677680
redirect: redirectAnon(),
678681
},
679682
{

doc/schema_template.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ $tag:tool|requirements://complexType[@name='Requirements']
3434
$tag:tool|requirements|requirement://complexType[@name='Requirement']
3535
$tag:tool|requirements|container://complexType[@name='Container']
3636
$tag:tool|requirements|resource://complexType[@name='Resource']
37+
$tag:tool|requirements|credentials://complexType[@name='Credentials']
38+
$tag:tool|requirements|credentials|variable://complexType[@name='CredentialsVariable']
39+
$tag:tool|requirements|credentials|secret://complexType[@name='CredentialsSecret']
3740
$tag:tool|required_files://complexType[@name='RequiredFiles']
3841
$tag:tool|required_files|include://complexType[@name='RequiredFileInclude']
3942
$tag:tool|required_files|exclude://complexType[@name='RequiredFileExclude']

doc/source/admin/galaxy_options.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2465,7 +2465,7 @@
24652465
:Description:
24662466
The BibTeX citation for Galaxy, to be displayed in the History
24672467
Tool Reference List
2468-
:Default: ``@article{Galaxy2024, title={The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update}, author={{The Galaxy Community}}, journal={Nucleic Acids Research}, year={2024}, doi={10.1093/nar/gkae410}, url={https://doi.org/10.1093/nar/gkae410}}``
2468+
:Default: ``@article{Galaxy2024, title="The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update", author="{The Galaxy Community}", journal="Nucleic Acids Research", year="2024", doi="10.1093/nar/gkae410", url="https://doi.org/10.1093/nar/gkae410"}``
24692469
:Type: str
24702470

24712471

doc/source/admin/special_topics/vault.md

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,49 @@ In a file source the password could be used as follows:
111111
password: ${user.user_vault.read_secret('preferences/ufz-nextcloud/password')}
112112
```
113113

114-
This example assumes that the NextCloud username is identical to the Galaxy username. If this is not the case also the username could be a user preference that is stored in a vault.
114+
This example assumes that the NextCloud username is identical to the Galaxy username. If this is not the case also the username could be a user preference that is stored in a vault.
115+
116+
## Tool Credentials System
117+
118+
Starting with Galaxy 25.1, tools can request credentials directly through a new tool credentials system. This system provides a secure, user-friendly way for tools to access external APIs and services using credentials stored in the vault.
119+
120+
### Overview
121+
122+
The tool credentials system allows tool developers to declaratively specify credential requirements in their tool XML, and Galaxy automatically:
123+
- Presents a user-friendly credential management interface in the tool form
124+
- Stores sensitive credentials (secrets) encrypted in the configured vault
125+
- Injects credentials as environment variables when tools execute
126+
- Provides centralized credential management in User Preferences
127+
128+
### How it works
129+
130+
1. **Tool Definition**: Tool developers add a `<credentials>` element to their tool XML defining required secrets (API keys, passwords) and optional variables (endpoints, usernames).
131+
2. **User Experience**: When users run a tool requiring credentials, they see a credential management section in the tool form where they can provide or select existing credentials.
132+
3. **Secure Storage**: All secrets are automatically stored encrypted in the vault (configured via `vault_config_file`).
133+
4. **Automatic Injection**: When the tool runs, Galaxy injects the credentials as environment variables into the tool's execution environment.
134+
135+
### Vault Configuration Requirements
136+
137+
The tool credentials system requires a properly configured vault. Any of the supported vault backends (hashicorp, custos, or database) can be used. Ensure you have:
138+
139+
1. Set up your vault configuration as described in the sections above
140+
2. Configured the `vault_config_file` setting in `galaxy.yml`
141+
3. Tested that the vault is working properly
142+
143+
The tool credentials system will automatically use the configured vault to store all tool secrets.
144+
145+
### Admin Considerations
146+
147+
- **No additional configuration needed**: Unlike the older user preferences approach, the tool credentials system requires no admin configuration in `user_preferences_extra_conf.yml`. Tools can define their own credential requirements.
148+
- **Vault is required**: The tool credentials system only works when a vault is configured. If no vault is configured, tools requesting credentials will not function properly.
149+
- **User isolation**: Each user's credentials are isolated in the vault. Credentials cannot be shared between users.
150+
- **Migration from user preferences**: If you previously configured tool credentials via `user_preferences_extra_conf.yml`, those can be gradually phased out as tools migrate to the new system. Both systems can coexist.
151+
152+
### API Access
153+
154+
The tool credentials system provides a REST API at `/api/users/{user_id}/credentials` for programmatic credential management. This can be useful for:
155+
- Automating credential setup for multiple users
156+
- Building custom credential management interfaces
157+
- Integrating with external identity management systems
158+
159+
For more information on the tool credentials system from a developer perspective, see the [Tool XML Schema documentation](https://docs.galaxyproject.org/en/master/dev/schema.html#tool-requirements-credentials).

doc/source/releases/25.1_announce.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ Deprecation Notices
9797
* `Galaxy Monitoring with Telegraf and Grafana <https://training.galaxyproject.org/training-material/topics/admin/tutorials/monitoring/tutorial.html>`__
9898
* `Galaxy Monitoring with gxadmin <https://training.galaxyproject.org/training-material/topics/admin/tutorials/gxadmin/tutorial.html>`__
9999

100+
**Deprecation of Python 3.9 support in Galaxy release 26.0**
101+
Since Python 3.9 reached its end-of-life in October 2025, support for it will
102+
be removed in Galaxy 26.0.
103+
Administrators should upgrade their Python environment to version 3.10 or
104+
higher to avoid security vulnerabilities and ensure a smooth transition to
105+
Galaxy 26.0 and beyond.
106+
100107
Release Team
101108
===========================================================
102109

lib/galaxy/config/sample/galaxy.yml.sample

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1518,7 +1518,7 @@ galaxy:
15181518

15191519
# The BibTeX citation for Galaxy, to be displayed in the History Tool
15201520
# Reference List
1521-
#citation_bibtex: '@article{Galaxy2024, title={The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update}, author={{The Galaxy Community}}, journal={Nucleic Acids Research}, year={2024}, doi={10.1093/nar/gkae410}, url={https://doi.org/10.1093/nar/gkae410}}'
1521+
#citation_bibtex: '@article{Galaxy2024, title="The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update", author="{The Galaxy Community}", journal="Nucleic Acids Research", year="2024", doi="10.1093/nar/gkae410", url="https://doi.org/10.1093/nar/gkae410"}'
15221522

15231523
# The URL linked by the "Galaxy Version" link in the "Help" menu.
15241524
#release_doc_base_url: https://docs.galaxyproject.org/en/release_

lib/galaxy/config/schemas/config_schema.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1834,7 +1834,7 @@ mapping:
18341834
18351835
citation_bibtex:
18361836
type: str
1837-
default: "@article{Galaxy2024, title={The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update}, author={{The Galaxy Community}}, journal={Nucleic Acids Research}, year={2024}, doi={10.1093/nar/gkae410}, url={https://doi.org/10.1093/nar/gkae410}}"
1837+
default: '@article{Galaxy2024, title="The Galaxy platform for accessible, reproducible, and collaborative data analyses: 2024 update", author="{The Galaxy Community}", journal="Nucleic Acids Research", year="2024", doi="10.1093/nar/gkae410", url="https://doi.org/10.1093/nar/gkae410"}'
18381838
required: false
18391839
per_host: true
18401840
desc: |

0 commit comments

Comments
 (0)