diff --git a/web/satellite/src/components/accessGrants/ProgressBar.vue b/web/satellite/src/components/accessGrants/ProgressBar.vue index f34af557b..391ca7ccb 100644 --- a/web/satellite/src/components/accessGrants/ProgressBar.vue +++ b/web/satellite/src/components/accessGrants/ProgressBar.vue @@ -4,24 +4,25 @@ @@ -59,6 +60,13 @@ export default class ProgressBar extends Vue { public get isResultStep(): boolean { return this.$route.name === RouteConfig.ResultStep.name || this.$route.name === RouteConfig.AccessGrantResult.name; } + + /** + * Indicates if current route is on gateway step. + */ + public get isGatewayStep(): boolean { + return this.$route.name === RouteConfig.GatewayStep.name || this.$route.name === RouteConfig.AccessGrantGateway.name; + } } @@ -70,19 +78,18 @@ export default class ProgressBar extends Vue { align-items: flex-start; justify-content: flex-start; background: #f5f6fa; - height: 380px; border-radius: 6px 0 0 6px; &__item { display: flex; align-items: center; - &__circle { - width: 20px; - height: 20px; - border-radius: 10px; + &__line { + width: 7px; + height: 75px; + border-radius: 40px; background: #dcdde1; - margin-right: 10px; + margin-right: 20px; } &__label { @@ -95,13 +102,6 @@ export default class ProgressBar extends Vue { white-space: nowrap; } } - - &__progress { - background: #dcdde1; - width: 4px; - height: 33%; - margin-left: 8px; - } } .checked { diff --git a/web/satellite/src/components/accessGrants/steps/CreateAccessNameStep.vue b/web/satellite/src/components/accessGrants/steps/CreateAccessNameStep.vue deleted file mode 100644 index 099d03506..000000000 --- a/web/satellite/src/components/accessGrants/steps/CreateAccessNameStep.vue +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2020 Storj Labs, Inc. -// See LICENSE for copying information. - - - - diff --git a/web/satellite/src/components/accessGrants/steps/CreateAccessPassphraseStep.vue b/web/satellite/src/components/accessGrants/steps/CreateAccessPassphraseStep.vue deleted file mode 100644 index 338dbd2ff..000000000 --- a/web/satellite/src/components/accessGrants/steps/CreateAccessPassphraseStep.vue +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2020 Storj Labs, Inc. -// See LICENSE for copying information. - - - - diff --git a/web/satellite/src/components/accessGrants/steps/CreateAccessPermissionsStep.vue b/web/satellite/src/components/accessGrants/steps/CreateAccessPermissionsStep.vue deleted file mode 100644 index e9baf8c13..000000000 --- a/web/satellite/src/components/accessGrants/steps/CreateAccessPermissionsStep.vue +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (C) 2020 Storj Labs, Inc. -// See LICENSE for copying information. - - - - diff --git a/web/satellite/src/components/accessGrants/steps/CreateAccessUplinkStep.vue b/web/satellite/src/components/accessGrants/steps/CreateAccessUplinkStep.vue deleted file mode 100644 index e5f0c9acf..000000000 --- a/web/satellite/src/components/accessGrants/steps/CreateAccessUplinkStep.vue +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (C) 2020 Storj Labs, Inc. -// See LICENSE for copying information. - - - diff --git a/web/satellite/src/components/accessGrants/steps/GatewayStep.vue b/web/satellite/src/components/accessGrants/steps/GatewayStep.vue new file mode 100644 index 000000000..03b0d4b0b --- /dev/null +++ b/web/satellite/src/components/accessGrants/steps/GatewayStep.vue @@ -0,0 +1,389 @@ +// Copyright (C) 2021 Storj Labs, Inc. +// See LICENSE for copying information. + + + + + + diff --git a/web/satellite/src/components/accessGrants/steps/ResultStep.vue b/web/satellite/src/components/accessGrants/steps/ResultStep.vue index 14e96e300..79084e195 100644 --- a/web/satellite/src/components/accessGrants/steps/ResultStep.vue +++ b/web/satellite/src/components/accessGrants/steps/ResultStep.vue @@ -27,86 +27,16 @@ /> -
-
-

Gateway Credentials

- - -
-
-
-

This feature is currently in Beta

- - Learn More > - -
-
-

- Using Gateway Credentials Enables Server-Side Encryption. -

-

- By generating gateway credentials, you are opting in to Server-side encryption -

- -
-
-

Access Key

-
-

{{ gatewayCredentials.accessKeyId }}

- -
-

Secret Key

-
-

{{ gatewayCredentials.secretKey }}

- -
-

End Point

-
-

{{ gatewayCredentials.endpoint }}

- -
-
-
-
+ @@ -121,9 +51,6 @@ import ExpandIcon from '@/../static/images/common/BlackArrowExpand.svg'; import HideIcon from '@/../static/images/common/BlackArrowHide.svg'; import { RouteConfig } from '@/router'; -import { ACCESS_GRANTS_ACTIONS } from '@/store/modules/accessGrants'; -import { GatewayCredentials } from '@/types/accessGrants'; -import { SegmentEvent } from '@/utils/constants/analyticsEventNames'; import { MetaUtils } from '@/utils/meta'; @Component({ @@ -140,10 +67,7 @@ export default class ResultStep extends Vue { private restrictedKey: string = ''; public access: string = ''; - public isGatewayDropdownVisible: boolean = false; - public areGatewayCredentialsVisible: boolean = false; - public areKeysVisible: boolean = false; - public isLoading: boolean = false; + public isGatewayLinkVisible: boolean = false; /** * Lifecycle hook after initial render. @@ -161,14 +85,7 @@ export default class ResultStep extends Vue { this.restrictedKey = this.$route.params.restrictedKey; const requestURL = MetaUtils.getMetaContent('gateway-credentials-request-url'); - if (requestURL) this.isGatewayDropdownVisible = true; - } - - /** - * Toggles gateway credentials section visibility. - */ - public toggleCredentialsVisibility(): void { - this.areGatewayCredentialsVisible = !this.areGatewayCredentialsVisible; + if (requestURL) this.isGatewayLinkVisible = true; } /** @@ -180,33 +97,6 @@ export default class ResultStep extends Vue { this.$notify.success('Token was copied successfully'); } - /** - * Holds on copy access key button click logic. - * Copies key to clipboard. - */ - public onCopyAccessClick(): void { - this.$copyText(this.gatewayCredentials.accessKeyId); - this.$notify.success('Key was copied successfully'); - } - - /** - * Holds on copy secret key button click logic. - * Copies secret to clipboard. - */ - public onCopySecretClick(): void { - this.$copyText(this.gatewayCredentials.secretKey); - this.$notify.success('Secret was copied successfully'); - } - - /** - * Holds on copy endpoint button click logic. - * Copies endpoint to clipboard. - */ - public onCopyEndpointClick(): void { - this.$copyText(this.gatewayCredentials.endpoint); - this.$notify.success('Endpoint was copied successfully'); - } - /** * Holds on back button click logic. * Redirects to previous step. @@ -254,30 +144,31 @@ export default class ResultStep extends Vue { } /** - * Holds on generate credentials button click logic. - * Generates gateway credentials. + * Holds on link click logic. + * Proceed to gateway step. */ - public async onGenerateCredentialsClick(): Promise { - this.isLoading = true; - - try { - await this.$store.dispatch(ACCESS_GRANTS_ACTIONS.GET_GATEWAY_CREDENTIALS, {accessGrant: this.access}); - - await this.$notify.success('Gateway credentials were generated successfully'); - this.areKeysVisible = true; - - const satelliteName: string = MetaUtils.getMetaContent('satellite-name'); - - this.$segment.track(SegmentEvent.GENERATE_GATEWAY_CREDENTIALS_CLICKED, { - satelliteName: satelliteName, - email: this.$store.getters.user.email, + public navigateToGatewayStep(): void { + if (this.isOnboardingTour) { + this.$router.push({ + name: RouteConfig.OnboardingTour.with(RouteConfig.AccessGrant.with(RouteConfig.AccessGrantGateway)).name, + params: { + access: this.access, + key: this.key, + restrictedKey: this.restrictedKey, + }, }); - this.isLoading = false; - } catch (error) { - await this.$notify.error(error.message); - this.isLoading = false; + return; } + + this.$router.push({ + name: RouteConfig.AccessGrants.with(RouteConfig.CreateAccessGrant.with(RouteConfig.GatewayStep)).name, + params: { + access: this.access, + key: this.key, + restrictedKey: this.restrictedKey, + }, + }); } /** @@ -287,13 +178,6 @@ export default class ResultStep extends Vue { return this.$route.path.includes(RouteConfig.OnboardingTour.path); } - /** - * Returns generated gateway credentials from store. - */ - public get gatewayCredentials(): GatewayCredentials { - return this.$store.state.accessGrantsModule.gatewayCredentials; - } - /** * Returns amount of access grants from store. */ @@ -398,130 +282,26 @@ export default class ResultStep extends Vue { } } - &__gateway-area { - display: flex; - flex-direction: column; - align-items: center; - width: 100%; - - &__toggle { - display: flex; - align-items: center; - cursor: pointer; - justify-content: center; - - &__label { - font-family: 'font_bold', sans-serif; - font-size: 16px; - line-height: 23px; - color: #49515c; - margin: 0 15px 0 0; - } - } - - &__container { - width: 100%; - - &__beta { - background-color: #effff9; - border: 1px solid #1a9666; - border-radius: 6px; - display: flex; - align-items: center; - justify-content: space-between; - padding: 12px 20px; - margin-top: 20px; - - &__message { - font-weight: bold; - font-size: 14px; - line-height: 19px; - color: #000; - margin: 0; - } - - &__link { - font-weight: bold; - font-size: 14px; - line-height: 19px; - color: #1a9666; - } - } - - &__warning { - margin-top: 20px; - background: #f5f6fa; - border-radius: 6px; - padding: 40px 50px; - width: calc(100% - 100px); - - &__title { - font-family: 'font_bold', sans-serif; - font-size: 18px; - line-height: 24px; - color: #000; - margin: 0 0 20px 0; - text-align: center; - } - - &__disclaimer { - font-size: 16px; - line-height: 28px; - color: #000; - margin: 0 0 25px 0; - text-align: center; - } - } - - &__keys-area { - display: flex; - flex-direction: column; - align-items: flex-start; - - &__label { - font-family: 'font_bold', sans-serif; - font-size: 16px; - line-height: 21px; - color: #354049; - margin: 20px 0 10px 0; - } - - &__key { - display: flex; - align-items: center; - justify-content: space-between; - border-radius: 9px; - padding: 10px; - width: calc(100% - 20px); - border: 1px solid rgba(56, 75, 101, 0.4); - - &__value { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - margin: 0; - } - - &__button { - min-width: 66px; - min-height: 30px; - margin-left: 10px; - } - } - } - } - } - &__done-button { margin-top: 20px; } + + &__gateway-link { + font-weight: 600; + font-size: 16px; + line-height: 23px; + text-align: center; + color: #0068dc; + margin: 30px 0 0 0; + cursor: pointer; + + &:hover { + text-decoration: underline; + } + } } .border-radius { border-radius: 6px; } - - .extra-margin-top { - margin-top: 76px; - } diff --git a/web/satellite/src/components/onboardingTour/steps/CreateAccessGrantStep.vue b/web/satellite/src/components/onboardingTour/steps/CreateAccessGrantStep.vue index f1c0b9231..a0c48c589 100644 --- a/web/satellite/src/components/onboardingTour/steps/CreateAccessGrantStep.vue +++ b/web/satellite/src/components/onboardingTour/steps/CreateAccessGrantStep.vue @@ -90,7 +90,7 @@ export default class CreateAccessGrantStep extends Vue { display: flex; align-items: center; justify-content: center; - margin-left: -195px; + margin-left: -205px; } } @@ -99,11 +99,11 @@ export default class CreateAccessGrantStep extends Vue { } .passphrase-margin { - margin-left: -180px; + margin-left: -190px; } .result-margin { - margin-left: -175px; + margin-left: -195px; } .cli-margin { diff --git a/web/satellite/src/components/project/ProjectDashboard.vue b/web/satellite/src/components/project/ProjectDashboard.vue index e8f8e4eac..ce81eb7d1 100644 --- a/web/satellite/src/components/project/ProjectDashboard.vue +++ b/web/satellite/src/components/project/ProjectDashboard.vue @@ -81,7 +81,7 @@ export default class ProjectDashboard extends Vue {