/**
|
|
* File which deals with adding and removing downloads from
|
|
* the admin section of the website.
|
|
*
|
|
* @author Jeffery Russell 6-30-18
|
|
*/
|
|
|
|
/** Whiskers template file */
|
|
const TEMPLATE_FILE = "admin/adminUsers.html";
|
|
|
|
|
|
const includes = require('../includes/includes.js');
|
|
|
|
//updates db
|
|
const sql = require('../utils/sql');
|
|
|
|
//parses post data
|
|
const qs = require('querystring');
|
|
|
|
|
|
/**
|
|
* Processes post requests from the addDownload form
|
|
*
|
|
* @param postData
|
|
* @returns {*|Promise}
|
|
*/
|
|
const addUserPostData = function(postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
const post = qs.parse(postData);
|
|
if(post.add_user)
|
|
{
|
|
sql.addUser(post.add_user_name, post.add_user_password)
|
|
.then(function()
|
|
{
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
reject(error);
|
|
})
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Removes a download if requested by the
|
|
* post data from an admin.
|
|
*/
|
|
const removeUserPost = function(postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
const post = qs.parse(postData);
|
|
console.log(post);
|
|
if(post.delete_user)
|
|
{
|
|
console.log("Removing user: " + post.delete_user);
|
|
sql.removeUser(post.delete_user).then(function()
|
|
{
|
|
resolve();
|
|
}).catch(function(err)
|
|
{
|
|
reject(err);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Processes post data to determine if the user requested that
|
|
* a user be updated in the database.
|
|
*/
|
|
const editUserPost = function(postData, templateContext)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
const post = qs.parse(postData);
|
|
if(post.edit_user)
|
|
{
|
|
sql.getUserByID(post.edit_user).then(function(user)
|
|
{
|
|
if(user.length == 1)
|
|
{
|
|
templateContext.edit_user = post.edit_user;
|
|
templateContext.user_name = user[0].user_name;
|
|
resolve();
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
}).catch(function(err)
|
|
{
|
|
reject(err);
|
|
});
|
|
}
|
|
else if(post.edit_user_2)
|
|
{
|
|
sql.updateUser(post.edit_user_2, post.edit_user_name, post.edit_user_password)
|
|
.then(function()
|
|
{
|
|
resolve();
|
|
})
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Fetches the download items in the database so that
|
|
* the template engine can use it to display them in
|
|
* a table.
|
|
*
|
|
* @param templateContext-- context item used by whiskers
|
|
* @returns {Promise}
|
|
*/
|
|
const getUserInformation = function(templateContext)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
sql.getAllUsers().then(function(users)
|
|
{
|
|
templateContext.users = users;
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
reject(error);
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
module.exports=
|
|
{
|
|
/** Fetches context information for the template and handles
|
|
* post data for the downloads.
|
|
*
|
|
* @param postData posted by user
|
|
* @param templateContext json object used as the template context
|
|
* @returns {Promise} renders the template used for this page
|
|
*/
|
|
main: function(templateContext)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
Promise.all([includes.fetchTemplate(TEMPLATE_FILE),
|
|
getUserInformation(templateContext)]).then(function(template)
|
|
{
|
|
templateContext.adminPage = template[0];
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
console.log("error in users.js");
|
|
reject(error);
|
|
});
|
|
});
|
|
},
|
|
|
|
processPostData: function(templateContext, postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
Promise.all([includes.fetchTemplate(TEMPLATE_FILE),
|
|
addUserPostData(postData),
|
|
removeUserPost(postData),
|
|
editUserPost(postData, templateContext),
|
|
getUserInformation(templateContext)]).then(function(template)
|
|
{
|
|
templateContext.adminPage = template[0];
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
console.log("error in users.js");
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
};
|