diff --git a/app/app/components/document/document-toolbar.js b/app/app/components/document/document-toolbar.js index 0baff562..050b8521 100644 --- a/app/app/components/document/document-toolbar.js +++ b/app/app/components/document/document-toolbar.js @@ -15,6 +15,7 @@ import TooltipMixin from '../../mixins/tooltip'; export default Ember.Component.extend(NotifierMixin, TooltipMixin, { userService: Ember.inject.service('user'), + localStorage: Ember.inject.service(), drop: null, users: [], saveTemplate: { @@ -43,11 +44,12 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, { if (this.get('isEditor')) { let self = this; let documentId = this.get('document.id'); - let uploadUrl = this.session.appMeta.getUrl(`documents/${documentId}/attachments`); + let url = this.get('appMeta.url'); + let uploadUrl = `${url}/documents/${documentId}/attachments`; let dzone = new Dropzone("#attachment-button > i", { headers: { - 'Authorization': 'Bearer ' + self.session.getSessionItem('token') + 'Authorization': 'Bearer ' + self.get('localStorage').getSessionItem('session.session.authenticated.token') }, url: uploadUrl, method: "post", diff --git a/app/app/components/folder/folder-settings.js b/app/app/components/folder/folder-settings.js index 7460bbd7..5339437d 100644 --- a/app/app/components/folder/folder-settings.js +++ b/app/app/components/folder/folder-settings.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// 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 . +// by contacting . // // https://documize.com @@ -13,6 +13,7 @@ import Ember from 'ember'; export default Ember.Component.extend({ folderService: Ember.inject.service('folder'), + appMeta: Ember.inject.service(), users: [], folders: [], folder: {}, @@ -23,7 +24,7 @@ export default Ember.Component.extend({ permissions: {}, getDefaultInvitationMessage() { - return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.session.appMeta.title + ") with you so we can both access the same documents."; + return "Hey there, I am sharing the " + this.folder.get('name') + " (in " + this.get("appMeta.title") + ") with you so we can both access the same documents."; }, willRender() { @@ -106,4 +107,4 @@ export default Ember.Component.extend({ this.sendAction("onPermission", this.get('folder'), message, this.get('permissions')); } } -}); \ No newline at end of file +}); diff --git a/app/app/components/folder/start-document.js b/app/app/components/folder/start-document.js index e4376e1c..8bc4c071 100644 --- a/app/app/components/folder/start-document.js +++ b/app/app/components/folder/start-document.js @@ -13,12 +13,14 @@ import Ember from 'ember'; import NotifierMixin from '../../mixins/notifier'; export default Ember.Component.extend(NotifierMixin, { + localStorage: Ember.inject.service(), tagName: 'span', selectedTemplate: { id: "0" }, canEditTemplate: "", drop: null, + appMeta: Ember.inject.service(), didReceiveAttrs() { this.send('setTemplate', this.get('savedTemplates')[0]); @@ -71,13 +73,14 @@ export default Ember.Component.extend(NotifierMixin, { let self = this; let folderId = this.get('folder.id'); - let importUrl = this.session.appMeta.getUrl('import/folder/' + folderId); + let url = this.get('appMeta.url'); + let importUrl = `${url}/import/folder/${folderId}`; Dropzone.options.uploadDocuments = false; let dzone = new Dropzone("#upload-documents", { headers: { - 'Authorization': 'Bearer ' + self.session.getSessionItem('token') + 'Authorization': 'Bearer ' + self.get('localStorage').getSessionItem('session.session.authenticated.token') }, url: importUrl, method: "post", diff --git a/app/app/components/section/wysiwyg/type-editor.js b/app/app/components/section/wysiwyg/type-editor.js index bbb1a356..ae6e77b5 100644 --- a/app/app/components/section/wysiwyg/type-editor.js +++ b/app/app/components/section/wysiwyg/type-editor.js @@ -1,11 +1,11 @@ // Copyright 2016 Documize Inc. . All rights reserved. // -// This software (Documize Community Edition) is licensed under +// 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 . +// by contacting . // // https://documize.com @@ -13,6 +13,7 @@ import Ember from 'ember'; export default Ember.Component.extend({ pageBody: "", + appMeta: Ember.inject.service(), didReceiveAttrs() { this.set('pageBody', this.get('meta.rawBody')); @@ -76,7 +77,7 @@ export default Ember.Component.extend({ }; if (typeof tinymce === 'undefined') { - $.getScript(this.session.appMeta.getBaseUrl("tinymce/tinymce.min.js?v=430"), function() { + $.getScript(this.get("appMeta").getBaseUrl("tinymce/tinymce.min.js?v=430"), function() { window.tinymce.dom.Event.domLoaded = true; tinymce.baseURL = "//" + window.location.host + "/tinymce"; tinymce.suffix = ".min"; @@ -110,4 +111,4 @@ export default Ember.Component.extend({ this.attrs.onAction(page, meta); } } -}); \ No newline at end of file +}); diff --git a/app/app/pods/auth/login/controller.js b/app/app/pods/auth/login/controller.js index a66fcf53..925f4e38 100644 --- a/app/app/pods/auth/login/controller.js +++ b/app/app/pods/auth/login/controller.js @@ -28,6 +28,8 @@ export default Ember.Controller.extend({ .then((response) => { this.get('audit').record("logged-in"); return response; + }).catch(() => { + this.set('invalidCredentials', true); }); } } diff --git a/app/app/services/app-meta.js b/app/app/services/app-meta.js index 823ba906..aff21d9c 100644 --- a/app/app/services/app-meta.js +++ b/app/app/services/app-meta.js @@ -17,6 +17,10 @@ export default Ember.Service.extend({ message: '', allowAnonymousAccess: false, + getBaseUrl(endpoint) { + return [this.get('host'), endpoint].join('/'); + }, + boot() { let dbhash; if (is.not.null(document.head.querySelector("[property=dbhash]"))) { diff --git a/app/app/services/folder.js b/app/app/services/folder.js index d4574009..fbd4f4f4 100644 --- a/app/app/services/folder.js +++ b/app/app/services/folder.js @@ -20,6 +20,8 @@ const { export default BaseService.extend({ sessionService: Ember.inject.service('session'), ajax: Ember.inject.service(), + localStorage: Ember.inject.service(), + // selected folder currentFolder: null, @@ -159,7 +161,7 @@ export default BaseService.extend({ } this.set('currentFolder', folder); - this.get('sessionService').storeSessionItem("folder", get(folder, 'id')); + this.get('localStorage').storeSessionItem("folder", get(folder, 'id')); this.set('canEditCurrentFolder', false); let userId = this.get('sessionService.user.id'); diff --git a/app/app/services/organization.js b/app/app/services/organization.js index 8035429d..cfe86fea 100644 --- a/app/app/services/organization.js +++ b/app/app/services/organization.js @@ -15,6 +15,7 @@ import models from '../utils/model'; export default Ember.Service.extend({ sessionService: Ember.inject.service('session'), ajax: Ember.inject.service(), + appMeta: Ember.inject.service(), // Returns attributes for specified org id. getOrg(id) { @@ -30,9 +31,10 @@ export default Ember.Service.extend({ save(org) { let id = org.get('id'); - // refresh on-screen data - this.get('sessionService').get('appMeta').setSafe('message', org.message); - this.get('sessionService').get('appMeta').setSafe('title', org.title); + this.get('appMeta').setProperties({ + message: org.message, + title: org.title + }); return this.get('ajax').request(`organizations/${id}`, { method: 'PUT', diff --git a/app/app/services/session.js b/app/app/services/session.js index 56603975..95aaaa39 100644 --- a/app/app/services/session.js +++ b/app/app/services/session.js @@ -10,14 +10,12 @@ // https://documize.com import Ember from 'ember'; -import encodingUtil from '../utils/encoding'; -import netUtil from '../utils/net'; import models from '../utils/model'; import SimpleAuthSession from 'ember-simple-auth/services/session'; const { inject: { service }, - computed: { oneWay, or }, + computed: { oneWay, or, notEmpty }, computed } = Ember; @@ -25,34 +23,18 @@ export default SimpleAuthSession.extend({ ajax: service(), appMeta: service(), - authenticated: oneWay('isAuthenticated'), + authenticated: notEmpty('user.id'), isAdmin: oneWay('user.admin'), isEditor: or('user.admin', 'user.editor'), - user: computed('session.content.authenticated.user', function(){ - let user = this.get('session.content.authenticated.user'); - if (user) { + user: computed('isAuthenticated', 'session.content.authenticated.user', function(){ + if (this.get('isAuthenticated')) { + let user = this.get('session.content.authenticated.user') || { id: '' }; return models.UserModel.create(user); } + }), folderPermissions: null, - currentFolder: null, - - clearSession: function() { - // TODO: clear session properly with ESA - localStorage.clear(); - }, - - storeSessionItem: function(key, data) { - localStorage[key] = data; - }, - - getSessionItem: function(key) { - return localStorage[key]; - }, - - clearSessionItem: function(key) { - delete localStorage[key]; - } + currentFolder: null });