From 08547a7732777d61e2ec17c16163eb2040adaba5 Mon Sep 17 00:00:00 2001 From: Tyler Chen Date: Mon, 10 Aug 2020 11:57:05 +0000 Subject: [PATCH] Implement adding SSH keys (#35) Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement adding ssh key Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout fix: showing default values Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement selector placeholders and default values Merge branch 'feat/ui-layout' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout fix: getting user information after setting payment method Merge branch 'master' into feat/ui-layout feat: implement setting payment plan in payment page feat: populate options for advanced settings modal fix: remove showing advanced settings modal when loading the page feat: implement Advanced Settings Modal layout feat: implement modal and selector components feat: implement launch bubble screen Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement add stripe card feat: implement login process Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement payment page feat: implement mail verification screen Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: prevent registration when the configs.allowRegistration is set to false fix: weird routing Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement actual pages Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: api integration for register page fix: messages feat: api integration for forget-password page fix: login title and password placeholder feat: disable button until get response Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: integrate api for new login page feat: implement responsive header feat: implement checkbox Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout fix: checkbox event issue feat: implement register page feat: implement registration page Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement UI for forgot-password Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement new login page feat: implement input shared component Merge branch 'master' of git.bubblev.org:bubblev/bubble-web into feat/ui-layout feat: implement auth header Co-authored-by: Tyler Co-authored-by: jonathan Reviewed-on: https://git.bubblev.org/bubblev/bubble-web/pulls/35 --- package-lock.json | 5 + package.json | 1 + src/_components/modals/AddSshKey.vue | 200 ++++++++++++++++++++ src/_components/modals/AdvancedSettings.vue | 44 ++++- src/_components/shared/Button.vue | 8 + src/_components/shared/Input.vue | 5 + src/_pages/auth/ForgotPassword.vue | 1 + src/_pages/auth/Register.vue | 4 + src/_scss/components/_form.scss | 1 - src/_store/users.module.js | 2 +- 10 files changed, 263 insertions(+), 8 deletions(-) create mode 100644 src/_components/modals/AddSshKey.vue diff --git a/package-lock.json b/package-lock.json index b30a3d6..3cd4581 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7810,6 +7810,11 @@ "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", "dev": true }, + "vuejs-datepicker": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vuejs-datepicker/-/vuejs-datepicker-1.6.2.tgz", + "integrity": "sha512-PkC4vxzFBo7i6FSCUAJfnaWOx6VkKbOqxijSGHHlWxh8FIUKEZVtFychkonVWtK3iwWfhmYtqHcwsmgxefLpLQ==" + }, "vuelidate": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.5.tgz", diff --git a/package.json b/package.json index 140efbc..d4060ee 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "vue-select": "^3.10.7", "vue-snotify": "^3.2.1", "vue-spinner": "^1.0.4", + "vuejs-datepicker": "^1.6.2", "vuelidate": "^0.7.5", "vuex": "^3.1.1" }, diff --git a/src/_components/modals/AddSshKey.vue b/src/_components/modals/AddSshKey.vue new file mode 100644 index 0000000..88a5f4d --- /dev/null +++ b/src/_components/modals/AddSshKey.vue @@ -0,0 +1,200 @@ + + + + + + diff --git a/src/_components/modals/AdvancedSettings.vue b/src/_components/modals/AdvancedSettings.vue index 6886d9e..5d49534 100644 --- a/src/_components/modals/AdvancedSettings.vue +++ b/src/_components/modals/AdvancedSettings.vue @@ -95,14 +95,29 @@
- + +
-

@@ -118,7 +133,7 @@ class="form-group mt-4 d-flex justify-content-center align-items-center" >

-
@@ -129,6 +144,7 @@
+ @@ -165,11 +181,14 @@ import { util } from '~/_helpers'; import { Button, Input, Checkbox } from '../shared'; +import AddSSHKeyModal from './AddSshKey'; + export default { components: { Button, Input, Checkbox, + AddSSHKeyModal, }, data: () => ({ @@ -199,6 +218,7 @@ export default { ...mapState('domains', ['domains']), ...mapState('networks', ['nearestRegions']), ...mapState('footprints', ['footprints']), + ...mapState('users', ['sshKeys']), timezoneObjects: function() { const tz_objects = []; @@ -237,6 +257,7 @@ export default { ...mapActions('domains', ['getAllDomains']), ...mapActions('networks', ['getNearestRegions']), ...mapActions('footprints', ['getAllFootprints']), + ...mapActions('users', ['listSshKeysByUserId']), show() { this.$modal.show('advanced-settings'); @@ -245,6 +266,10 @@ export default { this.$modal.hide('advanced-settings'); }, + addSSHKey() { + this.$refs.sshKeyModal.show(); + }, + initDefaults() { const currentUser = util.currentUser(); @@ -263,6 +288,7 @@ export default { messages: this.messages, errors: this.errors, }); + this.onUpdateSSH(); }, findRegion(uuid) { @@ -300,11 +326,19 @@ export default { this.messages['tz_description_' + tz] ); }, + + onUpdateSSH() { + const currentUser = util.currentUser(); + this.listSshKeysByUserId({ + userId: currentUser.uuid, + messages: this.messages, + errors: this.errors, + }); + }, }, mounted() { this.initDefaults(); - this.show(); }, watch: { @@ -352,9 +386,7 @@ export default { } } }, - }, - watch: { domains(doms) { if (doms && doms[0]) { if (this.accountPlan.domain == null || this.accountPlan.domain === '') diff --git a/src/_components/shared/Button.vue b/src/_components/shared/Button.vue index 6b771f5..460af33 100644 --- a/src/_components/shared/Button.vue +++ b/src/_components/shared/Button.vue @@ -12,7 +12,9 @@ }" :disabled="disabled" :style="cssVars" + @click="onClick" class="app-btn" + type="button" > @@ -148,5 +150,11 @@ export default { }; }, }, + + methods: { + onClick(e) { + this.$emit('click', e); + }, + }, }; diff --git a/src/_components/shared/Input.vue b/src/_components/shared/Input.vue index 673eb8d..574613b 100644 --- a/src/_components/shared/Input.vue +++ b/src/_components/shared/Input.vue @@ -18,6 +18,11 @@ export default { content: this.value, }; }, + watch: { + value(v) { + this.content = v; + } + }, methods: { handleInput(e) { this.$emit('input', this.content); diff --git a/src/_pages/auth/ForgotPassword.vue b/src/_pages/auth/ForgotPassword.vue index f577207..2d2397d 100644 --- a/src/_pages/auth/ForgotPassword.vue +++ b/src/_pages/auth/ForgotPassword.vue @@ -31,6 +31,7 @@