diff --git a/openbis_ng_ui/src/js/common/consts/objectType.js b/openbis_ng_ui/src/js/common/consts/objectType.js index b785167334b57f24e64a43071df43ccca953eb11..3e3d1bfcad1eef0cd92c75e2d68dff19386731dd 100644 --- a/openbis_ng_ui/src/js/common/consts/objectType.js +++ b/openbis_ng_ui/src/js/common/consts/objectType.js @@ -19,6 +19,7 @@ const USER = 'user' const USER_GROUP = 'userGroup' const DYNAMIC_PROPERTY_PLUGIN = 'dynamicPropertyPlugin' const ENTITY_VALIDATION_PLUGIN = 'entityValidationPlugin' +const PERSONAL_ACCESS_TOKEN = 'personalAccessToken' const QUERY = 'query' const HISTORY = 'history' const IMPORT = 'import' @@ -47,6 +48,7 @@ export default { USER_GROUP, DYNAMIC_PROPERTY_PLUGIN, ENTITY_VALIDATION_PLUGIN, + PERSONAL_ACCESS_TOKEN, QUERY, HISTORY, IMPORT, diff --git a/openbis_ng_ui/src/js/common/consts/routes.js b/openbis_ng_ui/src/js/common/consts/routes.js index 5b362e9e13eff3b42c10d7d2659f9a3e4a30f3e7..bd38ba0e716c1d5dd659c6cb0513415b8a0b0db1 100644 --- a/openbis_ng_ui/src/js/common/consts/routes.js +++ b/openbis_ng_ui/src/js/common/consts/routes.js @@ -214,6 +214,11 @@ const routes = { type: objectTypes.OVERVIEW, id: objectTypes.QUERY }), + PERSONAL_ACCESS_TOKEN_OVERVIEW: new Route('/personal-access-token-overview', { + page: pages.TOOLS, + type: objectTypes.OVERVIEW, + id: objectTypes.PERSONAL_ACCESS_TOKEN + }), HISTORY: new Route('/history/:id', { page: pages.TOOLS, type: objectTypes.HISTORY diff --git a/openbis_ng_ui/src/js/common/messages.js b/openbis_ng_ui/src/js/common/messages.js index 208b7da10abcb4d7633221a663c45a06098b358e..22f4c57b821f1f20f8bedb4cd86f2a6040ea19d7 100644 --- a/openbis_ng_ui/src/js/common/messages.js +++ b/openbis_ng_ui/src/js/common/messages.js @@ -1,5 +1,6 @@ // prettier-ignore const keys = { + ACCESS: 'ACCESS', ACTIONS: 'ACTIONS', ACTIVATE_USER: 'ACTIVATE_USER', ACTIVE: 'ACTIVE', @@ -142,6 +143,7 @@ const keys = { PARAMETERS: 'PARAMETERS', PARENTS: 'PARENTS', PASSWORD: 'PASSWORD', + PERSONAL_ACCESS_TOKENS: 'PERSONAL_ACCESS_TOKENS', PLAIN_TEXT: 'PLAIN_TEXT', PLUGIN: 'PLUGIN', PLUGIN_IS_DISABLED: 'PLUGIN_IS_DISABLED', @@ -236,6 +238,7 @@ const keys = { // prettier-ignore const messages_en = { + [keys.ACCESS]: 'Access', [keys.ACTIONS]: 'Actions', [keys.ACTIVATE_USER]: 'Activate user', [keys.ACTIVE]: 'Active', @@ -378,6 +381,7 @@ const messages_en = { [keys.PARAMETERS]: 'Parameters', [keys.PARENTS]: 'Parents', [keys.PASSWORD]: 'Password', + [keys.PERSONAL_ACCESS_TOKENS]: 'Personal Access Tokens', [keys.PLAIN_TEXT]: 'Plain Text', [keys.PLUGIN]: 'Plugin', [keys.PLUGIN_IS_DISABLED]: 'The plugin is disabled.', diff --git a/openbis_ng_ui/src/js/components/tools/Tools.jsx b/openbis_ng_ui/src/js/components/tools/Tools.jsx index 3c4ffc4664f0c0c86d8b30e440b6d5ea559e8458..54c4e47cef8530bd9e3b9ce253fb8b1b5a4c4442 100644 --- a/openbis_ng_ui/src/js/components/tools/Tools.jsx +++ b/openbis_ng_ui/src/js/components/tools/Tools.jsx @@ -9,6 +9,7 @@ import ToolBrowser from '@src/js/components/tools/browser/ToolBrowser.jsx' import ToolSearch from '@src/js/components/tools/search/ToolSearch.jsx' import PluginForm from '@src/js/components/tools/form/plugin/PluginForm.jsx' import QueryForm from '@src/js/components/tools/form/query/QueryForm.jsx' +import PersonalAccessTokenForm from '@src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx' import HistoryForm from '@src/js/components/tools/form/history/HistoryForm.jsx' import ImportForm from '@src/js/components/tools/form/import/ImportForm.jsx' import ImportType from '@src/js/components/tools/form/import/ImportType.js' @@ -61,7 +62,11 @@ class Tools extends React.PureComponent { } else if (object.type === objectType.SEARCH) { return <ToolSearch searchText={object.id} /> } else if (object.type === objectType.OVERVIEW) { - return <ToolSearch objectType={object.id} /> + if (object.id === objectType.PERSONAL_ACCESS_TOKEN) { + return <PersonalAccessTokenForm /> + } else { + return <ToolSearch objectType={object.id} /> + } } } @@ -79,6 +84,9 @@ class Tools extends React.PureComponent { messages.ENTITY_VALIDATION_PLUGINS ), [objectType.QUERY]: messages.get(messages.QUERIES), + [objectType.PERSONAL_ACCESS_TOKEN]: messages.get( + messages.PERSONAL_ACCESS_TOKENS + ), [objectType.HISTORY]: messages.get(messages.HISTORY) } label = labels[object.id] diff --git a/openbis_ng_ui/src/js/components/tools/browser/ToolBrowserController.js b/openbis_ng_ui/src/js/components/tools/browser/ToolBrowserController.js index 116ca61754ee41189344812ad15768c839a949c8..6cce15f5d4670ce7900a6d33edd2963e4c9bac7c 100644 --- a/openbis_ng_ui/src/js/components/tools/browser/ToolBrowserController.js +++ b/openbis_ng_ui/src/js/components/tools/browser/ToolBrowserController.js @@ -108,6 +108,19 @@ export default class ToolBrowserController extends BrowserController { } ] + const accessNodes = [ + { + id: 'access/personalAccessTokens', + text: messages.get(messages.PERSONAL_ACCESS_TOKENS), + object: { + type: objectType.OVERVIEW, + id: objectType.PERSONAL_ACCESS_TOKEN + }, + canMatchFilter: true, + canRemove: false + } + ] + let nodes = [ { id: 'dynamicPropertyPlugins', @@ -153,6 +166,12 @@ export default class ToolBrowserController extends BrowserController { text: messages.get(messages.IMPORT), children: importNodes, canAdd: false + }, + { + id: 'access', + text: messages.get(messages.ACCESS), + children: accessNodes, + canAdd: false } ] diff --git a/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx b/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx new file mode 100644 index 0000000000000000000000000000000000000000..317a2a5c3e94b08292688aee459beae0a7b6d07b --- /dev/null +++ b/openbis_ng_ui/src/js/components/tools/form/pat/PersonalAccessTokenForm.jsx @@ -0,0 +1,9 @@ +import React from 'react' + +class PersonalAccessTokenForm extends React.PureComponent { + render() { + return <div>Personal Access Token Form</div> + } +} + +export default PersonalAccessTokenForm