mirror of
https://github.com/documize/community.git
synced 2025-07-19 13:19:43 +02:00
225 lines
5.1 KiB
JavaScript
225 lines
5.1 KiB
JavaScript
// 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(),
|
|
|
|
// Returns SMTP configuration.
|
|
getSMTPConfig() {
|
|
if(this.get('sessionService.isGlobalAdmin')) {
|
|
return this.get('ajax').request(`global/smtp`, {
|
|
method: 'GET'
|
|
}).then((response) => {
|
|
return response;
|
|
});
|
|
}
|
|
},
|
|
|
|
// Saves SMTP configuration.
|
|
saveSMTPConfig(config) {
|
|
if(this.get('sessionService.isGlobalAdmin')) {
|
|
return this.get('ajax').request(`global/smtp`, {
|
|
method: 'PUT',
|
|
data: JSON.stringify(config)
|
|
});
|
|
}
|
|
},
|
|
|
|
// Returns product license.
|
|
getLicense() {
|
|
if(this.get('sessionService.isGlobalAdmin')) {
|
|
return this.get('ajax').request(`global/license`, {
|
|
method: 'GET',
|
|
dataType: "text"
|
|
}).then((response) => {
|
|
return response;
|
|
});
|
|
}
|
|
},
|
|
|
|
// Saves product license.
|
|
saveLicense(license) {
|
|
if(this.get('sessionService.isGlobalAdmin')) {
|
|
return this.get('ajax').request(`global/license`, {
|
|
method: 'PUT',
|
|
dataType: 'text',
|
|
data: license
|
|
});
|
|
}
|
|
},
|
|
|
|
// 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;
|
|
});
|
|
}
|
|
},
|
|
|
|
// 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)
|
|
});
|
|
}
|
|
},
|
|
|
|
syncKeycloak() {
|
|
if(this.get('sessionService.isAdmin')) {
|
|
return this.get('ajax').request(`global/sync/keycloak`, {
|
|
method: 'GET'
|
|
}).then((response) => {
|
|
return response;
|
|
}).catch((error) => {
|
|
return error;
|
|
});
|
|
}
|
|
},
|
|
|
|
syncLDAP() {
|
|
if(this.get('sessionService.isAdmin')) {
|
|
return this.get('ajax').request(`global/ldap/sync`, {
|
|
method: 'GET'
|
|
}).then((response) => {
|
|
return response;
|
|
}).catch((error) => {
|
|
return error;
|
|
});
|
|
}
|
|
},
|
|
|
|
previewLDAP(config) {
|
|
if(this.get('sessionService.isAdmin')) {
|
|
return this.get('ajax').request(`global/ldap/preview`, {
|
|
method: 'POST',
|
|
data: JSON.stringify(config)
|
|
}).then((response) => {
|
|
return response;
|
|
}).catch((error) => {
|
|
return error;
|
|
});
|
|
}
|
|
},
|
|
|
|
// 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) {
|
|
return new EmberPromise((resolve, reject) => {
|
|
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}`;
|
|
|
|
var 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
|
|
var blob = this.response;
|
|
|
|
let a = document.createElement("a");
|
|
a.style = "display: none";
|
|
document.body.appendChild(a);
|
|
|
|
let filename = xhr.getResponseHeader('x-documize-filename').replace('"', '');
|
|
|
|
let url = window.URL.createObjectURL(blob);
|
|
a.href = url;
|
|
a.download = filename;
|
|
a.click();
|
|
|
|
window.URL.revokeObjectURL(url);
|
|
document.body.removeChild(a);
|
|
|
|
resolve(filename);
|
|
} else {
|
|
reject();
|
|
}
|
|
}
|
|
|
|
xhr.onerror= function() {
|
|
reject();
|
|
}
|
|
|
|
xhr.send(JSON.stringify(spec));
|
|
});
|
|
},
|
|
|
|
restore(spec, file) {
|
|
var data = new FormData();
|
|
data.set('restore-file', file);
|
|
|
|
return new EmberPromise((resolve, reject) => {
|
|
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}`;
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('POST', uploadUrl);
|
|
|
|
xhr.onload = function() {
|
|
if (this.status == 200) {
|
|
resolve();
|
|
} else {
|
|
reject();
|
|
}
|
|
}
|
|
|
|
xhr.onerror= function() {
|
|
reject();
|
|
}
|
|
|
|
xhr.send(data);
|
|
});
|
|
}
|
|
});
|