Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@brainhubeu/react-permissible
Advanced tools
Making the permission management for React components easier.
react-permissible
is a React Component allowing to:
Currently there's no permission management in React, the existing components are either over-engineered (full ACL support etc.), or limited to role-based management. react-permissible
is simple at it's core and solves only one problem - accessing the Component if the necessary permissions are met, do something otherwise.
npm i @brainhubeu/react-permissible
You can use react-permissible
in two ways. As an ordinary component and as a Higher Order Component. Both approaches allow you to solve the permission-based rendering a little bit differently.
import { PermissibleRender } from '@brainhubeu/react-permissible';
...
render() {
return (
<PermissibleRender
userPermissions={permissions}
requiredPermissions={requiredPermissions}
renderOtherwise={AnotherComponent} // optional
oneperm // optional
>
<RestrictedComponent/>
</PermissibleRender>
);
}
Where:
userPermissions
is an array of permissions set for current userrequiredPermissions
is an array of required permissionsRestrictedComponent
is a component to renderThere are also optional props available:
oneperm
- only one of required permissions will be necessary (boolean)renderOtherwise
- another component to be rendered if the permissions do not match (the user isn't permitted).import { Permissible } from '@brainhubeu/react-permissible';
...
function callbackFunction({ userPermissions, requiredPermissions }) {
// do something
}
const RestrictedComponent = (
<p>Restricted component</p>
);
const PermissibleComponent = Permissible(
RestrictedComponent,
userPermissions,
requiredPermissions,
callbackFunction,
oneperm,
);
render() {
<PermissibleComponent />
}
Where:
RestrictedComponent
is a component to renderuserPermissions
is an array of permissions set for current userrequiredPermissions
is an array of required permissionsThere are also optional props available:
oneperm
- boolean determining that only one of required permissions will be necessary instead of requiring all passed permissions (default)renderOtherwise
- another component to be rendered if the permissions do not match (the user isn't permitted).import { PermissibleRender } from '@brainhubeu/react-permissible';
...
render() {
return (
<PermissibleRender
userPermissions={['ACCESS_DASHBOARD', 'ACCESS_ADMIN']}
requiredPermissions={['ACCESS_DASHBOARD', 'ACCESS_ADMIN']}
>
<RestrictedComponent/>
</PermissibleRender>
);
}
import { Permissible } from '@brainhubeu/react-permissible';
...
const PermissibleComponent = Permissible(
RestrictedComponent,
['ACCESS_ADMIN', 'ACCESS_DASHBOARD'], // userPermissions
['ACCESS_ADMIN', 'ACCESS_DASHBOARD'], // requiredPermissions
null, // no callback
false, // all permissions have to match
);
render() {
<PermissibleComponent />
}
import { PermissibleRender } from '@brainhubeu/react-permissible';
...
render() {
return (
<PermissibleRender
userPermissions={['ACCESS_ADMIN']}
requiredPermissions={['ACCESS_DASHBOARD', 'ACCESS_ADMIN']}
oneperm
>
<RestrictedComponent/>
</PermissibleRender>
);
}
import { Permissible } from '@brainhubeu/react-permissible';
...
const PermissibleComponent = Permissible(
RestrictedComponent,
['ACCESS_ADMIN'], // userPermissions
['ACCESS_ADMIN', 'ACCESS_DASHBOARD'], // requiredPermissions
null, // no callback
true, // one permission has to match
);
render() {
<PermissibleComponent />
}
import { PermissibleRender } from '@brainhubeu/react-permissible';
...
const NotAlowedComponent = (
<p>User not allowed.</p>
);
render() {
return (
<PermissibleRender
userPermissions={['ACCESS_DASHBOARD']}
requiredPermissions={['ACCESS_ADMIN']}
renderOtherwise={NotAllowedComponent}
>
<RestrictedComponent/>
</PermissibleRender>
);
}
import { Permissible } from '@brainhubeu/react-permissible';
...
function callbackFunction({ userPermissions, requiredPermissions }) {
console.log('Permissions do not match');
}
const PermissibleComponent = Permissible(
RestrictedComponent,
['ACCESS_DASHBOARD'], // userPermissions
['ACCESS_ADMIN'], // requiredPermissions
callbackFunction, // no callback
false, // all permissions have to match
);
render() {
<PermissibleComponent />
}
There is an exemplary app available, allowing to tinker with particular ways of permission management. To run the app:
npm run example
and go to localhost:3000.
npm test
PermissibleRender
componentFAQs
Permission management component for React
The npm package @brainhubeu/react-permissible receives a total of 88 weekly downloads. As such, @brainhubeu/react-permissible popularity was classified as not popular.
We found that @brainhubeu/react-permissible demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 11 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.