Implement RADIUS user creation and update functionality in CPE provisioning

This commit is contained in:
2025-11-18 08:25:26 +01:00
parent b408f7fcf2
commit 9e56b8ee98
3 changed files with 316 additions and 34 deletions
@@ -111,6 +111,7 @@ Vue.component('Cpeprovisioning', {
<tt-button text="In Radius anlegen"
@click="createRadiusUser(item)"
:disabled="!isValidMac(item.cpe_data.mac)"
:loading="item.isCreatingRadius"
sm
additional-class="btn-primary" />
<tt-button text="ACS Auto VLAN Zuweisung testen"
@@ -244,6 +245,7 @@ Vue.component('Cpeprovisioning', {
...item,
isDirty: false,
isSaving: false,
isCreatingRadius: false,
pop_name: item.pop_name || 'N/A',
owner_address: `${item.owner_street || ''} ${item.owner_housenumber || ''}, ${item.owner_zip || ''} ${item.owner_city || ''}`,
owner_phone: item.owner_phone || '',
@@ -296,36 +298,27 @@ Vue.component('Cpeprovisioning', {
isVlanSelected(item) {
return item.vlans && Object.values(item.vlans).some(v => v.checked);
},
createRadiusUser(item) {
const message = {
type: "INITIATE_CREATE_RADIUS_USER",
payload: {
customerName: item.customer,
address: item.owner_full_address,
servicePin: item.spin,
routerMac: item.cpe_data.mac,
customerNumber: item.owner_customer_number
}
};
async createRadiusUser(item) {
// Disable button during request
this.$set(item, 'isCreatingRadius', true);
if (window.chrome && chrome.runtime && chrome.runtime.sendMessage) {
try {
chrome.runtime.sendMessage(this.extensionId, message, (response) => {
if (chrome.runtime.lastError) {
console.warn("Senden an Erweiterung fehlgeschlagen:", chrome.runtime.lastError.message);
window.notify('warning', 'Daten konnten nicht an die Erweiterung gesendet werden. (Drücke STRG + ALT + E zum Konfigurieren)');
} else {
console.log("Erweiterung hat geantwortet:", response);
window.notify('success', 'Radius Anlage an Erweiterung übergeben.');
}
});
} catch (e) {
console.error("Fehler beim Senden an die Erweiterung:", e);
window.notify('error', 'Fehler beim Senden an die Erweiterung.');
try {
const { data } = await axios.post(window.TT_CONFIG.CPE_PROV_API_CREATE_RADIUS_USER_URL, {
mac: item.cpe_data.mac
});
if (data.success) {
window.notify('success', `RADIUS User erfolgreich angelegt! Kundennr: ${data.data.customer_number}`);
console.log('RADIUS User created:', data.data);
} else {
window.notify('error', data.message || 'Fehler beim Anlegen des RADIUS Users.');
}
} else {
console.warn("Chrome Extension Messaging API nicht verfügbar.");
window.notify('warning', 'Chrome Messaging API nicht gefunden.');
} catch (error) {
const errorMsg = error.response?.data?.message || 'Ein unerwarteter Fehler ist aufgetreten.';
window.notify('error', errorMsg);
console.error('Error creating RADIUS user:', error);
} finally {
this.$set(item, 'isCreatingRadius', false);
}
},
async testAcsVlan(item) {