diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index 925aac7a881fce50bf971f765a560042755bf468..85a73988173d89e26196b32f9feeadb0ce1bf378 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -130,11 +130,11 @@ export const currentUserIsAuthor = (state, id) => { .includes(id) } -export const getUserPermissions = ({ currentUser }) => - get(currentUser, 'user.teams', []).map(t => ({ - objectId: t.object.id, - objectType: t.object.type, - role: t.teamType.permissions, +export const getUserPermissions = ({ teams = [] }) => + teams.map(t => ({ + objectId: get(t, 'object.id', ''), + objectType: get(t, 'object.type', ''), + role: get(t, 'teamType.permissions', ''), })) export const userNotConfirmed = ({ currentUser }) => diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js index ac4868da0b46a6367c6241e128a699d413fb9f63..e24d81b07432d510a7285a26c3a344092371c9e9 100644 --- a/packages/component-manuscript/src/components/ManuscriptPage.js +++ b/packages/component-manuscript/src/components/ManuscriptPage.js @@ -79,6 +79,7 @@ export default compose( actions.getCollection({ id: match.params.project }), actions.getFragments({ id: match.params.project }), actions.getUsers(), + actions.getTeams(), ]), connect( (state, { match }) => ({ diff --git a/packages/components-faraday/src/components/Dashboard/DashboardPage.js b/packages/components-faraday/src/components/Dashboard/DashboardPage.js index eda5819b44ca04a7b91afc876a6cec42bba2569c..53ddd108697086d50fcd4907e8f5fc5f2b66f579 100644 --- a/packages/components-faraday/src/components/Dashboard/DashboardPage.js +++ b/packages/components-faraday/src/components/Dashboard/DashboardPage.js @@ -16,7 +16,11 @@ import { Dashboard } from './' import { priorityFilter, orderFilter, withFiltersHOC } from '../Filters' export default compose( - ConnectPage(() => [actions.getCollections(), actions.getUsers()]), + ConnectPage(() => [ + actions.getCollections(), + actions.getUsers(), + actions.getTeams(), + ]), connect( state => { const { collections, conversion } = state diff --git a/packages/xpub-faraday/config/authsome-mode.js b/packages/xpub-faraday/config/authsome-mode.js index 6257394fa1137a46f003d1f8254a249dcf29c2ea..5df5dcb144f19f22eea2a977f0dc2f330d78562f 100644 --- a/packages/xpub-faraday/config/authsome-mode.js +++ b/packages/xpub-faraday/config/authsome-mode.js @@ -161,6 +161,14 @@ async function applyAuthenticatedUserPolicy(user, operation, object, context) { models: context.models, }) } + + if (get(object, 'path', '') === '/teams') { + return { + filter: teams => { + return teams.filter(t => user.teams.includes(t.id)) + }, + } + } } if (operation === 'POST') {