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
JavaScript
"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);
}
}