forked from projects/fipamo
212 lines
5.6 KiB
JavaScript
212 lines
5.6 KiB
JavaScript
|
import FipamoAdminAPI from '../libraries/FipamoAdminAPI';
|
||
|
import Maintenance from './controllers/MaintenanceManager';
|
||
|
import DataUitls from './utils/DataUtils';
|
||
|
import * as DataEvent from './events/DataEvent';
|
||
|
import DashManager from './controllers/DashManager';
|
||
|
import Notfications from './ui/Notifications';
|
||
|
const data = new DataUitls();
|
||
|
const notify = new Notfications();
|
||
|
|
||
|
export default class Base {
|
||
|
//--------------------------
|
||
|
// constructor
|
||
|
//--------------------------
|
||
|
constructor() {
|
||
|
this.processing = false;
|
||
|
this.start();
|
||
|
}
|
||
|
|
||
|
//--------------------------
|
||
|
// methods
|
||
|
//--------------------------
|
||
|
|
||
|
//TODO: Move init functions and set up to their own class
|
||
|
start() {
|
||
|
if (
|
||
|
document.getElementById('login') ||
|
||
|
document.querySelector('[role="site-restore"]')
|
||
|
) {
|
||
|
var options = document.getElementsByClassName('init-option');
|
||
|
for (let index = 0; index < options.length; index++) {
|
||
|
options[index].addEventListener('click', e => this.handleOptions(e));
|
||
|
}
|
||
|
if (document.getElementById('login')) {
|
||
|
document
|
||
|
.getElementById('login-btn')
|
||
|
.addEventListener('click', e => this.handleLogin(e));
|
||
|
} else {
|
||
|
document
|
||
|
.getElementById('init-blog')
|
||
|
.addEventListener('click', e => this.handleSetup(e));
|
||
|
document
|
||
|
.getElementById('blog-restore')
|
||
|
.addEventListener('click', e => this.handleRestore(e));
|
||
|
}
|
||
|
} else if (document.getElementById('dash-reset')) {
|
||
|
document
|
||
|
.getElementById('get-secret-btn')
|
||
|
.addEventListener('click', e => this.handleReset(e));
|
||
|
|
||
|
document
|
||
|
.getElementById('reset-btn')
|
||
|
.addEventListener('click', e => this.handleReset(e));
|
||
|
} else {
|
||
|
new DashManager();
|
||
|
}
|
||
|
}
|
||
|
//--------------------------
|
||
|
// event handlers
|
||
|
//--------------------------
|
||
|
handleLogin(e) {
|
||
|
if (this.processing) return;
|
||
|
let self = this;
|
||
|
e.preventDefault();
|
||
|
let authForm = data.formDataToJSON(document.getElementById('login'));
|
||
|
//notify.alert('Looking, hold up', null);
|
||
|
let api = new FipamoAdminAPI();
|
||
|
this.processing = true;
|
||
|
api.login(authForm)
|
||
|
.then(response => {
|
||
|
self.processing = false;
|
||
|
if (response.type === DataEvent.REQUEST_LAME) {
|
||
|
e.target.innerHTML = response.message;
|
||
|
} else {
|
||
|
e.target.innerHTML = response.message;
|
||
|
setTimeout(() => {
|
||
|
window.location = '/dashboard';
|
||
|
}, 500);
|
||
|
}
|
||
|
})
|
||
|
.catch(err => {
|
||
|
self.processing = false;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
handleSetup(e) {
|
||
|
if (this.processing) return;
|
||
|
let self = this;
|
||
|
e.stopPropagation();
|
||
|
e.preventDefault();
|
||
|
let setUpForm = data.formDataToJSON(document.getElementById('init-form'));
|
||
|
let mm = new Maintenance();
|
||
|
this.processing = true;
|
||
|
mm.create(setUpForm)
|
||
|
.then(response => {
|
||
|
if (response.type === DataEvent.API_INIT_LAME) {
|
||
|
self.processing = false;
|
||
|
e.target.innerHTML = response.message;
|
||
|
} else {
|
||
|
self.processing = false;
|
||
|
e.target.innerHTML = response.message;
|
||
|
setTimeout(() => {
|
||
|
window.location = '/dashboard';
|
||
|
}, 700);
|
||
|
}
|
||
|
})
|
||
|
.catch(err => {
|
||
|
self.processing = false;
|
||
|
//notify.alert(err, false);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
handleRestore(e) {
|
||
|
if (this.processing) return;
|
||
|
let self = this;
|
||
|
e.stopPropagation();
|
||
|
e.preventDefault();
|
||
|
let mm = new Maintenance();
|
||
|
var form = document.getElementById('init-restore');
|
||
|
this.processing = true;
|
||
|
mm.restore(form)
|
||
|
.then(response => {
|
||
|
if (response.type === DataEvent.REQUEST_LAME) {
|
||
|
self.processing = false;
|
||
|
e.target.innerHTML = response.message;
|
||
|
} else {
|
||
|
self.processing = false;
|
||
|
e.target.innerHTML = response.message;
|
||
|
setTimeout(() => {
|
||
|
window.location = '/dashboard';
|
||
|
}, 1500);
|
||
|
}
|
||
|
})
|
||
|
.catch(err => {
|
||
|
self.processing = false;
|
||
|
e.target.innerHTML = err;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
handleReset(e) {
|
||
|
e.stopPropagation();
|
||
|
e.preventDefault();
|
||
|
let self = this;
|
||
|
let mm = new Maintenance();
|
||
|
if (e.target.id == 'get-secret-btn') {
|
||
|
let data = {
|
||
|
email: document.getElementById('email').value,
|
||
|
task: 'retrieveSecret'
|
||
|
};
|
||
|
this.processing = true;
|
||
|
mm.secret(data)
|
||
|
.then(response => {
|
||
|
self.processing = false;
|
||
|
if (response.secret) {
|
||
|
document.getElementById('secret').value = response.secret;
|
||
|
notify.alert(response.message, true);
|
||
|
} else {
|
||
|
if (response.type == 'mailSent') {
|
||
|
notify.alert(response.message, true);
|
||
|
} else {
|
||
|
notify.alert(response.message, false);
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
.catch(err => {
|
||
|
self.processing = false;
|
||
|
notify.alert(err, false);
|
||
|
});
|
||
|
} else {
|
||
|
let data = {
|
||
|
newPass: document.getElementById('new_password').value,
|
||
|
newPassConfirm: document.getElementById('new_password2').value,
|
||
|
secret: document.getElementById('secret').value
|
||
|
};
|
||
|
mm.newPass(data)
|
||
|
.then(response => {
|
||
|
self.processing = false;
|
||
|
if (response.type == 'passNotCreated') {
|
||
|
notify.alert(response.message, false);
|
||
|
} else {
|
||
|
notify.alert(response.message, true);
|
||
|
setTimeout(() => {
|
||
|
window.location = '/dashboard';
|
||
|
}, 1000);
|
||
|
}
|
||
|
})
|
||
|
.catch(err => {
|
||
|
self.processing = false;
|
||
|
notify.alert(err, false);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
handleOptions(e) {
|
||
|
e.stopPropagation();
|
||
|
e.preventDefault();
|
||
|
let init = document.querySelector('[role="restore-fresh"]');
|
||
|
let restore = document.querySelector('[role="restore-backup"]');
|
||
|
if (e.target.id === 'init-switch-restore') {
|
||
|
init.style.display = 'none';
|
||
|
init.style.visibility = 'hidden';
|
||
|
|
||
|
restore.style.display = 'grid';
|
||
|
restore.style.visibility = 'visible';
|
||
|
} else {
|
||
|
init.style.display = 'grid';
|
||
|
init.style.visibility = 'visible';
|
||
|
|
||
|
restore.style.display = 'none';
|
||
|
restore.style.visibility = 'hidden';
|
||
|
}
|
||
|
}
|
||
|
}
|