ComunicWeb/assets/js/components/account/interface.js
2021-07-13 17:50:22 +02:00

182 lines
4.4 KiB
JavaScript

/**
* Account interface
*
* @author Pierre HUBERT
*/
const AccountInterface = {
/**
* Send a request on the server to create an account
*
* @param {string} firstName The first name of the user
* @param {string} lastName The last name of the user
* @param {email} emailAddress The email adress of the user
* @param {password} password The password of the user
* @param {callback} callback The callback function
*/
createAccount: function(firstName, lastName, emailAddress, password, callback){
//Make an API request
var apiURI = "account/create";
var params = {
"firstName": firstName,
"lastName": lastName,
"emailAddress": emailAddress,
"password": password
};
//Perform an API request
ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, callback);
},
/**
* Check whether an email address is linked to an account or not
*
* @param {String} email The email address to check
* @param {function} callback
*/
existsMail: function(email, callback){
var apiURI = "account/exists_email";
var params = {
email: email
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Get current user email address
*/
getMail: async function() {
const res = await api("account/mail", null, true);
return res.mail;
},
/**
* Check whether the security questions have been set for an account
* with an email address or not
*
* @param {String} email The email address of the account
* @param {function} callback
*/
checkSecurityQuestionsExistence: function(email, callback){
var apiURI = "account/has_security_questions";
var params = {
email: email
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Given an email address, returns the security questions of a user
*
* @param {String} email The email address of the account
* @param {function} callback
*/
getSecurityQuestions: function(email, callback){
var apiURI = "account/get_security_questions";
var params = {
email: email
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Get passowrd reset token using security answer
*
* @param {String} email The email address of the account
* @param {Array} answers The answers to the security questions
* @param {Function} callback
*/
resetPasswordWithSecurityAnswers: function(email, answers, callback){
//Prepare answers
answersText = "";
answers.forEach(function(answer){
if(answersText != "")
answersText += "&";
answersText += encodeURIComponent(answer);
});
//Perform the request
var apiURI = "account/check_security_answers";
var params = {
email: email,
answers: answersText
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Check the validity of a reset password token
*
* @param {String} token The token to check
* @param {Function} callback
*/
checkPasswordResetToken: function(token, callback){
var apiURI = "account/check_password_reset_token";
var params = {
reset_token: token
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, callback);
},
/**
* Reset user password
*
* @param {String} token The token to check
* @param {String} passwd The new password for the user
* @param {Function} callback
*/
resetUserPassword: function(token, passwd, callback){
var apiURI = "account/reset_user_passwd";
var params = {
reset_token: token,
password: passwd
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, false, callback);
},
/**
* Disconnect user from all its connected devices
*/
disconnectAllDevices: async function() {
await api("/account/disconnect_all_devices", {}, true);
},
/**
* Request the export of all the data of the user
*
* @param {String} password The password of the user
* @param {function} callback
*/
exportData: function(password, callback){
var apiURI = "account/export_data";
var params = {
password: password
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Request the deletion of the account
*
* @param {string} password The password of the account
* @param {function} callback
*/
deleteAccount: function(password, callback){
var apiURI = "account/delete";
var params = {
password: password
};
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
}
ComunicWeb.components.account.interface = AccountInterface;