summaryrefslogtreecommitdiffstats
path: root/apps/settings/src
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-08-02 02:03:19 +0200
committerCarl Schwan <carl@carlschwan.eu>2022-08-31 17:42:36 +0200
commit60c42914d8d4ef815b239cb3b83ee682e56c5c22 (patch)
tree9c59af0633281c8422947c58e8c71706a921b320 /apps/settings/src
parentb617f3983a8152f2da018ddba6936dd8381a1f20 (diff)
downloadnextcloud-server-60c42914d8d4ef815b239cb3b83ee682e56c5c22.tar.gz
nextcloud-server-60c42914d8d4ef815b239cb3b83ee682e56c5c22.zip
Port password settings to vue
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/settings/src')
-rw-r--r--apps/settings/src/components/PasswordSection.vue98
-rw-r--r--apps/settings/src/main-personal-password.js36
2 files changed, 134 insertions, 0 deletions
diff --git a/apps/settings/src/components/PasswordSection.vue b/apps/settings/src/components/PasswordSection.vue
new file mode 100644
index 00000000000..b68de0365e0
--- /dev/null
+++ b/apps/settings/src/components/PasswordSection.vue
@@ -0,0 +1,98 @@
+<!--
+ - @copyright 2022 Carl Schwan <carl@carlschwan.eu>
+ -
+ - @license GNU AGPL version 3 or any later version
+ -
+ - This program is free software: you can redistribute it and/or modify
+ - it under the terms of the GNU Affero General Public License as
+ - published by the Free Software Foundation, either version 3 of the
+ - License, or (at your option) any later version.
+ -
+ - This program is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ - GNU Affero General Public License for more details.
+ -
+ - You should have received a copy of the GNU Affero General Public License
+ - along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+<template>
+ <NcSettingsSection :title="t('settings', 'Password')">
+ <form id="passwordform" method="POST" @submit.prevent="changePassword">
+ <NcPasswordField id="old-pass"
+ :label="t('settings', 'Current password')"
+ :label-visible="true"
+ name="oldpassword"
+ :value.sync="oldPass"
+ autocomplete="current-password"
+ autocapitalize="none"
+ autocorrect="off" />
+
+ <NcPasswordField id="new-pass"
+ :label="t('settings', 'New password')"
+ :label-visible="true"
+ :value.sync="newPass"
+ :maxlength="469"
+ autocomplete="new-password"
+ autocapitalize="none"
+ autocorrect="off"
+ :check-password-strength="true" />
+
+ <NcButton type="primary"
+ native-type="submit"
+ :disabled="newPass.length === 0 || oldPass.length === 0">
+ {{ t('settings', 'Change password') }}
+ </NcButton>
+ </form>
+ </NcSettingsSection>
+</template>
+
+<script>
+import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'
+import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
+import NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'
+import axios from '@nextcloud/axios'
+import { generateUrl } from '@nextcloud/router'
+import { showSuccess, showError } from '@nextcloud/dialogs'
+
+export default {
+ name: 'PasswordSection',
+ components: {
+ NcSettingsSection,
+ NcButton,
+ NcPasswordField,
+ },
+ data() {
+ return {
+ oldPass: '',
+ newPass: '',
+ }
+ },
+ methods: {
+ changePassword() {
+ axios.post(generateUrl('/settings/personal/changepassword'), {
+ oldpassword: this.oldPass,
+ newpassword: this.newPass,
+ })
+ .then(res => res.data)
+ .then(data => {
+ if (data.status === 'error') {
+ this.errorMessage = data.data.message
+ showError(data.data.message)
+ } else {
+ showSuccess(data.data.message)
+ }
+ })
+ },
+ },
+}
+</script>
+
+<style>
+ #passwordform {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ max-width: 400px;
+ }
+</style>
diff --git a/apps/settings/src/main-personal-password.js b/apps/settings/src/main-personal-password.js
new file mode 100644
index 00000000000..cd27832a7df
--- /dev/null
+++ b/apps/settings/src/main-personal-password.js
@@ -0,0 +1,36 @@
+/**
+ * @copyright 2022 Carl Schwan <carl@carlschwan.eu>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+import Vue from 'vue'
+
+import PasswordSection from './components/PasswordSection.vue'
+import { translate as t, translatePlural as n } from '@nextcloud/l10n'
+
+// eslint-disable-next-line camelcase
+__webpack_nonce__ = btoa(OC.requestToken)
+
+Vue.prototype.t = t
+Vue.prototype.n = n
+
+export default new Vue({
+ el: '#security-password',
+ name: 'main-personal-password',
+ render: h => h(PasswordSection),
+})