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 @@
-
-
Name Access
+
+
Name Access
-
-
-
Permissions
+
+
Permissions
-
-
-
Passphrase
+
+
Passphrase
-
+
@@ -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.
-
-
- TESTING
-
-
-
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.
+
+
+
+
+
S3 Gateway
+
+
+ Generate S3 Gateway Credentials
+
+
+ By generating gateway credentials, you are opting in to Server-side encryption
+
+
+
+
+
Access Key
+
+
+
+
+
+
{{ gatewayCredentials.accessKeyId }}
+
+
+
+
Secret Key
+
+
+
+
+
+
{{ gatewayCredentials.secretKey }}
+
+
+
+
End Point
+
+
+
+
+
+
{{ gatewayCredentials.endpoint }}
+
+
+
+
+
+
+
+
+
+
+
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
-
-
-
-
-
-
-
- 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 }}
-
-
-
-
-
+
+ Generate S3 Gateway Credentials
+
@@ -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 {