view gmql_rest_auth.xml @ 0:cbaa7a012914 draft default tip

planemo upload for repository https://github.com/lu-brn/gmql-galaxy commit 953ee36ceda5814dc9baa03427bc0eb4ee2e93bd-dirty
author geco-team
date Tue, 26 Jun 2018 08:57:55 -0400
parents
children
line wrap: on
line source

<tool id="gmql_auth" name="GMLQ Access" version="0.1.1">
  <description>Manage the registration, login and logout of users to the GMQL system.</description>
  <macros>
    <import>gmql_rest_macros.xml</import>
  </macros>
  <command><![CDATA[
        python $__tool_directory__/gmql_rest_auth.py
        #if $user_ops.operation == 'login'
         -cmd=login
         -login_type=$user_ops.auth.log_type
          #if $user_ops.auth.log_type == 'registered' :
           -username=$user_ops.auth.username
           -password=$user_ops.auth.password
           -output=$login_user_output
          #else :
           -output=$login_guest_output
          #end if
        #elif $user_ops.operation == 'logout' :
          -output=$logout_output
          -cmd=logout
          -user=$user_ops.authToken
        #else :
          -output=$register_output
          -cmd=register
          -new_user=$new_user_data
        #end if
	  ]]></command>
  <configfiles>
      <configfile name="new_user_data">#if $user_ops.operation == 'register' :
          #import json
          #set $data = dict ()
          $data.update(firstName=$user_ops.new_firstName.value,lastName=$user_ops.new_lastName.value, username=$user_ops.new_username.value,
          email=$user_ops.new_email.value, password=$user_ops.new_password.value)
          #set $data_file = json.dumps($data)
          #echo $data_file
          #end if
      </configfile>
        <inputs name="params" filename="params.json"/>
  </configfiles>
  <inputs>
    <conditional name="user_ops">
        <param name="operation" type="select" display="radio" multiple="false" label="Select the desired action" >
            <option value="login">Login</option>
            <option value="logout">Logout</option>
            <option value="register">Register</option>
        </param>
        <when value="login">
            <conditional name="auth">
		        <param name="log_type" type="select" label="Log as guest or registered?" display="radio" multiple="false" >
			        <option value="guest">Guest</option>
                    <option value="registered">Registered User</option>
		        </param>
		        <when value="registered">
			        <param name="username" type="text" label="Username" >
                        <validator type="regex" message="String not valid">[a-zA-Z0-9_.-]+$</validator>
                    </param>
                    <param name="password" type="text" label="Password" >
                        <validator type="regex" message="String not valid">[a-zA-Z0-9_.-]+$</validator>
                    </param>
		        </when>
	        </conditional>
        </when>
        <when value="logout">
            <param format="gmql_user" name="authToken" type="data" label="Select user" />
        </when>
        <when value="register">
            <param name="new_firstName" type="text" label="First Name">
                <validator type="regex" message="String not valid">[a-zA-Z0-9_.]+[\sa-zA-Z0-9_.]*$</validator>
            </param>
            <param name="new_lastName" type="text" label="Last Name">
                <validator type="regex" message="String not valid">[a-zA-Z0-9_.]+[\sa-zA-Z0-9_.]*$</validator>
            </param>
            <param name="new_username" type="text" label="Preferred username">
                <validator type="regex" message="String not valid">[a-zA-Z0-9_.]+$</validator>
            </param>
            <param name="new_email" type="text" label="E-mail address">
                <validator type="regex" message="Insert a valid email-address">[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$</validator>
            </param>
            <param name="new_password" type="text" label="Choose a password">
                <validator type="regex" message="String not valid">[a-zA-Z0-9_.]+$</validator>
            </param>
        </when>
    </conditional>
  </inputs>
  <outputs>
    <data format="gmql_user" name="login_guest_output" label="Guest - GMQL User" >
        <filter>user_ops['operation'] == 'login' and user_ops['auth']['log_type'] == 'guest'</filter>
        <actions>
            <action name="column_names" type="metadata" default="name,token,valid" />
        </actions>
    </data>
    <data format="gmql_user" name="login_user_output" label="${user_ops.auth.username.value} - GMQL User" >
        <filter>user_ops['operation'] == 'login' and user_ops['auth']['log_type'] == 'registered'</filter>
        <actions>
            <action name="column_names" type="metadata" default="name,token,valid" />
        </actions>
    </data>
    <data format="txt" name="logout_output" label="${user_ops.authToken.name.split()[0].rstrip('')} Logout Result" >
        <filter>user_ops['operation'] == 'logout'</filter>
    </data>
    <data format="gmql_user" name="register_output" label="${user_ops.new_username.value} - GMQL User">
        <filter>user_ops['operation'] == 'register'</filter>
        <actions>
            <action name="column_names" type="metadata" default="name,token,valid" />
        </actions>
    </data>
  </outputs>
  <tests>
      <test>
          <conditional name="user_ops">
              <param name="operation" value="login" />
              <param name="log_type" value="guest" />
          </conditional>
          <output name="login_guest_output">
              <assert_contents>
                  <has_n_columns n="3" />
                  <has_line_matching expression="Guest\t.+\tTrue" />
              </assert_contents>
          </output>
      </test>
  </tests>
  <help>
.. class:: warningmark

Every operation on a GMQL system requires to the user to be authenticated on it

----

**What it does**

A user can authenticate as a simple guest, or as a registered user. Once the user has logged in, a user token is
returned (as a gmql_user file). The user token is required by all the other tools to perform all their operations.
When a user logouts, the token is invalidated and cannot be used anymore.
  </help>
  <expand macro="citations" />
</tool>