From 8fd561c37a7f47e124c002f23e69339519f784cc Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Mon, 20 Nov 2017 08:39:42 -0200 Subject: [PATCH] - Permissions schema - Permissions call --- app/lib/realm.js | 21 ++++++++++++++++++++- app/lib/rocketchat.js | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/lib/realm.js b/app/lib/realm.js index 72481b5ee..39c243598 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -22,6 +22,23 @@ const settingsSchema = { } }; +const permissionsRolesSchema = { + name: 'permissionsRoles', + properties: { + value: 'string' + } +}; + +const permissionsSchema = { + name: 'permissions', + primaryKey: '_id', + properties: { + _id: 'string', + _server: 'servers', + roles: { type: 'list', objectType: 'permissionsRoles' } + } +}; + const roomsSchema = { name: 'rooms', primaryKey: '_id', @@ -128,7 +145,9 @@ const realm = new Realm({ usersSchema, roomsSchema, attachment, - messagesEditedBySchema + messagesEditedBySchema, + permissionsSchema, + permissionsRolesSchema ] }); export default realm; diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 471f56490..6adc45303 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -83,6 +83,29 @@ const RocketChat = { reduxStore.dispatch(actions.setAllSettings(settings)); }); + Meteor.call('permissions/get', (err, data) => { + if (err) { + console.error(err); + } + + const permissions = {}; + realm.write(() => { + data.forEach((item) => { + const permission = { + _id: item._id, + roles: [] + }; + permission._server = { id: reduxStore.getState().server.server }; + item.roles.forEach((role) => { + permission.roles.push({ value: role }); + }); + realm.create('permissions', permission, true); + permissions[item._id] = permission; + }); + }); + // reduxStore.dispatch(actions.setAllPermissions(permissions)); + }); + Meteor.ddp.on('changed', (ddbMessage) => { if (ddbMessage.collection === 'stream-room-messages') { realm.write(() => {