Änderungen: - Implementierung von neuen Methoden `getAccountSettings` und `setAccountSettings` im `SettingsService`, um Benutzerkontoeinstellungen zu verwalten. - Anpassung der E-Mail-Verschlüsselung im `User`-Modell zur Verwendung von Buffer für die Speicherung und zur Verbesserung der Fehlerbehandlung bei der Entschlüsselung. - Hinzufügung eines neuen `immutable`-Feldes im `UserParamType`-Modell, um unveränderliche Einstellungen zu kennzeichnen. - Anpassungen in den Frontend-Komponenten zur Berücksichtigung von unveränderlichen Feldern und zur Verbesserung der Benutzeroberfläche. Diese Anpassungen verbessern die Sicherheit der Benutzerdaten und erweitern die Funktionalität der Kontoeinstellungen.
94 lines
2.5 KiB
Vue
94 lines
2.5 KiB
Vue
<template>
|
|
<DialogWidget ref="dialog" title="contact.title" :isTitleTranslated="true" icon="contact24.png" :show-close="true"
|
|
:buttons="[{ text: 'Ok', action: 'save' }, { text: 'Cancel', action: 'close' }]" :modal="false" @save="save"
|
|
:width="'50em'" name="ContactDialog">
|
|
<table>
|
|
<tr>
|
|
<td>{{ $t("dialog.contact.email") }}</td>
|
|
<td><input type="email" v-model="email" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td>{{ $t("dialog.contact.name") }}</td>
|
|
<td><input type="text" v-model="name" /></td>
|
|
</tr>
|
|
</table>
|
|
<p>{{ $t("dialog.contact.message") }}</p>
|
|
<textarea v-model="message" rows="15" cols="80"></textarea>
|
|
<p>{{ $t("dialog.contact.accept") }}</p>
|
|
<label><input type="checkbox" v-model="acceptDataSave" />{{ $t("dialog.contact.acceptdatasave") }}</label>
|
|
<p>{{ $t("dialog.contact.accept2") }}</p>
|
|
<p v-if="error" class="error">{{ $t("dialog.contact.error." + error) }}</p>
|
|
</DialogWidget>
|
|
</template>
|
|
|
|
<script>
|
|
import DialogWidget from '../../components/DialogWidget.vue';
|
|
import apiClient from '@/utils/axios.js';
|
|
|
|
export default {
|
|
name: 'ContactDialog',
|
|
components: {
|
|
DialogWidget
|
|
},
|
|
data() {
|
|
return {
|
|
email: "",
|
|
name: "",
|
|
message: "",
|
|
acceptDataSave: false,
|
|
error: ""
|
|
};
|
|
},
|
|
methods: {
|
|
open(prefilledData = {}) {
|
|
// Verwende vorgefertigte Daten oder Standardwerte
|
|
this.email = prefilledData.email || "";
|
|
this.name = prefilledData.name || "";
|
|
this.message = prefilledData.message || "";
|
|
this.acceptDataSave = prefilledData.acceptDataSave || false;
|
|
this.error = "";
|
|
this.$refs.dialog.open();
|
|
},
|
|
async save() {
|
|
try {
|
|
const response = await apiClient.post('/api/contact', {
|
|
email: this.email,
|
|
name: this.name,
|
|
message: this.message,
|
|
acceptDataSave: this.acceptDataSave
|
|
});
|
|
this.$refs.dialog.close();
|
|
} catch (error) {
|
|
this.error = error;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style scoped>
|
|
p {
|
|
margin: 0px;
|
|
}
|
|
|
|
a {
|
|
color: #007bff;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
table,
|
|
tr,
|
|
td {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.error {
|
|
color: red;
|
|
}
|
|
</style>
|