To support generation of links to share between the internal (administrative) and external (participant) application, we decided to design it as follows.
A similar data model for each type supported, the three types supported are:
Team
Task
Multiple tasks
A link table will be created in the database for each type to ensure simplicity both in generating and controlling the process and in relation to fetching and translating the links in the external application.
To ensure that links are not regenerated and stored in the database multiple time we will implement functionality to generate hash codes for each link so it can be compared on regeneration and reused.
The hash code is the key that will be part of the link url ex.
https://<url to external web>/teamlink?id=<HashValue from DB>
https://<url to external web>/tasklink?id=<HashValue from DB>
https://<url to external web>/overviewlink?id=<HashValue from DB>
It will be parsed in the external application and in the external application there should always be shown a minimum amount of information on a unprotected route..
Three routes will be available
for a team
for a single task
for a task query
We will require login on protected route when “Register” button on task is clicked in the external web.
or when joining a team.
The link will usually be created in the internal application and can be shown in the external application in e.g. a team responsible can see the link to his/her team.
Where the functionality is available we will add a icon / button control to show/generate the link.
A details page for each type is in an unprotected route in the external web.