UNPKG

n8n-nodes-arubaclearpass

Version:

n8n community node for Aruba ClearPass API integration with comprehensive identity, policy, and enforcement profile management

590 lines (589 loc) 22.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.listGuestUsers = listGuestUsers; exports.getGuestUser = getGuestUser; exports.getGuestUserByUsername = getGuestUserByUsername; exports.createGuestUser = createGuestUser; exports.updateGuestUser = updateGuestUser; exports.updateGuestUserByUsername = updateGuestUserByUsername; exports.replaceGuestUser = replaceGuestUser; exports.replaceGuestUserByUsername = replaceGuestUserByUsername; exports.deleteGuestUser = deleteGuestUser; exports.deleteGuestUserByUsername = deleteGuestUserByUsername; // methods/Identities/GuestUser.methods.ts const n8n_workflow_1 = require("n8n-workflow"); const apiRequest_1 = require("../../helpers/apiRequest"); const responseFormatter_1 = require("../../helpers/responseFormatter"); /** * Get a list of all guest accounts */ async function listGuestUsers() { try { const returnAll = this.getNodeParameter('returnAll', 0); const filters = this.getNodeParameter('filters', 0, {}); const endpoint = '/guest'; let responseData; if (returnAll) { responseData = await apiRequest_1.apiRequestAllItems.call(this, 'GET', endpoint, {}, filters); } else { const limit = this.getNodeParameter('limit', 0); if (!filters.limit) { filters.limit = limit; } responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, filters); } return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in listGuestUsers'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Get a guest account by ID */ async function getGuestUser() { try { const guestUserId = this.getNodeParameter('guestUserId', 0); const endpoint = `/guest/${guestUserId}`; const responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in getGuestUser'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Get a guest account by username */ async function getGuestUserByUsername() { try { const username = this.getNodeParameter('username', 0); const endpoint = `/guest/username/${username}`; const responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in getGuestUserByUsername'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Create a new guest user account */ async function createGuestUser() { try { const body = {}; // Required parameters body.username = this.getNodeParameter('username', 0); body.password = this.getNodeParameter('password', 0); body.role_id = this.getNodeParameter('roleId', 0); body.sponsor_name = this.getNodeParameter('sponsorName', 0); body.sponsor_profile = this.getNodeParameter('sponsorProfile', 0); body.enabled = this.getNodeParameter('enabled', 0); body.start_time = this.getNodeParameter('startTime', 0); body.expire_time = this.getNodeParameter('expireTime', 0); // Optional parameters from additionalFields const additionalFields = this.getNodeParameter('additionalFields', 0, {}); if (additionalFields.email) { body.email = additionalFields.email; } if (additionalFields.mac) { body.mac = additionalFields.mac; } if (additionalFields.notes) { body.notes = additionalFields.notes; } if (additionalFields.simultaneous_use !== undefined) { body.simultaneous_use = additionalFields.simultaneous_use; } if (additionalFields.do_expire !== undefined) { body.do_expire = additionalFields.do_expire; } if (additionalFields.sponsor_email) { body.sponsor_email = additionalFields.sponsor_email; } if (additionalFields.visitor_name) { body.visitor_name = additionalFields.visitor_name; } if (additionalFields.visitor_company) { body.visitor_company = additionalFields.visitor_company; } if (additionalFields.visitor_phone) { body.visitor_phone = additionalFields.visitor_phone; } // Handle custom fields as JSON if (additionalFields.customFields) { try { const customFieldsJson = additionalFields.customFields; const customFields = JSON.parse(customFieldsJson); // Add each custom field to the body for (const key of Object.keys(customFields)) { body[key] = customFields[key]; } } catch (jsonError) { const errorObject = {}; errorObject.message = `Invalid JSON in customFields: ${jsonError.message}`; throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = '/guest'; const responseData = await apiRequest_1.apiRequest.call(this, 'POST', endpoint, body, qs); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in createGuestUser'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Update a guest user account */ async function updateGuestUser() { try { const guestUserId = this.getNodeParameter('guestUserId', 0); const body = {}; // Check if password should be updated const updatePassword = this.getNodeParameter('updatePassword', 0); if (updatePassword) { body.password = this.getNodeParameter('password', 0); } // Check if role should be updated const updateRole = this.getNodeParameter('updateRole', 0); if (updateRole) { body.role_id = this.getNodeParameter('roleId', 0); } // Get optional parameters const additionalFields = this.getNodeParameter('additionalFields', 0, {}); // Optional string fields const stringFields = [ 'email', 'mac', 'notes', 'sponsor_email', 'visitor_name', 'visitor_company', 'visitor_phone', 'sponsor_name', 'sponsor_profile', ]; stringFields.forEach((field) => { if (additionalFields[field] !== undefined) { body[field] = additionalFields[field]; } }); // Optional numeric/boolean fields if (additionalFields.simultaneous_use !== undefined) { body.simultaneous_use = additionalFields.simultaneous_use; } if (additionalFields.do_expire !== undefined) { body.do_expire = additionalFields.do_expire; } if (additionalFields.enabled !== undefined) { body.enabled = additionalFields.enabled; } // Optional date fields if (additionalFields.start_time !== undefined) { body.start_time = additionalFields.start_time; } if (additionalFields.expire_time !== undefined) { body.expire_time = additionalFields.expire_time; } // Handle custom fields as JSON if (additionalFields.customFields) { try { const customFieldsJson = additionalFields.customFields; const customFields = JSON.parse(customFieldsJson); // Add each custom field to the body for (const key of Object.keys(customFields)) { body[key] = customFields[key]; } } catch (jsonError) { const errorObject = {}; errorObject.message = `Invalid JSON in customFields: ${jsonError.message}`; throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/${guestUserId}`; const responseData = await apiRequest_1.apiRequest.call(this, 'PATCH', endpoint, body, qs); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in updateGuestUser'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Update a guest user account by username */ async function updateGuestUserByUsername() { try { const username = this.getNodeParameter('username', 0); const body = {}; // Check if password should be updated const updatePassword = this.getNodeParameter('updatePassword', 0); if (updatePassword) { body.password = this.getNodeParameter('password', 0); } // Check if role should be updated const updateRole = this.getNodeParameter('updateRole', 0); if (updateRole) { body.role_id = this.getNodeParameter('roleId', 0); } // Get optional parameters const additionalFields = this.getNodeParameter('additionalFields', 0, {}); // Optional string fields const stringFields = [ 'email', 'mac', 'notes', 'sponsor_email', 'visitor_name', 'visitor_company', 'visitor_phone', 'sponsor_name', 'sponsor_profile', ]; stringFields.forEach((field) => { if (additionalFields[field] !== undefined) { body[field] = additionalFields[field]; } }); // Optional numeric/boolean fields if (additionalFields.simultaneous_use !== undefined) { body.simultaneous_use = additionalFields.simultaneous_use; } if (additionalFields.do_expire !== undefined) { body.do_expire = additionalFields.do_expire; } if (additionalFields.enabled !== undefined) { body.enabled = additionalFields.enabled; } // Optional date fields if (additionalFields.start_time !== undefined) { body.start_time = additionalFields.start_time; } if (additionalFields.expire_time !== undefined) { body.expire_time = additionalFields.expire_time; } // Handle custom fields as JSON if (additionalFields.customFields) { try { const customFieldsJson = additionalFields.customFields; const customFields = JSON.parse(customFieldsJson); // Add each custom field to the body for (const key of Object.keys(customFields)) { body[key] = customFields[key]; } } catch (jsonError) { const errorObject = {}; errorObject.message = `Invalid JSON in customFields: ${jsonError.message}`; throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/username/${username}`; const responseData = await apiRequest_1.apiRequest.call(this, 'PATCH', endpoint, body, qs); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in updateGuestUserByUsername'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Replace a guest user account */ async function replaceGuestUser() { try { const guestUserId = this.getNodeParameter('guestUserId', 0); const body = {}; // Required parameters body.password = this.getNodeParameter('password', 0); body.role_id = this.getNodeParameter('roleId', 0); body.sponsor_name = this.getNodeParameter('sponsorName', 0); body.sponsor_profile = this.getNodeParameter('sponsorProfile', 0); body.enabled = this.getNodeParameter('enabled', 0); body.start_time = this.getNodeParameter('startTime', 0); body.expire_time = this.getNodeParameter('expireTime', 0); // Optional parameters from additionalFields const additionalFields = this.getNodeParameter('additionalFields', 0, {}); // Optional string fields const stringFields = [ 'email', 'mac', 'notes', 'sponsor_email', 'visitor_name', 'visitor_company', 'visitor_phone', 'username', ]; stringFields.forEach((field) => { if (additionalFields[field] !== undefined) { body[field] = additionalFields[field]; } }); // Optional numeric fields if (additionalFields.simultaneous_use !== undefined) { body.simultaneous_use = additionalFields.simultaneous_use; } if (additionalFields.do_expire !== undefined) { body.do_expire = additionalFields.do_expire; } // Handle custom fields as JSON if (additionalFields.customFields) { try { const customFieldsJson = additionalFields.customFields; const customFields = JSON.parse(customFieldsJson); // Add each custom field to the body for (const key of Object.keys(customFields)) { body[key] = customFields[key]; } } catch (jsonError) { const errorObject = {}; errorObject.message = `Invalid JSON in customFields: ${jsonError.message}`; throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/${guestUserId}`; const responseData = await apiRequest_1.apiRequest.call(this, 'PUT', endpoint, body, qs); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in replaceGuestUser'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Replace a guest user account by username */ async function replaceGuestUserByUsername() { try { const username = this.getNodeParameter('username', 0); const body = {}; // Required parameters body.username = username; body.password = this.getNodeParameter('password', 0); body.role_id = this.getNodeParameter('roleId', 0); body.sponsor_name = this.getNodeParameter('sponsorName', 0); body.sponsor_profile = this.getNodeParameter('sponsorProfile', 0); body.enabled = this.getNodeParameter('enabled', 0); body.start_time = this.getNodeParameter('startTime', 0); body.expire_time = this.getNodeParameter('expireTime', 0); // Optional parameters from additionalFields const additionalFields = this.getNodeParameter('additionalFields', 0, {}); // Optional string fields const stringFields = [ 'email', 'mac', 'notes', 'sponsor_email', 'visitor_name', 'visitor_company', 'visitor_phone', ]; stringFields.forEach((field) => { if (additionalFields[field] !== undefined) { body[field] = additionalFields[field]; } }); // Optional numeric fields if (additionalFields.simultaneous_use !== undefined) { body.simultaneous_use = additionalFields.simultaneous_use; } if (additionalFields.do_expire !== undefined) { body.do_expire = additionalFields.do_expire; } // Handle custom fields as JSON if (additionalFields.customFields) { try { const customFieldsJson = additionalFields.customFields; const customFields = JSON.parse(customFieldsJson); // Add each custom field to the body for (const key of Object.keys(customFields)) { body[key] = customFields[key]; } } catch (jsonError) { const errorObject = {}; errorObject.message = `Invalid JSON in customFields: ${jsonError.message}`; throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/username/${username}`; const responseData = await apiRequest_1.apiRequest.call(this, 'PUT', endpoint, body, qs); return responseFormatter_1.formatResponse.call(this, responseData); } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in replaceGuestUserByUsername'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Delete a guest user account */ async function deleteGuestUser() { try { const guestUserId = this.getNodeParameter('guestUserId', 0); // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/${guestUserId}`; await apiRequest_1.apiRequest.call(this, 'DELETE', endpoint, {}, qs); return [{ json: { success: true } }]; } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in deleteGuestUser'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } } /** * Delete a guest user account by username */ async function deleteGuestUserByUsername() { try { const username = this.getNodeParameter('username', 0); // Query parameter for change of authorization const qs = {}; const changeOfAuthorization = this.getNodeParameter('changeOfAuthorization', 0); if (changeOfAuthorization) { qs.change_of_authorization = 'true'; } const endpoint = `/guest/username/${username}`; await apiRequest_1.apiRequest.call(this, 'DELETE', endpoint, {}, qs); return [{ json: { success: true } }]; } catch (error) { const errorObject = {}; if (error instanceof Error) { errorObject.message = error.message; if (error.stack) { errorObject.stackTrace = error.stack; } } else { errorObject.message = 'Unknown error in deleteGuestUserByUsername'; } throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject); } }