Hi Steve, 
In terms of accessing the user's api key within a tool definition file, have a look at this thread I had started. John had suggested something but I haven't gotten it to work but maybe you will have more luck than me.
http://dev.list.galaxyproject.org/Workflow-ID-Galaxy-Instance-URL-API-Key-in-Galaxy-Tool-Config-td4669906.html#a4670104
Cheers,
Katherine

On Mon, Oct 17, 2016 at 5:17 PM, Steve Cassidy <steve.cassidy@mq.edu.au> wrote:
Hi Bjoern, 
 just wanting to revisit this question and perhaps get an update on what you were doing for extending the user profile. 

I just noticed in the galaxy sources the option to add ‘forms’ to be filled out at registration time. The admin interface seems to allow me to create  a form but it doesn’t appear when I try to register.  The code for this seems to be 2-5 years old so perhaps it’s a forgotten corner? 

https://github.com/galaxyproject/galaxy/tree/dev/templates/admin/forms

Anyway, if you have made any progress on this I’d be happy to hear about it.  I’d like to be able to store the user’s API key in the profile and access it from a tool definition file. 

Cheers,

Steve
Department of Computing, Macquarie University
http://web.science.mq.edu.au/~cassidy

On 28 Jul. 2016, at 2:59 pm, Björn Grüning <bjoern.gruening@gmail.com> wrote:

Hi Steve & Mohammed,

I'm working on a user-profile extension to get credentials for a user,
but this will take a few more weeks sorry.

In the meantime can you look at the following idea:

my_programm.py --credentials $USER_CREDENTIALS --arguments

The variable $USER_CREDENTIALS is set during job execution with dynamic
destination mappings
https://wiki.galaxyproject.org/Admin/Config/Jobs#Dynamic_Destination_Mapping

What do you think, would this work for you?
This assumes you as admin can pass along the user credentials if you
know the username.

If not please get in touch and I will tell you about my plans to extend
the user-preferences maybe you can help me with this to speed things up.

Ciao,
Bjoern


Hi Bjorn,
sure, I don’t want to have the credentials stored in the tool but the tool
needs to act on behalf of the user to retrieve data from the repository, so
it needs access to credentials.  This could for example be a token generated
via an OAuth2 exchange - basically something that is sent along with every
http request to the remote resource to authenticate the user.  

My thought is that this could be stored in the user profile if this can be made
available to the tool in the same way that __user_email__ is now.

When you say ‘on the framework level’ do you mean by Galaxy?

Steve

Department of Computing, Macquarie University
http://web.science.mq.edu.au/~cassidy

On 28 Jul 2016, at 5:23 PM, Björn Grüning <bjoern.gruening@gmail.com> wrote:

Hi Steve,

can you explain the larger use-case behind it. Imho you should not
populate a tool with credentials, this should be handled on the
framework level.

Hope you are fine,
Bjoern

Am 28.07.2016 um 03:15 schrieb Steve Cassidy:
Hi again,
 I’m looking for the right way to store some user credentials in the
galaxy session so that tools can work on behalf of the user with our
repository.

Currently users have an API key and they need to upload it as a data
item to that is then passed to each tool that needs it as input.  This
doesn’t seem like the right solution since the API key becomes part of
the history and so would be shared if the history were shared.  

What would be better would be a way of storing the API key in the user
session and then being able to pass that into a tool.

I note that there are a few user session variables available in the tool
xml file: __user__, __user_email__, __user_name__ and __user_id__.
There is also a user preferences page where they can fill out a few
details.  However, I can’t see a mechanism to extend this in any way and
have extra properties in the preferences pane that would then be
available to tools via the template file.  

I can see that the standard practice for the data sources on
usegalaxy.org <http://usegalaxy.org> is to send the user off to a
repository website to find data that is then posted back to the galaxy
server.  This isn’t appropriate for us since the interaction with the
repository is not just for downloading a single dataset - tools will
query the repository, download various kinds of data and possibly upload
new data, so we need to store user credentials in some way.

Is there already a good way to achieve this or is this an enhancement to
Galaxy?

Thanks,

Steve



Department of Computing, Macquarie University
http://web.science.mq.edu.au/~cassidy
<http://web.science.mq.edu.au/%7Ecassidy>



___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
https://lists.galaxyproject.org/

To search Galaxy mailing lists use the unified search at:
http://galaxyproject.org/search/mailinglists/



___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  https://lists.galaxyproject.org/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/