diff --git a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/user/AnonymousUserRequestNewApiTokenRestController.java b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/user/AnonymousUserRequestNewApiTokenRestController.java
index ad7697515..8a3d0d160 100644
--- a/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/user/AnonymousUserRequestNewApiTokenRestController.java
+++ b/sechub-administration/src/main/java/com/mercedesbenz/sechub/domain/administration/user/AnonymousUserRequestNewApiTokenRestController.java
@@ -14,7 +14,7 @@
import com.mercedesbenz.sechub.sharedkernel.usecases.user.UseCaseUserRequestsNewApiToken;
/**
- * Request new api token by a given onetimetoken. Can be done anonymous
+ * Request new api token by a given email address. Can be done anonymously
*
* @author Albert Tregnaghi
*
diff --git a/sechub-openapi-java/src/main/resources/openapi.yaml b/sechub-openapi-java/src/main/resources/openapi.yaml
index 3e9917cf1..bb8f225c6 100644
--- a/sechub-openapi-java/src/main/resources/openapi.yaml
+++ b/sechub-openapi-java/src/main/resources/openapi.yaml
@@ -2684,25 +2684,6 @@ paths:
## User Self Service ##
#######################
- /api/anonymous/apitoken/{oneTimeToken}:
- get:
- summary: User clicks link to get new api token
- description: User clicks link to get new api token
- operationId: anonymousGetNewApiTokenByOneTimeToken
- parameters:
- - name: oneTimeToken
- description: A one time token the user has got by a previous mail from SecHub server
- in: path
- required: true
- schema:
- type: string
- responses:
- "200":
- description: "Answer containing the new api token or error message if request could not be fulfilled"
- security: [ ]
- tags:
- - User Self Service
-
/api/management/user:
get:
summary: User fetches his user details
@@ -3230,6 +3211,25 @@ paths:
tags:
- Sign Up
+ /api/anonymous/apitoken/{oneTimeToken}:
+ get:
+ summary: User clicks link to get new api token
+ description: User clicks link to get new api token
+ operationId: anonymousGetNewApiTokenByOneTimeToken
+ parameters:
+ - name: oneTimeToken
+ description: A one time token the user has got by a previous mail from SecHub server
+ in: path
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: "Answer containing the new api token or error message if request could not be fulfilled"
+ security: [ ]
+ tags:
+ - Sign Up
+
/api/anonymous/refresh/apitoken/{emailAddress}:
post:
summary: User requests new API token
diff --git a/sechub-shared-kernel/src/main/java/com/mercedesbenz/sechub/sharedkernel/usecases/user/UseCaseUserClicksLinkToGetNewAPIToken.java b/sechub-shared-kernel/src/main/java/com/mercedesbenz/sechub/sharedkernel/usecases/user/UseCaseUserClicksLinkToGetNewAPIToken.java
index 4c6c6c00c..35abde0ee 100644
--- a/sechub-shared-kernel/src/main/java/com/mercedesbenz/sechub/sharedkernel/usecases/user/UseCaseUserClicksLinkToGetNewAPIToken.java
+++ b/sechub-shared-kernel/src/main/java/com/mercedesbenz/sechub/sharedkernel/usecases/user/UseCaseUserClicksLinkToGetNewAPIToken.java
@@ -17,7 +17,7 @@
@Retention(RetentionPolicy.RUNTIME)
@UseCaseDefinition(
id=UC_USER_CLICKS_LINK_TO_GET_NEW_API_TOKEN,
- group=UseCaseGroup.USER_SELF_SERVICE,
+ group=UseCaseGroup.SIGN_UP,
apiName="userClicksLinkToGetNewAPIToken",
title="User clicks link to get new api token",
description="user/clicks_link_to_get_new_api_token.adoc")
diff --git a/sechub-web-ui/src/components.d.ts b/sechub-web-ui/src/components.d.ts
index 14290748d..bde3887e7 100644
--- a/sechub-web-ui/src/components.d.ts
+++ b/sechub-web-ui/src/components.d.ts
@@ -1,4 +1,3 @@
-// SPDX-License-Identifier: MIT
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
@@ -19,5 +18,6 @@ declare module 'vue' {
ScanCreate: typeof import('./components/ScanCreate.vue')['default']
ScanFileUpload: typeof import('./components/ScanFileUpload.vue')['default']
ScanTypeSelect: typeof import('./components/ScanTypeSelect.vue')['default']
+ UserDetailInformation: typeof import('./components/UserDetailInformation.vue')['default']
}
}
diff --git a/sechub-web-ui/src/components/AppHeader.vue b/sechub-web-ui/src/components/AppHeader.vue
index ab9798f51..55e5ccafa 100644
--- a/sechub-web-ui/src/components/AppHeader.vue
+++ b/sechub-web-ui/src/components/AppHeader.vue
@@ -44,7 +44,7 @@
-->
-
+
@@ -54,7 +54,14 @@
diff --git a/sechub-web-ui/src/i18n/locales/en.json b/sechub-web-ui/src/i18n/locales/en.json
index 972d25dcc..89b4f3fe2 100644
--- a/sechub-web-ui/src/i18n/locales/en.json
+++ b/sechub-web-ui/src/i18n/locales/en.json
@@ -16,6 +16,19 @@
"JOB_TABLE_DOWNLOAD_HTML_REPORT": "HTML Report",
"JOB_TABLE_DOWNLOAD_JSON_REPORT": "JSON Report",
"JOB_TABLE_DOWNLOAD_JOBUUID": "Job UUID",
+ "USER_TITLE": "User Profile",
+ "USER_ID": "User ID",
+ "USER_EMAIL": "Email",
+ "USER_SETTINGS": "Settings",
+ "USER_SETTINGS_CHANGE_PASSWORD": "Change Password (disabled)",
+ "USER_SETTINGS_REQUEST_NEW_API_TOKEN": "Request New API Token",
+ "USER_SETTINGS_REQUEST_NEW_API_TOKEN_DIALOG_TITLE": "Request Successful",
+ "USER_SETTINGS_REQUEST_NEW_API_TOKEN_DIALOG_TEXT": "Your new API token has been successfully created and sent to your configured email.",
+ "USER_SETTINGS_REQUEST_NEW_API_TOKEN_DIALOG_CLOSE": "Close",
+ "USER_SUPPORT_TITLE": "Support",
+ "USER_SUPPORT_WEBSITE": "SecHub Website",
+ "USER_SUPPORT_GITHUB": "SecHub GitHub Repository",
+ "USER_SUPPORT_EMAIL": "Support Email",
"PROJECT_DETAILS_TITLE": "Project",
"PROJECT_DETAILS_OWNER": "Owner",
"PROJECT_DETAILS_MEMBERS": "Members",
diff --git a/sechub-web-ui/src/pages/user/index.vue b/sechub-web-ui/src/pages/user/index.vue
new file mode 100644
index 000000000..343907ab6
--- /dev/null
+++ b/sechub-web-ui/src/pages/user/index.vue
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/sechub-web-ui/src/services/defaultClient.ts b/sechub-web-ui/src/services/defaultClient.ts
index ca5bb7b18..15dda6ee7 100644
--- a/sechub-web-ui/src/services/defaultClient.ts
+++ b/sechub-web-ui/src/services/defaultClient.ts
@@ -1,5 +1,7 @@
// SPDX-License-Identifier: MIT
import configurationApi from './configurationService'
+import userSelfServiceApi from './userSelfServiceApi'
+import signUpApi from './signUpApi'
import projectApi from './productAdministrationService'
import systemApi from './systemApiService'
import otherApi from './otherService'
@@ -8,6 +10,8 @@ import scanService from './executionService/ScanService'
const defaultClient = {
withProjectApi: projectApi,
+ withSignUpApi: signUpApi,
+ withUserSelfServiceApi: userSelfServiceApi,
withSystemApi: systemApi,
withConfigurationApi: configurationApi,
withOtherApi: otherApi,
diff --git a/sechub-web-ui/src/services/signUpApi.ts b/sechub-web-ui/src/services/signUpApi.ts
new file mode 100644
index 000000000..74cc9daaa
--- /dev/null
+++ b/sechub-web-ui/src/services/signUpApi.ts
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: MIT
+import { SignUpApi } from '@/generated-sources/openapi'
+import apiConfig from './configuration'
+
+const signUpApi = new SignUpApi(apiConfig)
+
+export default signUpApi
diff --git a/sechub-web-ui/src/services/userSelfServiceApi.ts b/sechub-web-ui/src/services/userSelfServiceApi.ts
new file mode 100644
index 000000000..786029eb0
--- /dev/null
+++ b/sechub-web-ui/src/services/userSelfServiceApi.ts
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: MIT
+import { UserSelfServiceApi } from '@/generated-sources/openapi'
+import apiConfig from './configuration'
+
+const userSelfServiceApi = new UserSelfServiceApi(apiConfig)
+
+export default userSelfServiceApi
diff --git a/sechub-web-ui/src/styles/settings.scss b/sechub-web-ui/src/styles/settings.scss
index 3e36a279b..2623a2231 100644
--- a/sechub-web-ui/src/styles/settings.scss
+++ b/sechub-web-ui/src/styles/settings.scss
@@ -8,3 +8,21 @@
// @use 'vuetify/settings' with (
// $color-pack: false
// );
+
+.v-list-item__spacer {
+ width: 0 !important;
+}
+
+.v-list-item .v-list-item__prepend {
+ padding-top: 0 !important;
+}
+
+.v-container v-locale--is-ltr {
+ padding-left: 0 !important;
+}
+
+.v-list-item__content {
+ .v-locale--is-ltr {
+ margin-left: 0 !important;
+ }
+}
\ No newline at end of file
diff --git a/sechub-web-ui/src/typed-router.d.ts b/sechub-web-ui/src/typed-router.d.ts
index a75be2f18..8963b7f7b 100644
--- a/sechub-web-ui/src/typed-router.d.ts
+++ b/sechub-web-ui/src/typed-router.d.ts
@@ -1,4 +1,3 @@
-// SPDX-License-Identifier: MIT
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
@@ -22,5 +21,6 @@ declare module 'vue-router/auto-routes' {
'/': RouteRecordInfo<'/', '/', Record, Record>,
'/[id]/': RouteRecordInfo<'/[id]/', '/:id', { id: ParamValue }, { id: ParamValue }>,
'/[id]/scan': RouteRecordInfo<'/[id]/scan', '/:id/scan', { id: ParamValue }, { id: ParamValue }>,
+ '/user/': RouteRecordInfo<'/user/', '/user', Record, Record>,
}
}