diff options
| author | Henry Jameson <me@hjkos.com> | 2020-05-03 17:36:12 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2020-05-03 17:36:12 +0300 |
| commit | 2e35289c3376881ca17b9330113c816a3327f245 (patch) | |
| tree | 02b6a16a7a496dfd9d023b6a4ac10f0dceecd9b7 /src/components/settings_modal/tabs/security.js | |
| parent | 9b349b40196778abe1a2cdb1d241d4c9572d305c (diff) | |
initial work on settings modal
Diffstat (limited to 'src/components/settings_modal/tabs/security.js')
| -rw-r--r-- | src/components/settings_modal/tabs/security.js | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/components/settings_modal/tabs/security.js b/src/components/settings_modal/tabs/security.js new file mode 100644 index 00000000..cc791b7a --- /dev/null +++ b/src/components/settings_modal/tabs/security.js @@ -0,0 +1,106 @@ +import ProgressButton from '../../progress_button/progress_button.vue' +import Checkbox from '../../checkbox/checkbox.vue' +import Mfa from '../../user_settings/mfa.vue' + +const Security = { + data () { + return { + newEmail: '', + changeEmailError: false, + changeEmailPassword: '', + changedEmail: false, + deletingAccount: false, + deleteAccountConfirmPasswordInput: '', + deleteAccountError: false, + changePasswordInputs: [ '', '', '' ], + changedPassword: false, + changePasswordError: false + } + }, + created () { + this.$store.dispatch('fetchTokens') + }, + components: { + ProgressButton, + Mfa, + Checkbox + }, + computed: { + user () { + return this.$store.state.users.currentUser + }, + pleromaBackend () { + return this.$store.state.instance.pleromaBackend + }, + oauthTokens () { + return this.$store.state.oauthTokens.tokens.map(oauthToken => { + return { + id: oauthToken.id, + appName: oauthToken.app_name, + validUntil: new Date(oauthToken.valid_until).toLocaleDateString() + } + }) + } + }, + methods: { + confirmDelete () { + this.deletingAccount = true + }, + deleteAccount () { + this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput }) + .then((res) => { + if (res.status === 'success') { + this.$store.dispatch('logout') + this.$router.push({ name: 'root' }) + } else { + this.deleteAccountError = res.error + } + }) + }, + changePassword () { + const params = { + password: this.changePasswordInputs[0], + newPassword: this.changePasswordInputs[1], + newPasswordConfirmation: this.changePasswordInputs[2] + } + this.$store.state.api.backendInteractor.changePassword(params) + .then((res) => { + if (res.status === 'success') { + this.changedPassword = true + this.changePasswordError = false + this.logout() + } else { + this.changedPassword = false + this.changePasswordError = res.error + } + }) + }, + changeEmail () { + const params = { + email: this.newEmail, + password: this.changeEmailPassword + } + this.$store.state.api.backendInteractor.changeEmail(params) + .then((res) => { + if (res.status === 'success') { + this.changedEmail = true + this.changeEmailError = false + } else { + this.changedEmail = false + this.changeEmailError = res.error + } + }) + }, + logout () { + this.$store.dispatch('logout') + this.$router.replace('/') + }, + revokeToken (id) { + if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) { + this.$store.dispatch('revokeToken', id) + } + } + } +} + +export default Security |
