@zohodesk/permissions

1.3.1 • Public • Published

Restriction validation for your app

Creating Restriction Rules/ Read only messages for your app


import { READ_ONLY, SHOW, HIDE }  from '@zohodesk/permissions'

const restrictionRules = {
  <group-name>: {
    <features>: {
      <feature-action-1>: [SHOW, READ_ONLY],  //In array 1th position meant can we show ?, 2st position meant to can we readOnly ?
      <feature-action-2>: [SHOW, READ_ONLY],
      <feature-action-3>: [HIDE]
      }
    }
  }
};

const readyOnlyMessages = {
  <group-name>: {
    <features>: {
      <feature-action-1>: message ,
      <feature-action-2>: message ,
      <feature-action-3>: message
    }
  }
};

Restriction Rules

const restrictionRules = {
  tickets: {
    isSpam: {
      secondaryContact: [SHOW, READ_ONLY],
      timeline: [HIDE],
      mergeTicket: [SHOW, READ_ONLY],
       edit : [SHOW]
      }
    },
    bluePrintApplied: {
      status: [SHOW, READ_ONLY],
      move: [HIDE],
      edit : [HIDE]
    }
  },
  contacts: {
    anonymous_users : {
      edit: [HIDE],
      follow: [HIDE],
      add_tickets: [SHOW, READ_ONLY],
      add_products: [SHOW]
      }
    }
  }
  
};

Read Only Messages

const readOnlyMessages = {
  contacts: {
    anonymous_users: {
      edit: 'support.contacts.edit.field.locked',
      add_tickets: 'support.add_tickets.field.locked',
      add_products: 'support.add_products.field.locked'
    }
};

Permissions for your app

	const permission = {
		"tickets" : {
			create: true,
			delete: true,
			edit: true,
			export: true,
			import: true,
			view: true
		}
		
	}
	

license for your app

	const license = {
		agentAllowed: true,
		agentMaxCount: "100",
		manualTimeTrackingAllowed: true,
		ticketTemplateAllowed: true,
		timeTrackingAllowed: true,
		twilioAllowed: true,
		webFormsAllowed: true
	}
	

How to use in app

import { PermissionProvider }  from '@zohodesk/permissions'
<PermissionProvider
	{permission} 
	{license}
	{restrictionRules}
	{lockMessages}
>
{component}
</PermissionProvider>

Restriction handling into your app using util methods

How to use the it.
import { restrictionProviderUtils }  from '@zohodesk/permissions';
restrictionProviderUtils.getRestriction(features=[...], group-name , feature-action-1);

restrictionProviderUtils.getRestriction(['isSpam','bluePrintApplied'],'tickets','edit')
restrictionProviderUtils.getRestriction('isSpam','tickets','edit')

Restriction handling into your app using components

How to use the it.
import { RestrictionValidator }  from '@zohodesk/permissions';

<RestrictionValidator module={group-name}
    features={features [] or feature string} 
    action={feature or action}>
      
      {({isReadOnly,readOnlyMessage})=>{
      
      	return (<span>
	      <Icon name='ZD-addNew' iconClass={iconClass} /> Add product
	    </span>)
      
      }}
	   
</RestrictionValidator>

YourComponent - we will add few props based on the restriction values - ReadOnly, readOnlyMessage isShow : false - By default, we will return null. In this case children won't be rendered.

<RestrictionValidator module={group-name}
        features={features [] or feature string} 
        action={feature or action}>
        
      <YourComponent />
      
  </RestrictionValidator>
  

handleShowHide - you can handle the show/hide 'isShow' into you component, simply passing props handleShowHide={false}

<RestrictionValidator module={group-name} handleShowHide={false}
        features={features [] or feature string} 
        action={feature or action}>
        
       {({isShow,isReadOnly,readOnlyMessage})=>{
      
      	if(!isShow){
      		return (<span>Add Contact</span>)
      	}
      	
      	return (<span>
	      <Icon name='ZD-addNew' iconClass={iconClass} /> Add product
	    </span>)
      
      }}
      
  </RestrictionValidator>

License and Permission validation for your app

import {  licensePermissionCheckHOC }  from '@zohodesk/permissions';

licensePermissionCheckHOC({
	validation : {
		license : ... ,
		permission : ...
	},
	
	customValdation : {...},
	
	Fallback : func..
})(YourComponent);

license - used to verify with user license. * , Any other permission - used to verify with user permissions. * , Any other * - Means all.

License Permission validation in connected components


import { connect } from 'react-redux';
import { compose } from 'redux';
import { getPermission } from 'provider';
import { ALL , licensePermissionCheckHOC }  from '@zohodesk/permissions';

export defult compose(connect(...),
licensePermissionCheckHOC({
	validation : {
		license : ALL,
		permission : getPermission("tickets", "create")
	},
	
	customValdation : {...},
	
	Fallback : func..

})
)(YourComponent);

License Permission validation in connected components AND OR Operations ==> && , ||


import { connect } from 'react-redux';
import { compose } from 'redux';
import { getPermission } from 'provider';
import { ALL , licensePermissionCheckHOC }  from '@zohodesk/permissions';

export defult compose(connect(...),
licensePermissionCheckHOC({
	validation : {
		license : ALL,
		permission : getPermission("tickets", "create") + "&&"+ getPermission("tickets", "edit")
	},
	
	customValdation : {...},
	
	Fallback : func..

})
)(YourComponent);

License Permission validation with custom permission checks.


let YourComponentNew =  licensePermissionCheckHOC({

	validation : {
		license : ALL,
		permission : ALL
	},
	
	customValdation : {
		canMove :(props)=>{
			
			let { module , checkMoveOption } = props;
			
			let permission = `${module}_view`;
			if(crossDepartmentsMove){
				permission += `&&${module}_crossDepartmentMove`
			}
			
			return {
				permission ,
				obj : true,
				falseObj : false
			}
			
		}
		
	},
	
	Fallback : func..

})(YourComponent);

<YourComponentNew  module="tickets" checkMoveOption={true} />
<YourComponentNew  module="tasks" checkMoveOption={true} />

License Permission validation with your app using util methods

import { licensePermissionProviderUtils } from '@zohodesk/permissions';

let {licenseSuccess, permissionSuccess, permissionProps, failedCases} = licensePermissionProviderUtils.getLicensePermissionCheck({
    license : ALL,
    permission : ALL
});

if(licenseSuccess && permissionSuccess){  
  return <Component />
}

License Permission validation with LicensePermissionHandler direct handling.

import { LicensePermissionHandler } from '@zohodesk/permissions';

<LicensePermissionHandler 
    SuccessComponent={YourComponent}
    FallbackComponent={null}
    validationProps={{
        license : ALL,
        permission : ALL
    }}
/>

/@zohodesk/permissions/

    Package Sidebar

    Install

    npm i @zohodesk/permissions

    Weekly Downloads

    140

    Version

    1.3.1

    License

    MIT

    Unpacked Size

    108 kB

    Total Files

    25

    Last publish

    Collaborators

    • hariharan_vs
    • eldhose_saji
    • sankara.subramanian
    • madhubalan
    • deekay.npm
    • sheikbasheeth
    • jos33
    • rajsekar.haribalan
    • selvakumar.pl
    • muthumari
    • sundarrajkumar.m
    • prakash.m
    • maheshmdr
    • _dev_johnson
    • karuppiah.r
    • navas-0968
    • vallinayagam.t
    • iambk
    • lakshmi_ts
    • mariappan.r
    • antro.j
    • ganeshkumar.m
    • vimalesan
    • skumaresan
    • kathiresan.r
    • jesinth
    • sriramamoorthy
    • lingam
    • ponkumar.s
    • sudalaimuthu
    • iniankarthick
    • johnson_raavanan
    • ksamy2020
    • kumaresanm
    • villuvicky
    • indragith
    • subashree