22.13.0 • Published 5 months ago

@commercetools-frontend/permissions v22.13.0

Weekly downloads
27
License
MIT
Repository
github
Last release
5 months ago

@commercetools-frontend/permissions

React components to declaratively handle MC permissions.

  • branchOnPermissions()
  • <RestrictedByPermissions>
  • injectAuthorized()

A requested permission has the following shape:

enum Permission {
  ManageProject
  ManageCustomers
  ManageOrders
  ManageProducts
  ViewCustomers
  ViewOrders
  ViewProducts
}

// ⚠️ This is deprecated 👇
type Permission {
  mode: view|manage;
  resource: String; // one of `products`, `orders`, ...
}

Install

$ npm install --save @commercetools-frontend/permissions

branchOnPermissions(permissions, [FallbackComponent], [options])

A HoC that will render a fallback component if the requested permissions don't match with the user permissions.

branchOnPermissions(
  permissions: [Permission],
  unauthorizedComponent: ?UnauthorizedComponent,
  options: ?Object
): HoC

Arguments

  • permissions: an array of Permission, requested by the component
  • UnauthorizedComponent: (optional) a reference to a React component to be rendered in case the permissions don't match
  • options (optional)
    • some: determines if some or every requested permission should match (default false)

Example

// Only render a component when the user has the requested permissions
const TopFiveProducts = () =>
  // ...

  branchOnPermissions([ViewProducts, ViewOrders])(TopFiveProducts);
// Render a different component when the user doesn't have the requested permissions
const ReadOnlyInput = () => // ...
const Input = () => // ...

branchOnPermissions([ViewProducts], ReadOnlyInput)(Input)

<RestrictedByPermissions>

A React component that will render its children if the requested permissions match, otherwise a fallback component.

This is the React version of the branchOnPermissions HoC.

<RestrictedByPermissions
  permissions={[]}
  unauthorizedComponent={Unauthorized}
  shouldMatchSomePermissions={true}
>
  <MyAuthorizedComponent />
</RestrictedByPermissions>

Props

  • permissions: an array of Permission, requested by the component
  • unauthorizedComponent: (optional) a function return an React element to be rendered in case the permissions don't match
  • render: (optional) a function returning an React element or a node to be rendered in case the permissions match
    • Note: when a function is passed it will get an invoked with an object containing isAuthorized e.g. ({ isAuthorized }) => <div />
  • children: (optional) a function returning an React element or a node to be rendered in case the permissions match
    • Note: when a function is passed it will get an invoked with an object containing isAuthorized e.g. ({ isAuthorized }) => <div />
  • shouldMatchSomePermissions: (optional) determines if some or every requested permission should match (default false)

Examples

const Unauthorized = () => <p>{'No permissions to see this'}</p>;
const Dashboard = () => (
  <div>
    <RestrictedByPermissions
      permissions={[ViewProducts]}
      unauthorizedComponent={Unauthorized}
    >
      <TopFiveProducts />
    </RestrictedByPermissions>
    <RestrictedByPermissions
      permissions={[ViewProducts, ViewOrders]}
      shouldMatchSomePermissions={true}
    >
      {({ isAuthorized }) => <RevenueChart isDisabled={!isAuthorized} />}
    </RestrictedByPermissions>
  </div>
);

injectAuthorized(permissions, [options])

Like branchOnPermissions, but without the FallbackComponent.

This is meant to be used in cases where only the isAuthorized prop is needed to be injected.

injectAuthorized(
  permissions: [Permission],
  options: ?Object
): HoC

Arguments

  • permissions: an array of Permission, requested for the child component to be allowed to render
  • options (optional)
    • some: determines if some or every requested permission should match (default false)

Example

const InputField = props => (
  <Input
    //...
    disabled={!props.isAuthorized}
  />
);

injectAuthorized([ViewProducts, ViewOrders])(InputField);
22.10.0

6 months ago

22.6.0

9 months ago

22.8.4

7 months ago

22.8.3

7 months ago

22.8.2

7 months ago

22.8.1

7 months ago

22.8.0

7 months ago

22.12.0

5 months ago

22.3.4

10 months ago

22.3.3

10 months ago

22.5.0

9 months ago

22.7.1

8 months ago

22.7.0

8 months ago

22.9.1

7 months ago

22.13.0

5 months ago

22.11.0

6 months ago

22.4.0

9 months ago

22.3.2

10 months ago

22.3.1

10 months ago

22.1.0

12 months ago

22.3.0

11 months ago

22.2.1

12 months ago

22.2.0

12 months ago

21.25.2

1 year ago

21.25.1

1 year ago

21.25.0

1 year ago

22.0.1

1 year ago

22.0.0

1 year ago

21.24.0

1 year ago

21.24.3

1 year ago

21.24.2

1 year ago

21.24.1

1 year ago

21.23.10

1 year ago

21.23.9

1 year ago

21.23.8

1 year ago

21.23.7

1 year ago

21.23.6

1 year ago

21.23.5

1 year ago

21.22.1

1 year ago

21.22.0

1 year ago

21.23.1

1 year ago

21.23.0

1 year ago

21.23.4

1 year ago

21.23.3

1 year ago

21.23.2

1 year ago

21.19.0

1 year ago

21.20.0

1 year ago

21.20.4

1 year ago

21.20.3

1 year ago

21.20.2

1 year ago

21.20.1

1 year ago

21.20.5

1 year ago

21.18.1

1 year ago

21.18.0

2 years ago

21.21.2

1 year ago

21.21.1

1 year ago

21.21.0

1 year ago

21.17.0

2 years ago

21.16.0

2 years ago

21.13.0

2 years ago

21.13.1

2 years ago

21.15.0

2 years ago

21.14.3

2 years ago

21.14.2

2 years ago

21.14.1

2 years ago

21.14.0

2 years ago

21.8.1

2 years ago

21.8.0

2 years ago

21.11.0

2 years ago

21.9.0

2 years ago

21.12.0

2 years ago

21.10.0

2 years ago

21.6.0

2 years ago

21.2.1

2 years ago

21.3.0

2 years ago

21.3.4

2 years ago

21.0.0-rc.3

2 years ago

21.0.0-rc.1

2 years ago

21.0.0-rc.0

2 years ago

21.0.0

2 years ago

20.12.1

2 years ago

20.12.3

2 years ago

20.11.0

2 years ago

20.10.6

2 years ago

20.12.0

2 years ago

20.10.4

3 years ago

20.10.3

3 years ago

20.10.1

3 years ago

20.9.4

3 years ago

20.9.3

3 years ago

20.9.0

3 years ago

20.8.0

3 years ago

20.7.0

3 years ago

20.5.2

3 years ago

20.5.1

3 years ago

20.3.1

3 years ago

20.3.0

3 years ago

20.4.0

3 years ago

20.5.0

3 years ago

19.3.1

3 years ago

20.0.1

3 years ago

20.1.2

3 years ago

20.2.1

3 years ago

19.0.1

3 years ago

19.0.0

3 years ago

18.7.0

3 years ago

18.6.0

3 years ago

18.5.6

3 years ago

18.5.2

3 years ago

18.5.1

3 years ago

18.4.1

3 years ago

18.4.0

3 years ago

18.2.2

3 years ago

18.1.4

3 years ago

18.1.0

3 years ago

17.10.1

3 years ago

17.10.0

3 years ago

17.8.0

3 years ago

17.9.0

3 years ago

17.7.1

3 years ago

17.7.0

3 years ago

17.6.2

3 years ago

17.6.0

3 years ago

17.4.1

3 years ago

17.3.1

3 years ago

17.3.0

3 years ago

17.2.1

3 years ago

17.2.0

3 years ago

17.1.1

3 years ago

17.1.0

3 years ago

17.0.1

4 years ago

17.0.0

4 years ago

16.18.0

4 years ago

16.17.0

4 years ago

16.16.4

4 years ago

16.16.1

4 years ago

16.16.0

4 years ago

16.15.9

4 years ago

16.15.8

4 years ago

16.15.3

4 years ago

16.15.2

4 years ago

16.15.0

4 years ago

16.14.0

4 years ago

16.12.0

4 years ago

16.10.0

4 years ago

16.9.1

4 years ago

16.9.0

4 years ago

16.8.8

4 years ago

16.8.6

4 years ago

16.8.5

4 years ago

16.8.4

4 years ago

16.8.3

4 years ago

16.8.1-canary.8

4 years ago

16.8.1-canary.9

4 years ago

16.8.1-canary.1

4 years ago

16.8.1-canary.7

4 years ago

16.8.1-canary.0

4 years ago

16.8.0

4 years ago

16.7.2-canary.6

4 years ago

16.7.2-canary.5

4 years ago

16.7.2-canary.4

4 years ago

16.7.2-canary.3

4 years ago

16.7.2-canary.2

4 years ago

16.7.2-canary.1

4 years ago

16.7.2-canary.0

4 years ago

16.7.1-canary.8

4 years ago

16.7.1

4 years ago

16.7.1-canary.7

4 years ago

16.7.1-canary.1

4 years ago

16.7.1-canary.3

4 years ago

16.7.1-canary.2

4 years ago

16.7.1-canary.5

4 years ago

16.7.1-canary.4

4 years ago

16.7.1-canary.6

4 years ago

16.7.1-canary.0

4 years ago

16.6.2-canary.15

4 years ago

16.6.2-canary.13

4 years ago

16.7.0

4 years ago

16.6.2-canary.11

4 years ago

16.6.2-canary.10

4 years ago

16.6.2-canary.9

4 years ago

16.6.2-canary.8

4 years ago

16.6.2-canary.7

4 years ago

16.6.2-canary.6

4 years ago

16.6.2-canary.5

4 years ago

16.6.2-canary.0

4 years ago

16.6.1-canary.2

4 years ago

16.6.1-canary.1

4 years ago

16.6.1-canary.0

4 years ago

16.5.4-canary.10

4 years ago

16.6.0

4 years ago

16.5.4-canary.9

4 years ago

16.5.4-canary.8

4 years ago

16.5.4-canary.4

4 years ago

16.5.4-canary.5

4 years ago

16.5.4-canary.6

4 years ago

16.5.4-canary.3

4 years ago

16.5.4-canary.2

4 years ago

16.5.4-canary.1

4 years ago

16.5.4-canary.0

4 years ago

16.5.3-canary.3

4 years ago

16.5.3

4 years ago

16.5.3-canary.2

4 years ago

16.5.3-canary.1

4 years ago

16.5.2

4 years ago

16.5.3-canary.0

4 years ago

16.5.2-canary.2

4 years ago

16.5.2-canary.0

4 years ago

16.5.1-canary.1

4 years ago

16.5.1-canary.3

4 years ago

16.5.1-canary.2

4 years ago

16.5.0

4 years ago

16.3.4-canary.20

4 years ago

16.3.4-canary.19

4 years ago

16.5.1-canary.0

4 years ago

16.3.4-canary.17

4 years ago

16.3.4-canary.18

4 years ago

16.3.4-canary.14

4 years ago

16.3.4-canary.11

4 years ago

16.3.4-canary.12

4 years ago

16.3.4-canary.10

4 years ago

16.3.4-canary.9

4 years ago

16.3.4-canary.7

4 years ago

16.3.4-canary.8

4 years ago

16.3.4-canary.5

4 years ago

16.4.0

4 years ago

16.3.4-canary.4

4 years ago

16.3.4-canary.1

4 years ago

16.3.4-canary.2

4 years ago

16.3.4-canary.3

4 years ago

16.3.4-canary.0

4 years ago

16.3.3

4 years ago

16.3.3-canary.5

4 years ago

16.3.3-canary.4

4 years ago

16.3.3-canary.3

4 years ago

16.3.3-canary.2

4 years ago

16.3.3-canary.1

4 years ago

16.3.2-canary.1

4 years ago

16.3.3-canary.0

4 years ago

16.3.2-canary.0

4 years ago

16.3.1

4 years ago

16.3.1-canary.1

4 years ago

16.3.1-canary.0

4 years ago

16.3.0

4 years ago

16.2.3-canary.12

4 years ago

16.2.3-canary.11

4 years ago

16.2.3-canary.9

4 years ago

16.2.3-canary.10

4 years ago

16.2.3-canary.8

4 years ago

16.2.3-canary.7

4 years ago

16.2.3-canary.6

4 years ago

16.2.3-canary.5

4 years ago

16.2.3-canary.4

4 years ago

16.2.3-canary.2

4 years ago

16.2.3-canary.3

4 years ago

16.2.3-canary.1

4 years ago

16.2.3-canary.0

4 years ago

16.2.2

4 years ago

16.2.2-canary.5

4 years ago

16.2.2-canary.2

4 years ago

16.2.2-canary.3

4 years ago

16.2.2-canary.4

4 years ago

16.2.2-canary.1

4 years ago

16.2.2-canary.0

4 years ago

16.1.1-canary.13

4 years ago

16.1.2-canary.0

4 years ago

16.2.1

4 years ago

16.1.1

4 years ago

16.2.1-canary.0

4 years ago

16.1.1-canary.10

4 years ago

16.1.1-canary.9

4 years ago

16.1.1-canary.8

4 years ago

16.1.1-canary.7

4 years ago

16.1.1-canary.6

4 years ago

16.1.1-canary.5

4 years ago

16.1.1-canary.4

4 years ago

16.0.3-canary.4

4 years ago

16.0.3-canary.5

4 years ago

16.0.3-canary.3

4 years ago

16.0.3-canary.0

4 years ago

16.0.3-canary.2

4 years ago

16.0.2

4 years ago

16.0.2-canary.0

4 years ago

15.9.1-canary.13

4 years ago

15.9.1-canary.12

4 years ago

16.0.0

4 years ago

15.9.1-canary.0

4 years ago

15.9.0

4 years ago

15.8.1-canary.10

4 years ago

15.8.1-canary.9

4 years ago

15.8.1-canary.8

4 years ago

15.8.1-canary.3

4 years ago

15.8.1-canary.4

4 years ago

15.8.0

4 years ago

15.7.1-canary.9

4 years ago

15.7.1-canary.3

4 years ago

15.7.0

4 years ago

15.6.3-canary.3

4 years ago

15.6.3-canary.1

4 years ago

15.6.2

4 years ago

15.6.2-canary.8

4 years ago

15.6.0

4 years ago

15.5.1-canary.22

4 years ago

15.5.1-canary.21

4 years ago

15.5.1-canary.14

4 years ago

15.5.1-canary.2

4 years ago

15.4.2

4 years ago

15.4.1

4 years ago

15.4.1-canary.2

4 years ago

15.3.9

4 years ago

15.3.9-canary.0

4 years ago

15.3.8

4 years ago

15.3.8-canary.4

4 years ago

15.3.7

4 years ago

15.3.7-canary.2

4 years ago

15.3.4

4 years ago

15.3.4-canary.3

4 years ago

15.3.3

4 years ago

15.3.2

4 years ago

15.3.0

4 years ago

15.2.1-canary.1

5 years ago

15.2.1

5 years ago

15.2.0

5 years ago

15.1.9-canary.1

5 years ago

15.1.8

5 years ago

15.1.8-canary.15

5 years ago

15.1.8-canary.14

5 years ago

15.1.8-canary.12

5 years ago

15.1.8-canary.4

5 years ago

15.1.7

5 years ago

15.1.7-canary.6

5 years ago

15.1.7-canary.3

5 years ago

15.1.6

5 years ago

15.1.6-canary.5

5 years ago

15.1.6-canary.4

5 years ago

15.1.6-canary.0

5 years ago

15.1.4-canary.20

5 years ago

15.1.5

5 years ago

15.2.0-alpha.0

5 years ago

15.1.4-canary.16

5 years ago

15.1.4-canary.14

5 years ago

15.1.4

5 years ago

15.1.4-canary.10

5 years ago

15.1.4-canary.9

5 years ago

15.1.4-canary.8

5 years ago

15.1.4-canary.7

5 years ago

15.1.4-canary.3

5 years ago

15.1.4-canary.0

5 years ago

15.0.0

5 years ago

14.6.1-canary.2

5 years ago

14.6.1

5 years ago

14.6.1-canary.0

5 years ago

15.0.0-alpha.3

5 years ago

15.0.0-alpha.2

5 years ago

14.6.0

5 years ago

15.0.0-alpha.1

5 years ago

15.0.0-alpha.0

5 years ago

14.5.1-canary.1

5 years ago

14.4.2-canary.5

5 years ago

14.4.2-canary.4

5 years ago

14.5.0

5 years ago

14.4.2-canary.1

5 years ago

14.4.1

5 years ago

14.4.1-canary.0

5 years ago

14.4.0

5 years ago

14.3.6-canary.4

5 years ago

14.3.6-canary.2

5 years ago

14.3.6-canary.3

5 years ago

14.3.5

5 years ago

14.3.5-canary.1

5 years ago

14.3.1

5 years ago

14.3.1-canary.1

5 years ago

14.3.0

5 years ago

14.2.1-canary.15

5 years ago

14.2.1-alpha.0

5 years ago

14.2.1-canary.9

5 years ago

14.2.1-canary.3

5 years ago

14.2.1-canary.1

5 years ago

14.2.0

5 years ago

14.2.0-alpha.0

5 years ago

14.1.2-canary.3

5 years ago

14.1.2-canary.0

5 years ago

14.1.1-canary.3

5 years ago

14.1.1

5 years ago

14.1.1-canary.0

5 years ago

14.1.0

5 years ago

14.0.1-canary.6

5 years ago

14.0.0

5 years ago

14.0.0-alpha.6

5 years ago

14.0.0-alpha.5

5 years ago

14.0.0-alpha.4

5 years ago

14.0.0-alpha.3

5 years ago

14.0.0-alpha.2

5 years ago

14.0.0-alpha.1

5 years ago

14.0.0-alpha.0

5 years ago

13.13.3

5 years ago

13.13.3-canary.0

5 years ago

13.13.2-canary.0

5 years ago

13.13.2

5 years ago

13.12.2

5 years ago

13.12.0

5 years ago

13.11.1-canary.9

5 years ago

13.11.1-canary.3

5 years ago

13.11.0

5 years ago

13.10.1-canary.9

5 years ago

13.10.1-canary.4

5 years ago

13.10.1-canary.2

5 years ago

13.10.1-canary.1

5 years ago

13.10.0

5 years ago

13.9.2-canary.25

5 years ago

13.9.2-canary.21

5 years ago

13.9.2-canary.20

5 years ago

13.9.2-canary.18

5 years ago

13.9.2-canary.5

5 years ago

13.9.0

5 years ago

13.8.2-canary.17

5 years ago

13.8.2-canary.16

5 years ago

13.8.2-canary.14

5 years ago

13.8.2-canary.13

5 years ago

13.7.0

5 years ago

13.6.1-canary.6

5 years ago

13.6.1-canary.3

5 years ago

13.5.0

5 years ago

13.4.3-canary.3

5 years ago

13.3.6

5 years ago

13.3.6-canary.0

5 years ago

13.3.5

5 years ago

13.1.0

5 years ago

13.0.3-canary.1

5 years ago

13.0.3-canary.0

5 years ago

13.0.0

5 years ago

12.2.3-canary.4

5 years ago

12.2.3-canary.0

5 years ago

12.2.2

5 years ago

12.2.2-canary.1

5 years ago

12.0.0

5 years ago

11.4.0

5 years ago

11.3.1-canary.3

5 years ago

11.2.0

5 years ago

11.1.0

5 years ago

11.0.0

5 years ago

10.0.1-canary.13

5 years ago

10.0.1-canary.8

5 years ago

10.0.0

5 years ago

9.0.2-canary.3

5 years ago

9.0.2-canary.2

5 years ago

9.0.0

5 years ago

8.0.0

5 years ago

7.3.5-canary.4

5 years ago

7.3.5-canary.0

5 years ago

7.2.0

5 years ago

7.1.4-canary.1

5 years ago

7.0.0

5 years ago

6.0.1-canary.7

5 years ago

6.0.0

5 years ago

5.1.2-canary.0

5 years ago

5.1.0

5 years ago

5.0.4-canary.8

5 years ago

5.0.2

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.4.0

5 years ago

4.3.0

5 years ago

4.1.0

5 years ago

4.0.0

5 years ago

3.0.0

5 years ago

2.4.0

5 years ago

2.3.2

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.0

5 years ago

1.0.0-rc.3

5 years ago

1.0.1-beta.0

5 years ago

1.0.0-rc.2

6 years ago

1.0.0-rc.1

6 years ago

1.0.0-rc.0

6 years ago

1.0.0-beta.36

6 years ago

1.0.0-beta.35

6 years ago

1.0.0-beta.34

6 years ago

1.0.0-beta.33

6 years ago

1.0.0-beta.32

6 years ago

1.0.0-beta.31

6 years ago

1.0.0-beta.30

6 years ago

1.0.0-beta.29

6 years ago

1.0.0-beta.28

6 years ago

1.0.0-beta.27

6 years ago

1.0.0-beta.26

6 years ago

1.0.0-beta.25

6 years ago

1.0.0-beta.24

6 years ago

1.0.0-beta.23

6 years ago

1.0.0-beta.17

6 years ago

1.0.0-beta.15

6 years ago

1.0.0-beta.14

6 years ago

1.0.0-beta.13

6 years ago

1.0.0-beta.12

6 years ago

1.0.0-beta.11

6 years ago

1.0.0-beta.10

6 years ago

1.0.0-beta.9

6 years ago

1.0.0-beta.8

6 years ago

1.0.0-beta.7

6 years ago

1.0.0-beta.6

6 years ago

1.0.0-beta.5

6 years ago

1.0.0-beta.4

6 years ago

1.0.0-beta.3

6 years ago

1.0.0-beta.2

6 years ago

1.0.0-beta.1

6 years ago

1.0.0-beta.0

6 years ago