Files
yourpart3/frontend/src/dialogues/standard/ContactDialog.vue
Torsten Schulz (local) d6bfe50b4e Änderung: Erweiterung der Benutzerkontoeinstellungen und Verbesserung der E-Mail-Verschlüsselung
Ä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.
2025-09-15 11:48:00 +02:00

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>