1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-08-09 15:35:27 +02:00

Refactor to ember-ajax

This commit is contained in:
zinyando 2016-06-09 16:10:50 +02:00
parent 41fd9b68a2
commit a2bf51d144
8 changed files with 387 additions and 818 deletions

View file

@ -14,36 +14,24 @@ import models from '../utils/model';
export default Ember.Service.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
// Returns document model for specified document id.
getDocument(documentId) {
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let doc = models.DocumentModel.create(response);
resolve(doc);
},
error: function(reason) {
reject(reason);
}
});
return doc;
});
},
// Returns all documents for specified folder.
getAllByFolder(folderId) {
let appMeta = this.get('sessionService.appMeta')
let appMeta = this.get('sessionService.appMeta');
let url = appMeta.getUrl(`documents?folder=${folderId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let documents = Ember.ArrayProxy.create({
content: Ember.A([])
});
@ -53,12 +41,7 @@ export default Ember.Service.extend({
documents.pushObject(documentModel);
});
resolve(documents);
},
error: function(reason) {
reject(reason);
}
});
return documents;
});
},
@ -66,11 +49,7 @@ export default Ember.Service.extend({
getAllByTag(tag) {
let url = this.get('sessionService').appMeta.getUrl(`documents?filter=tag&tag=${tag}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let documents = Ember.ArrayProxy.create({
content: Ember.A([])
});
@ -80,12 +59,7 @@ export default Ember.Service.extend({
documents.pushObject(documentModel);
});
resolve(documents);
},
error: function(reason) {
reject(reason);
}
});
return documents;
});
},
@ -94,277 +68,163 @@ export default Ember.Service.extend({
let id = doc.get('id');
let url = this.get('sessionService').appMeta.getUrl(`documents/${id}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'PUT',
data: JSON.stringify(doc),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'PUT',
data: JSON.stringify(doc)
}).then((response) => {
return response;
});
},
getBatchedPages: function(documentId, payload) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/batch");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/batch"),
type: 'POST',
data: payload,
success: function(pages) {
return this.get('ajax').request(url, {
method: 'POST',
data: payload
}).then((pages) => {
if (is.not.array(pages)) {
pages = [];
}
resolve(pages);
},
error: function(reason) {
reject(reason);
}
});
return pages;
});
},
changePageSequence: function(documentId, payload) {
var self = this;
var url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/sequence");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/sequence"),
type: 'POST',
return this.get('ajax').post(url, {
data: JSON.stringify(payload),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
contentType: 'json'
}).then((response) => {
return response;
});
},
changePageLevel(documentId, payload) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/level");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/level"),
type: 'POST',
return this.get('ajax').post(url, {
data: JSON.stringify(payload),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
contentType: 'json'
}).then((response) => {
return response;
});
},
deleteDocument: function(documentId) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId),
type: 'DELETE',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'DELETE'
}).then((response) => {
return response;
});
},
updatePage: function(documentId, pageId, payload, skipRevision) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + revision);
var revision = skipRevision ? "?r=true" : "?r=false";
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + revision),
type: 'PUT',
return this.get('ajax').request(url, {
method: 'PUT',
data: JSON.stringify(payload),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
contentType: 'json'
}).then((response) => {
return response;
});
},
// addPage inserts new page to an existing document.
addPage: function(documentId, payload) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages"),
type: 'POST',
return this.get('ajax').post(url, {
data: JSON.stringify(payload),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
contentType: 'json'
}).then((response) => {
return response;
});
},
// Nukes multiple pages from the document.
deletePages: function(documentId, pageId, payload) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId),
type: 'POST',
return this.get('ajax').post(url, {
data: JSON.stringify(payload),
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
contentType: 'json'
}).then((response) => {
return response;
});
},
// Nukes a single page from the document.
deletePage: function(documentId, pageId) {
var self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId),
type: 'DELETE',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'DELETE'
}).then((response) => {
return response;
});
},
getPageRevisions(documentId, pageId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions"),
type: 'GET',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url).then((response) => {
return response;
});
},
getPageRevisionDiff(documentId, pageId, revisionId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId),
type: 'GET',
dataType: 'text',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
dataType: 'text'
}).then((response) => {
return response;
});
},
rollbackPage(documentId, pageId, revisionId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("documents/" + documentId + "/pages/" + pageId + "/revisions/" + revisionId),
type: 'POST',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url).then((response) => {
return response;
});
},
// document meta referes to number of views, edits, approvals, etc.
getMeta(documentId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/meta`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/meta`),
type: 'GET',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url).then((response) => {
return response;
});
},
// Returns all pages without the content
getTableOfContents(documentId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages?content=0`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages?content=0`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let data = [];
_.each(response, function(obj) {
data.pushObject(models.PageModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
// Returns all document pages with content
getPages(documentId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let pages = [];
_.each(response, function(page) {
@ -375,90 +235,51 @@ export default Ember.Service.extend({
Ember.set(pages[0], 'firstPage', true);
}
resolve(pages);
},
error: function(reason) {
reject(reason);
}
});
return pages;
});
},
// Returns document page with content
getPage(documentId, pageId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let page = models.PageModel.create(response);
resolve(page);
},
error: function(reason) {
reject(reason);
}
});
return page;
});
},
// Returns document page meta object
getPageMeta(documentId, pageId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}/meta`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/pages/${pageId}/meta`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let meta = models.PageMetaModel.create(response);
resolve(meta);
},
error: function(reason) {
reject(reason);
}
});
return meta;
});
},
// document attachments without the actual content
getAttachments(documentId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) => {
let data = [];
_.each(response, function(obj) {
data.pushObject(models.AttachmentModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
// nuke an attachment
deleteAttachment(documentId, attachmentId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments/${attachmentId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`documents/${documentId}/attachments/${attachmentId}`),
type: 'DELETE',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'DELETE'
}).then((response) => {
return response;
});
},
});

View file

@ -15,6 +15,7 @@ import BaseService from '../services/base';
export default BaseService.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
// selected folder
currentFolder: null,
@ -25,40 +26,22 @@ export default BaseService.extend({
let appMeta = this.get('sessionService.appMeta');
let url = appMeta.getUrl(`folders`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'POST',
data: JSON.stringify(folder),
contentType: 'json',
success: function(folder) {
return this.get('ajax').post(url, {
data: JSON.stringify(folder)
}).then((folder)=>{
let folderModel = models.FolderModel.create(folder);
resolve(folderModel);
},
error: function(reason) {
reject(reason);
}
});
return folderModel;
});
},
// Returns folder model for specified folder id.
getFolder(id) {
let appMeta = this.get('sessionService.appMeta')
let appMeta = this.get('sessionService.appMeta');
let url = appMeta.getUrl(`folders/${id}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response)=>{
let folder = models.FolderModel.create(response);
resolve(folder);
},
error: function(reason) {
reject(reason);
}
});
return folder;
});
},
@ -80,57 +63,31 @@ export default BaseService.extend({
let id = folder.get('id');
let url = this.get('sessionService').appMeta.getUrl(`folders/${id}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'PUT',
data: JSON.stringify(folder),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'PUT',
data: JSON.stringify(folder)
}).then((response)=>{
return response;
});
},
remove: function(folderId, moveToId) {
var self = this;
var url = self.get('sessionService').appMeta.getUrl('folders/' + folderId + "/move/" + moveToId);
var url = this.get('sessionService').appMeta.getUrl('folders/' + folderId + "/move/" + moveToId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'DELETE',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'DELETE'
}).then((response)=>{
return response;
});
},
onboard: function(folderId, payload) {
var self = this;
var url = self.get('sessionService').appMeta.getUrl('public/share/' + folderId);
var url = this.get('sessionService').appMeta.getUrl('public/share/' + folderId);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: "POST",
data: payload,
contentType: "application/json",
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url, {
data: payload
}).then((response)=>{
return response;
});
},
@ -138,107 +95,65 @@ export default BaseService.extend({
getProtectedFolderInfo: function() {
var url = this.get('sessionService').appMeta.getUrl('folders?filter=viewers');
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response)=>{
let data = [];
_.each(response, function(obj) {
data.pushObject(models.ProtectedFolderParticipant.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
// reloads and caches folders.
reload() {
let appMeta = this.get('sessionService.appMeta')
let appMeta = this.get('sessionService.appMeta');
let url = appMeta.getUrl(`folders`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response)=>{
let data = [];
_.each(response, function(obj) {
data.pushObject(models.FolderModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
// so who can see/edit this folder?
getPermissions(folderId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response)=>{
let data = [];
_.each(response, function(obj) {
data.pushObject(models.FolderPermissionModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
// persist folder permissions
savePermissions(folderId, payload) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/permissions`),
type: 'PUT',
contentType: 'json',
data: JSON.stringify(payload),
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'PUT',
data: JSON.stringify(payload)
}).then((response) => {
return response;
});
},
// share this folder with new users!
share(folderId, invitation) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl(`folders/${folderId}/invitation`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl(`folders/${folderId}/invitation`),
type: 'POST',
contentType: 'json',
data: JSON.stringify(invitation),
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url, {
data: JSON.stringify(invitation)
}).then((response) => {
return response;
});
},
@ -258,14 +173,10 @@ export default BaseService.extend({
}
let url = this.get('sessionService').appMeta.getUrl('users/' + userId + "/permissions");
let self = this;
$.ajax({
url: url,
type: 'GET',
success: function(folderPermissions) {
return this.get('ajax').request(url).then((folderPermissions) => {
// safety check
self.set('canEditCurrentFolder', false);
this.set('canEditCurrentFolder', false);
if (folderPermissions.length === 0) {
return;
@ -292,9 +203,8 @@ export default BaseService.extend({
}
});
Ember.run(() => {
self.set('canEditCurrentFolder', canEdit && self.get('sessionService').authenticated);
this.set('canEditCurrentFolder', canEdit && this.get('sessionService').authenticated);
});
}
});
},
});

View file

@ -14,23 +14,15 @@ import models from '../utils/model';
export default Ember.Service.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
// Returns attributes for specified org id.
getOrg(id) {
let url = this.get('sessionService').appMeta.getUrl(`organizations/${id}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response) =>{
let org = models.OrganizationModel.create(response);
resolve(org);
},
error: function(reason) {
reject(reason);
}
});
return org;
});
},
@ -43,19 +35,11 @@ export default Ember.Service.extend({
this.get('sessionService').get('appMeta').setSafe('message', org.message);
this.get('sessionService').get('appMeta').setSafe('title', org.title);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'PUT',
data: JSON.stringify(org),
contentType: 'json',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'PUT',
data: JSON.stringify(org)
}).then((response) => {
return response;
});
}
});

View file

@ -13,22 +13,14 @@ import Ember from 'ember';
export default Ember.Service.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
// getUsers returns all users for organization.
find(keywords) {
let url = this.get('sessionService').appMeta.getUrl("search?keywords=" + encodeURIComponent(keywords));
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url).then((response) => {
return response;
});
},
});

View file

@ -15,26 +15,21 @@ import BaseService from '../services/base';
export default BaseService.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
// Returns all available sections.
getAll() {
let url = this.get('sessionService').appMeta.getUrl(`sections`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url,{
method: 'GET'
}).then((response)=>{
let data = [];
_.each(response, function(obj) {
data.pushObject(models.SectionModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
@ -46,19 +41,10 @@ export default BaseService.extend({
let endpoint = `sections?documentID=${documentId}&section=${section}&method=${method}`;
let url = this.get('sessionService').appMeta.getUrl(endpoint);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'POST',
data: JSON.stringify(data),
contentType: "application/json",
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url, {
data: JSON.stringify(data)
}).then((response)=>{
return response;
});
},
@ -66,12 +52,7 @@ export default BaseService.extend({
refresh(documentId) {
let url = this.get('sessionService').appMeta.getUrl(`sections/refresh?documentID=${documentId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
// resolve(response);
return this.get('ajax').request(url).then((response)=>{
let pages = [];
if (is.not.null(response) && is.array(response) && response.length > 0) {
@ -80,12 +61,7 @@ export default BaseService.extend({
});
}
resolve(pages);
},
error: function(reason) {
reject(reason);
}
});
return pages;
});
}
});

View file

@ -24,6 +24,7 @@ export default Ember.Service.extend({
authenticated: false,
folderPermissions: null,
currentFolder: null,
ajax: Ember.inject.service(),
isAdmin: function() {
if (this.authenticated && is.not.null(this.user) && this.user.id !== "") {
@ -50,68 +51,48 @@ export default Ember.Service.extend({
// Authentication
login: function(credentials) {
var self = this;
var url = self.appMeta.getUrl('public/authenticate');
let url = this.appMeta.getUrl('public/authenticate');
let domain = netUtil.getSubdomain();
this.clearSession();
return new Ember.RSVP.Promise(function(resolve, reject) {
if (is.empty(credentials.email) || is.empty(credentials.password)) {
reject("invalid");
return;
return Ember.RSVP.reject("invalid");
}
var encoded = encodingUtil.Base64.encode(domain + ":" + credentials.email + ":" + credentials.password);
var header = {
var headers = {
'Authorization': 'Basic ' + encoded
};
$.ajax({
url: url,
type: 'POST',
headers: header,
success: function(response) {
self.setSession(response.token, models.UserModel.create(response.user));
self.get('ready', true);
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url, {
headers
}).then((response)=>{
this.setSession(response.token, models.UserModel.create(response.user));
this.get('ready', true);
return response;
});
},
// SSO in the form of 'domain:email:password'
sso: function(credentials) {
var self = this;
var url = self.appMeta.getUrl('public/authenticate');
let url = this.appMeta.getUrl('public/authenticate');
this.clearSession();
return new Ember.RSVP.Promise(function(resolve, reject) {
if (is.empty(credentials.email) || is.empty(credentials.password)) {
reject("invalid");
return;
return Ember.RSVP.reject("invalid");
}
var header = {
var headers = {
'Authorization': 'Basic ' + credentials
};
$.ajax({
url: url,
type: 'POST',
headers: header,
success: function(response) {
self.setSession(response.token, models.UserModel.create(response.user));
self.get('ready', true);
return this.get('ajax').post(url, {
headers
}).then((response)=>{
this.setSession(response.token, models.UserModel.create(response.user));
this.get('ready', true);
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
});
},
@ -192,51 +173,35 @@ export default Ember.Service.extend({
// this.set('popupBlocked', false);
// }
return new Ember.RSVP.Promise(function(resolve) {
$.ajax({
url: self.get('appMeta').getUrl("public/meta"),
type: 'GET',
contentType: 'json',
success: function(response) {
self.get('appMeta').set('orgId', response.orgId);
self.get('appMeta').setSafe('title', response.title);
self.get('appMeta').set('version', response.version);
self.get('appMeta').setSafe('message', response.message);
self.get('appMeta').set('allowAnonymousAccess', response.allowAnonymousAccess);
let url = this.get('appMeta').getUrl("public/meta");
let token = self.getSessionItem('token');
return this.get('ajax').request(url)
.then((response) => {
this.get('appMeta').set('orgId', response.orgId);
this.get('appMeta').setSafe('title', response.title);
this.get('appMeta').set('version', response.version);
this.get('appMeta').setSafe('message', response.message);
this.get('appMeta').set('allowAnonymousAccess', response.allowAnonymousAccess);
let token = this.getSessionItem('token');
if (is.not.undefined(token)) {
// We now validate current token
let tokenCheckUrl = self.get('appMeta').getUrl(`public/validate?token=${token}`);
let tokenCheckUrl = this.get('appMeta').getUrl(`public/validate?token=${token}`);
$.ajax({
url: tokenCheckUrl,
type: 'GET',
contentType: 'json',
success: function(user) {
self.setSession(token, models.UserModel.create(user));
self.set('ready', true);
resolve();
},
error: function(reason) {
return this.get('ajax').request(tokenCheckUrl, {
method: 'GET',
contentType: 'json'
}).then((response) => {
this.setSession(token, models.UserModel.create(user));
this.set('ready', true);
}).catch((reason) => {
if (reason.status === 401 || reason.status === 403) {
localStorage.clear();
window.location.href = "/auth/login";
}
}
});
} else {
self.set('ready', true);
resolve();
}
},
error: function(reason) {
if (reason.status === 401 || reason.status === 403) {
window.location.href = "https://documize.com";
}
}
});
});
}
});

View file

@ -14,50 +14,32 @@ import models from '../utils/model';
export default Ember.Service.extend({
sessionService: Ember.inject.service('session'),
ajax: Ember.inject.service(),
importStockTemplate: function(folderId, templateId) {
let self = this;
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=stock"),
type: 'POST',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
let url = this.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=stock");
return this.get('ajax').post(url).then((response)=>{
return response;
});
},
importSavedTemplate: function(folderId, templateId) {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=saved");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("templates/" + templateId + "/folder/" + folderId + "?type=saved"),
type: 'POST',
success: function(doc) {
return this.get('ajax').post(url).then((doc)=>{
let docModel = models.DocumentModel.create(doc);
resolve(docModel);
},
error: function(reason) {
reject(reason);
}
});
return docModel;
});
},
getSavedTemplates() {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("templates");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("templates"),
type: 'GET',
success: function(response) {
return this.get('ajax').request(url, {
type: 'GET'
}).then((response) => {
if (is.not.array(response)) {
response = [];
}
@ -70,29 +52,17 @@ export default Ember.Service.extend({
templates.pushObject(templateModel);
});
resolve(templates);
},
error: function(reason) {
reject(reason);
}
});
return templates;
});
},
getStockTemplates() {
let self = this;
let url = this.get('sessionService').appMeta.getUrl("templates/stock");
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: self.get('sessionService').appMeta.getUrl("templates/stock"),
type: 'GET',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
type: 'GET'
}).then((response) => {
return response;
});
}
});

View file

@ -33,17 +33,10 @@ export default Ember.Service.extend({
getUser(userId) {
let url = this.get('sessionService').appMeta.getUrl(`users/${userId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
resolve(models.UserModel.create(response));
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
type: 'GET'
}).then((response) => {
return models.UserModel.create(response);
});
},
@ -62,22 +55,13 @@ export default Ember.Service.extend({
getFolderUsers(folderId) {
let url = this.get('sessionService').appMeta.getUrl(`users/folder/${folderId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'GET',
success: function(response) {
return this.get('ajax').request(url).then((response)=>{
let data = [];
_.each(response, function(obj) {
data.pushObject(models.UserModel.create(obj));
});
resolve(data);
},
error: function(reason) {
reject(reason);
}
});
return data;
});
},
@ -97,18 +81,10 @@ export default Ember.Service.extend({
updatePassword(userId, password) {
let url = this.get('sessionService').appMeta.getUrl(`users/${userId}/password`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'POST',
data: password,
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').post(url, {
data: password
}).then((response)=>{
return response;
});
},
@ -116,46 +92,30 @@ export default Ember.Service.extend({
remove(userId) {
let url = this.get('sessionService').appMeta.getUrl(`users/${userId}`);
return new Ember.RSVP.Promise(function(resolve, reject) {
$.ajax({
url: url,
type: 'DELETE',
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.get('ajax').request(url, {
method: 'DELETE'
}).then((response) => {
return response;
});
},
// Request password reset.
forgotPassword(email) {
var url = this.get('sessionService').appMeta.getUrl('public/forgot');
let url = this.get('sessionService').appMeta.getUrl('public/forgot');
return new Ember.RSVP.Promise(function(resolve, reject) {
if (is.empty(email)) {
reject("invalid");
return;
}
var data = JSON.stringify({
let data = JSON.stringify({
Email: email
});
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: data,
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.request('ajax').post(url, {
data: data
}).then((response)=>{
return response;
});
},
@ -163,23 +123,14 @@ export default Ember.Service.extend({
resetPassword(token, password) {
var url = this.get('sessionService').appMeta.getUrl('public/reset/' + token);
return new Ember.RSVP.Promise(function(resolve, reject) {
if (is.empty(token) || is.empty(password)) {
reject("invalid");
return;
return Ember.RSVP.reject("invalid");
}
$.ajax({
url: url,
type: 'POST',
data: password,
success: function(response) {
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
return this.request('ajax').post(url, {
data: password
}).then((response)=>{
return response;
});
}
});