Vue.component("User", {
template: `
Sind Sie sicher, dass Sie die Login-Informationen an {{ selectedUserForMail.email }} senden möchten?
`,
data: () => ({
window: window,
showSendMailModal: false,
selectedUserForMail: null,
isSendingMail: false,
}),
computed: {
canManageUsers() {
return window['TT_CONFIG']['CAN_MANAGE_USERS'] === true;
},
UserTableConfig() {
const headers = [
{text: "Username", key: "username", class: "text-center", sortable: false, priority: 20},
{text: "Name", key: "name", class: "text-center", sortable: false, priority: 18},
{text: "Firma", key: "address", class: "text-center", priority: 19},
{text: "E-Mail", key: "email", priority: 14},
{text: "Tel. Nr.", key: "mobile", priority: 17, filter: false, sortable: false},
{
text: "2FA", key: "twofactor", class: "text-center", priority: 16, filter: 'iconSelect', sortable: false,
filterOptions: [{value: "N/A", text: "N/A", icon: "fa fa-exclamation-triangle text-danger"},
{value: "Mail", text: "Mail", icon: "fa-light fa-envelope text-primary"},
{value: "SMS", text: "SMS", icon: "fa-light fa-mobile-retro text-info"}]
},
{
text: "Admin", key: "isAdmin", class: "text-center", priority: 13, filter: 'iconSelect', sortable: false,
filterOptions: [{value: true, text: "Ist Admin", icon: "fa-regular fa-circle-check text-success"},
{value: false, text: "Ist kein Admin", icon: "fa-regular fa-circle-xmark text-danger"}]
},
{
text: "Techniker", key: "isTechnician", class: "text-center", priority: 12, filter: 'iconSelect', sortable: false,
filterOptions: [{value: true, text: "Ist Techniker", icon: "fa-regular fa-circle-check text-success"},
{value: false, text: "Ist kein Techniker", icon: "fa-regular fa-circle-xmark text-danger"}],
},
{
text: "Aktiv", key: "isActive", class: "text-center", priority: 12, filter: 'iconSelect', sortable: false,
filterOptions: [{value: "1", text: "Ist Aktiv", icon: "fa-regular fa-circle-check text-success"},
{value: "0", text: "Ist nicht aktiv", icon: "fa-regular fa-circle-xmark text-danger"}],
},
];
if (this.canManageUsers) {
headers.push({text: "Aktionen", key: "actions", class: "text-center", sortable: false, priority: 21, filter: false});
}
return {
key: "UserTable",
tableHeader: "Benutzer",
defaultPageSize: 25,
headers: headers
};
}
},
methods: {
openSendMailModal(user) {
this.selectedUserForMail = user;
this.showSendMailModal = true;
},
async sendLoginEmail() {
if (!this.selectedUserForMail) return;
this.isSendingMail = true;
try {
const response = await axios.get(window.TT_CONFIG.SEND_LOGIN_EMAIL_URL + '?id=' + this.selectedUserForMail.id);
if (response.data.success) {
window.notify('success', response.data.message);
} else {
window.notify('error', response.data.message || 'E-Mail konnte nicht gesendet werden.');
}
} catch (error) {
window.notify('error', 'Ein Fehler ist aufgetreten.');
console.error(error);
}
this.isSendingMail = false;
this.showSendMailModal = false;
this.selectedUserForMail = null;
}
}
});