1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 05:09:42 +02:00
documize/gui/app/services/global.js

255 lines
5.7 KiB
JavaScript
Raw Normal View History

// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import { Promise as EmberPromise } from 'rsvp';
import Service, { inject as service } from '@ember/service';
export default Service.extend({
sessionService: service('session'),
ajax: service(),
appMeta: service(),
browserSvc: service('browser'),
store: service(),
router: service(),
2017-02-22 20:03:40 -08:00
// Returns SMTP configuration.
getSMTPConfig() {
if(this.get('sessionService.isGlobalAdmin')) {
2017-02-22 20:03:40 -08:00
return this.get('ajax').request(`global/smtp`, {
method: 'GET'
}).then((response) => {
return response;
});
}
},
2017-02-22 20:03:40 -08:00
// Saves SMTP configuration.
saveSMTPConfig(config) {
if(this.get('sessionService.isGlobalAdmin')) {
2017-02-22 20:03:40 -08:00
return this.get('ajax').request(`global/smtp`, {
method: 'PUT',
data: JSON.stringify(config)
});
}
2017-02-22 20:03:40 -08:00
},
2018-11-07 15:56:05 +00:00
// Returns product subscription.
getSubscription() {
if(this.get('sessionService.isAdmin')) {
return this.get('ajax').request(`subscription`, {
method: 'GET',
dataType: 'JSON'
}).then((response) => {
return response;
});
}
},
2017-02-22 20:03:40 -08:00
// Returns product license.
getLicense() {
2018-11-07 15:56:05 +00:00
if(this.get('sessionService.isAdmin')) {
return this.get('ajax').request(`license`, {
2017-02-22 20:03:40 -08:00
method: 'GET',
dataType: "text"
}).then((response) => {
return response;
});
}
},
2018-11-07 15:56:05 +00:00
// Saves product subscription data.
setLicense(license) {
if(this.get('sessionService.isAdmin')) {
return this.get('ajax').request(`license`, {
2017-02-22 20:03:40 -08:00
method: 'PUT',
dataType: 'text',
data: license
});
}
2017-03-14 17:19:53 +00:00
},
// Returns auth config for Documize instance.
getAuthConfig() {
if(this.get('sessionService.isGlobalAdmin')) {
return this.get('ajax').request(`global/auth`, {
method: 'GET'
}).then((response) => {
return response;
});
}
2018-03-29 12:23:09 +01:00
},
2017-03-14 17:19:53 +00:00
// Saves auth config for Documize instance.
saveAuthConfig(config) {
if(this.get('sessionService.isGlobalAdmin')) {
return this.get('ajax').request(`global/auth`, {
method: 'PUT',
data: JSON.stringify(config)
});
}
2017-03-19 14:25:21 +00:00
},
2018-08-28 10:19:22 +01:00
syncKeycloak() {
2017-04-27 12:43:11 +01:00
if(this.get('sessionService.isAdmin')) {
2018-08-28 10:19:22 +01:00
return this.get('ajax').request(`global/sync/keycloak`, {
method: 'GET'
}).then((response) => {
return response;
}).catch((error) => {
return error;
});
}
},
syncLDAP() {
if(this.get('sessionService.isAdmin')) {
2018-09-04 17:19:26 +01:00
return this.get('ajax').request(`global/ldap/sync`, {
2017-03-19 14:25:21 +00:00
method: 'GET'
}).then((response) => {
return response;
2017-03-28 10:25:32 +01:00
}).catch((error) => {
return error;
2017-03-19 14:25:21 +00:00
});
}
},
2018-03-29 12:23:09 +01:00
2018-09-03 17:36:54 +01:00
previewLDAP(config) {
if(this.get('sessionService.isAdmin')) {
2018-09-04 17:19:26 +01:00
return this.get('ajax').request(`global/ldap/preview`, {
2018-09-03 17:36:54 +01:00
method: 'POST',
data: JSON.stringify(config)
}).then((response) => {
return response;
}).catch((error) => {
return error;
});
}
},
2018-03-29 12:23:09 +01:00
// Returns product license.
searchStatus() {
if (this.get('sessionService.isGlobalAdmin')) {
return this.get('ajax').request(`global/search/status`, {
method: 'GET',
}).then((response) => {
return response;
});
}
},
// Saves product license.
reindex() {
if (this.get('sessionService.isGlobalAdmin')) {
return this.get('ajax').request(`global/search/reindex`, {
method: 'POST',
});
}
},
// Run backup.
backup(spec) {
2018-10-10 15:13:09 +01:00
return new EmberPromise((resolve, reject) => {
2018-10-20 12:41:26 +01:00
if (!this.get('sessionService.isGlobalAdmin') && !this.get('sessionService.isAdmin')) {
reject();
}
let url = this.get('appMeta.endpoint');
let token = this.get('sessionService.session.content.authenticated.token');
let uploadUrl = `${url}/global/backup?token=${token}`;
let xhr = new XMLHttpRequest();
xhr.open('POST', uploadUrl);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.responseType = 'blob';
xhr.onload = function() {
if (this.status === 200) {
// get binary data as a response
let blob = this.response;
let a = document.createElement("a");
a.style = "display: none";
document.body.appendChild(a);
2018-10-10 15:13:09 +01:00
let filename = xhr.getResponseHeader('x-documize-filename').replace('"', '');
let url = window.URL.createObjectURL(blob);
a.href = url;
2018-10-10 15:13:09 +01:00
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
2018-10-10 15:13:09 +01:00
resolve(filename);
} else {
reject();
}
};
2018-10-10 15:13:09 +01:00
xhr.onerror= function() {
reject();
};
2018-10-10 15:13:09 +01:00
xhr.send(JSON.stringify(spec));
});
},
restore(spec, file) {
let data = new FormData();
data.set('restore-file', file);
return new EmberPromise((resolve, reject) => {
2018-10-20 12:41:26 +01:00
if (!this.get('sessionService.isGlobalAdmin') && !this.get('sessionService.isAdmin')) {
reject();
}
let url = this.get('appMeta.endpoint');
let token = this.get('sessionService.session.content.authenticated.token');
let uploadUrl = `${url}/global/restore?token=${token}&org=${spec.overwriteOrg}&users=${spec.recreateUsers}`;
let xhr = new XMLHttpRequest();
xhr.open('POST', uploadUrl);
xhr.onload = function() {
if (this.status === 200) {
resolve();
} else {
reject();
}
};
xhr.onerror= function() {
reject();
};
xhr.send(data);
});
2018-11-09 13:42:58 +00:00
},
deactivate(comment) {
2018-11-09 13:42:58 +00:00
if(this.get('sessionService.isAdmin')) {
return this.get('ajax').request(`deactivate`, {
method: 'POST',
contentType: 'text',
data: comment,
2018-11-09 13:42:58 +00:00
});
}
},
onboard() {
return this.get('ajax').request(`setup/onboard`, {
method: 'POST',
});
}
});