1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 13:19:43 +02:00

space related bug fixesx

This commit is contained in:
Harvey Kandola 2017-10-09 10:56:59 -04:00
parent f2794a9836
commit c77b384215
10 changed files with 675 additions and 655 deletions

View file

@ -97,6 +97,7 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
sp.OrgID = ctx.OrgID
sp.Type = space.ScopePrivate
sp.UserID = ctx.UserID
sp.Type = space.ScopePrivate
err = h.Store.Space.Add(ctx, sp)
if err != nil {
@ -268,6 +269,25 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
}
}
// update space to reflect it's type (public/protected/private)
toClone, err := h.Store.Space.Get(ctx, model.CloneID)
if err != nil {
ctx.Transaction.Rollback()
response.WriteServerError(w, method, err)
h.Runtime.Log.Error(method, err)
return
}
sp.Type = toClone.Type
err = h.Store.Space.Update(ctx, sp)
if err != nil {
ctx.Transaction.Rollback()
response.WriteServerError(w, method, err)
h.Runtime.Log.Error(method, err)
return
}
ctx.Transaction.Commit()
}
@ -300,7 +320,7 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
response.WriteJSON(w, sp)
}
// GetAlGetViewablel returns spaces the user can see.
// GetViewable returns spaces the user can see.
func (h *Handler) GetViewable(w http.ResponseWriter, r *http.Request) {
method := "space.GetViewable"
ctx := domain.GetRequestContext(r)

View file

@ -13,6 +13,7 @@
package mysql
import (
"database/sql"
"fmt"
"time"
@ -72,7 +73,7 @@ func (s Scope) PublicSpaces(ctx domain.RequestContext, orgID string) (sp []space
// GetViewable returns spaces that the user can see.
// Also handles which spaces can be seen by anonymous users.
func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err error) {
sql := `
q := `
SELECT id,refid,label as name,orgid,userid,type,created,revised FROM label
WHERE orgid=?
AND refid IN (SELECT refid FROM permission WHERE orgid=? AND location='space' AND refid IN (
@ -82,7 +83,7 @@ func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err err
))
ORDER BY name`
err = s.Runtime.Db.Select(&sp, sql,
err = s.Runtime.Db.Select(&sp, q,
ctx.OrgID,
ctx.OrgID,
ctx.OrgID,
@ -90,6 +91,10 @@ func (s Scope) GetViewable(ctx domain.RequestContext) (sp []space.Space, err err
ctx.OrgID,
ctx.UserID)
if err == sql.ErrNoRows {
err = nil
sp = []space.Space{}
}
if err != nil {
err = errors.Wrap(err, fmt.Sprintf("failed space.GetViewable org %s", ctx.OrgID))
}

View file

@ -163,6 +163,11 @@ func (s Scope) GetSpaceUsers(ctx domain.RequestContext, spaceID string) (u []use
// GetUsersForSpaces returns users with access to specified spaces.
func (s Scope) GetUsersForSpaces(ctx domain.RequestContext, spaces []string) (u []user.User, err error) {
if len(spaces) == 0 {
u = []user.User{}
return
}
query, args, err := sqlx.In(`
SELECT u.id, u.refid, u.firstname, u.lastname, u.email, u.initials, u.password, u.salt, u.reset, u.created, u.revised, u.global,
a.active, a.users AS viewusers, a.editor, a.admin

File diff suppressed because one or more lines are too long

View file

@ -31,7 +31,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
didReceiveAttrs() {
this._super(...arguments);
this.loadBlocks();
Ember.run.schedule('afterRender', () => {
@ -44,13 +43,11 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
didRender() {
this._super(...arguments);
this.contentLinkHandler();
},
didInsertElement() {
this._super(...arguments);
this.setupAddWizard();
let self = this;
@ -61,9 +58,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
willDestroyElement() {
this._super(...arguments);
$('.start-section:not(.start-section-empty-state)').off('.hoverIntent');
this.destroyTooltips();
},
@ -112,7 +108,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
// out
$(this).find('.start-button').velocity("transition.slideUpOut", {duration: 300});
} });
});
});
},
addSection(model) {
@ -261,7 +257,7 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
this.set('toEdit', '');
}
this.setupAddWizard();
this.setupAddWizard();
});
},
@ -298,8 +294,8 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
const promise = this.addSection(model);
promise.then((id) => {
this.set('pageId', id);
this.setupAddWizard();
this.setupAddWizard();
});
},
@ -311,6 +307,6 @@ export default Ember.Component.extend(NotifierMixin, TooltipMixin, {
});
return true;
}
}
}
});

View file

@ -100,6 +100,16 @@ export default Ember.Component.extend(NotifierMixin, {
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate'));
});
// see if more than oen user is granted access to space (excluding everyone)
let roleCount = 0;
permissions.forEach((permission) => {
if (permission.get('userId') !== "0" &&
(permission.get('spaceView') || permission.get('documentAdd') || permission.get('documentEdit') || permission.get('documentDelete') ||
permission.get('documentMove') || permission.get('documentCopy') || permission.get('documentTemplate'))) {
roleCount += 1;
}
});
this.get('folderService').savePermissions(folder.get('id'), payload).then(() => {
this.showNotification('Saved permissions');
});
@ -108,7 +118,7 @@ export default Ember.Component.extend(NotifierMixin, {
folder.markAsPublic();
this.showNotification('Marked space as public');
} else {
if (permissions.length > 1) {
if (roleCount > 1) {
folder.markAsRestricted();
this.showNotification('Marked space as protected');
} else {

View file

@ -41,10 +41,10 @@ export default Ember.Component.extend(TooltipMixin, NotifierMixin, AuthMixin, {
publicFolders.pushObject(folder);
}
if (folder.get('folderType') === constants.FolderType.Private) {
protectedFolders.pushObject(folder);
privateFolders.pushObject(folder);
}
if (folder.get('folderType') === constants.FolderType.Protected) {
privateFolders.pushObject(folder);
protectedFolders.pushObject(folder);
}
});

View file

@ -32,23 +32,6 @@ export default Ember.Route.extend(AuthenticatedRouteMixin, {
this.set('links', data.links);
resolve();
});
// this.get('documentService').getDocument(this.get('documentId')).then((document) => {
// this.set('document', document);
// this.get('folderService').getAll().then((folders) => {
// this.set('folders', folders);
// this.get('folderService').getFolder(this.get('folderId')).then((folder) => {
// this.set('folder', folder);
// this.get('folderService').setCurrentFolder(folder).then(() => {
// this.set('permissions', this.get('folderService').get('permissions'));
// resolve();
// });
// });
// });
// });
});
},

View file

@ -10,12 +10,13 @@
// https://documize.com
import Ember from 'ember';
import NotifierMixin from '../../../mixins/notifier';
const {
inject: { service }
} = Ember;
export default Ember.Controller.extend({
export default Ember.Controller.extend(NotifierMixin, {
documentService: service('document'),
folderService: service('folder'),
localStorage: service('localStorage'),

View file

@ -336,7 +336,7 @@ export default Ember.Service.extend({
let doc = this.get('store').normalize('document', response.document);
doc = this.get('store').push(doc);
let perms = this.get('store').normalize('space-permission', response);
let perms = this.get('store').normalize('space-permission', response.permissions);
perms= this.get('store').push(perms);
this.get('folderService').set('permissions', perms);