@instincthub/react-ui 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/auth/PermissionWrapper.js +2 -0
- package/dist/src/components/auth/PermissionWrapper.js.map +1 -0
- package/dist/src/components/lib/index.js +1 -1
- package/dist/src/components/lib/index.js.map +1 -1
- package/dist/src/components/lib/permissions.js +1 -1
- package/dist/src/components/lib/permissions.js.map +1 -1
- package/dist/src/components/ui/ComponentLists.js +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/types/components/auth/PermissionWrapper.d.ts +94 -0
- package/dist/src/types/components/auth/index.d.ts +1 -0
- package/dist/src/types/components/lib/permissions.d.ts +113 -0
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/types/index.d.ts +1 -0
- package/dist/src/types/types/permissions.d.ts +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,Fragment as i}from"react/jsx-runtime";import{hasUserPermission as s}from"../lib/permissions.js";var r=function(r){var a=r.accessType,n=r.permissions,l=r.roleName,c=r.children,o=r.fallback,d=void 0===o?"Permission denied":o,m=r.className,p=void 0===m?"":m,t=r.hideOnDeny,v=void 0!==t&&t;return s({accessType:a,permissions:n,roleName:l})?p?e("div",{className:p,children:c}):e(i,{children:c}):v?null:p?e("div",{className:p,children:d}):e(i,{children:d})};export{r as default};
|
|
2
|
+
//# sourceMappingURL=PermissionWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionWrapper.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{getChannel,getData}from"./auth/dbRequestst.js";export{INSTRUCTOR_TYPE,ROLE_GROUPING,adminAccessValidation}from"./roles.js";export{AllCoursesdataList,COMMENTS_BY,DataList,accounts,dataList,pending,projectStartHistory,statesNigeria}from"./json/accounts.js";export{unsplashDefaultObject}from"./json/unsplashDefaultObject.js";export{default as createSubscription}from"./createSubscription.js";export{default as elementIsVisibleInViewport}from"./elementIsVisibleInViewport.js";export{default as handleFormErrors}from"./formError.js";export{default as fileToBase64}from"./fileToBase64.js";export{default as getPriceObjects}from"./getPriceObjects.js";export{default as convertArrayToObject}from"./convertArrayToObject.js";export{default as loadScript}from"./loadScript.js";export{formatTime}from"./format.js";export{API_HOST_URL,CODECS_URL_M3U8,FILE_URL,IN_DEV_MODE,TrackViewPort,VIDEO_URL,addUserDomain,calculateAmountAfterDeduction,calculateAverageRating,calculateTotalCredits,convertArrayToFormData,convertToFloat,convertToSlug,extractSubDomain,fetchAPI,fetchData,findNullOrEmptyKeys,formatDateToWord,formatDuration,formatNumberWithCommas,getCookie,getNestedValue,handleError,handleInvalid,handleResendOTP,handleStatusError,hostUrlEncode,isValidAlphanumeric,isValidEmail,objectIsEmpty,printErr,removeCookie,reqOptions,romansFigure,setCookie,slugifyFileName,spinBtn,stripCommaFromNumber,stripHtmlTags,toTitleCase,truncateHtml}from"./helpFunction.js";export{paystackHook,profile_goggle_provider}from"./oauth_json.js";export{chargeAuthorization,handlePaymentSubmit,payWithPaystack,paystackDataConfig}from"./paystack.js";export{findPermissions,headerKeyPermission,headerUsernamePermission}from"./permissions.js";export{ADMIN_PERMISSION,APPLICATION_FEE_TYPE_OPTIONS,CODE_LANGUAGES,COMPANY_SIZES_CHOICES,CONTENT_TYPE_OPTIONS,COURSE_REWARD_OPTIONS,CREDENTIALS,CURRENCY_SYMBOL,DURATION_FILTERS,INDUSTRIES,KEYWORD_DESCRIPTION,NEXT_AUTH_SESSION_DATA_DUMMY,NIGERIA_BANKS,PAYMENT_PROCESSING_OPTIONS,PRIVACY,PROGRAM_LEVELS,REGISTRAR_PERMISSION,SCOREBOARD_DURATION,SKILLS_LEVELS,STUDENT_STATUS,SUBSCRIPTION_OPTION,SUPER_PERMISSION,TRUE_FALSE,VIDEO_PLAYER_OPTIONS,YES_NO,gaugeData}from"./utils.js";export{buildDataFilterUrl,buildPaginationUrl,buildUrl,cleanUrl,getQueryParam,getQueryParams,hasQueryParam,navigateWithQuery,urlQueryHelper}from"./queryParameters/index.js";export{calculatePercentageChange,createTimeSeriesTemplate,formatChartValue,formatDateForChart,generateChartColors,groupAndAggregateData,transformChartData}from"./charts.js";export{getUserEmailInputModal,openConfirmModal,openToast}from"./modals/modals.js";export{openConfirmDelete}from"./modals/openConfirmDelete.js";var e="/assets/logo/instincthub-logo-color.png",t="/assets/logo/instincthub-logo-white.png",r="/assets/logo/instincthub-logo-black.png",a="/assets/logo/instincthub-logo-thumbnail.png";export{e as instinctHubLogoUrl,r as instinctHubLogoUrlBlack,t as instinctHubLogoUrlWhite,a as instinctHubThumbnailLogo};
|
|
1
|
+
export{getChannel,getData}from"./auth/dbRequestst.js";export{INSTRUCTOR_TYPE,ROLE_GROUPING,adminAccessValidation}from"./roles.js";export{AllCoursesdataList,COMMENTS_BY,DataList,accounts,dataList,pending,projectStartHistory,statesNigeria}from"./json/accounts.js";export{unsplashDefaultObject}from"./json/unsplashDefaultObject.js";export{default as createSubscription}from"./createSubscription.js";export{default as elementIsVisibleInViewport}from"./elementIsVisibleInViewport.js";export{default as handleFormErrors}from"./formError.js";export{default as fileToBase64}from"./fileToBase64.js";export{default as getPriceObjects}from"./getPriceObjects.js";export{default as convertArrayToObject}from"./convertArrayToObject.js";export{default as loadScript}from"./loadScript.js";export{formatTime}from"./format.js";export{API_HOST_URL,CODECS_URL_M3U8,FILE_URL,IN_DEV_MODE,TrackViewPort,VIDEO_URL,addUserDomain,calculateAmountAfterDeduction,calculateAverageRating,calculateTotalCredits,convertArrayToFormData,convertToFloat,convertToSlug,extractSubDomain,fetchAPI,fetchData,findNullOrEmptyKeys,formatDateToWord,formatDuration,formatNumberWithCommas,getCookie,getNestedValue,handleError,handleInvalid,handleResendOTP,handleStatusError,hostUrlEncode,isValidAlphanumeric,isValidEmail,objectIsEmpty,printErr,removeCookie,reqOptions,romansFigure,setCookie,slugifyFileName,spinBtn,stripCommaFromNumber,stripHtmlTags,toTitleCase,truncateHtml}from"./helpFunction.js";export{paystackHook,profile_goggle_provider}from"./oauth_json.js";export{chargeAuthorization,handlePaymentSubmit,payWithPaystack,paystackDataConfig}from"./paystack.js";export{CHANNEL_ADMIN_ROLES,CHANNEL_BLOGGER_ROLES,CHANNEL_EVENT_ROLES,CHANNEL_FINANCE_ROLES,CHANNEL_INSTRUCTOR_ROLES,CHANNEL_LEARNER_ROLES,CHANNEL_MODERATOR_ROLES,CHANNEL_REGISTRAR_ROLES,CHANNEL_SUPER_ADMIN_ROLES,ROLE_MAP,findPermissions,hasUserPermission,headerKeyPermission,headerUsernamePermission}from"./permissions.js";export{ADMIN_PERMISSION,APPLICATION_FEE_TYPE_OPTIONS,CODE_LANGUAGES,COMPANY_SIZES_CHOICES,CONTENT_TYPE_OPTIONS,COURSE_REWARD_OPTIONS,CREDENTIALS,CURRENCY_SYMBOL,DURATION_FILTERS,INDUSTRIES,KEYWORD_DESCRIPTION,NEXT_AUTH_SESSION_DATA_DUMMY,NIGERIA_BANKS,PAYMENT_PROCESSING_OPTIONS,PRIVACY,PROGRAM_LEVELS,REGISTRAR_PERMISSION,SCOREBOARD_DURATION,SKILLS_LEVELS,STUDENT_STATUS,SUBSCRIPTION_OPTION,SUPER_PERMISSION,TRUE_FALSE,VIDEO_PLAYER_OPTIONS,YES_NO,gaugeData}from"./utils.js";export{buildDataFilterUrl,buildPaginationUrl,buildUrl,cleanUrl,getQueryParam,getQueryParams,hasQueryParam,navigateWithQuery,urlQueryHelper}from"./queryParameters/index.js";export{calculatePercentageChange,createTimeSeriesTemplate,formatChartValue,formatDateForChart,generateChartColors,groupAndAggregateData,transformChartData}from"./charts.js";export{getUserEmailInputModal,openConfirmModal,openToast}from"./modals/modals.js";export{openConfirmDelete}from"./modals/openConfirmDelete.js";var e="/assets/logo/instincthub-logo-color.png",t="/assets/logo/instincthub-logo-white.png",r="/assets/logo/instincthub-logo-black.png",a="/assets/logo/instincthub-logo-thumbnail.png";export{e as instinctHubLogoUrl,r as instinctHubLogoUrlBlack,t as instinctHubLogoUrlWhite,a as instinctHubThumbnailLogo};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/lib/index.ts"],"sourcesContent":["// src/components/lib/index.ts\r\n\r\nexport * from \"./auth/dbRequestst\";\r\nexport * from \"./roles\";\r\n\r\n// JSON exports\r\nexport * from \"./json/accounts\";\r\nexport * from \"./json/countryNigeria\";\r\nexport * from \"./json/countryObjects\";\r\nexport * from \"./json/educationLevels\";\r\nexport * from \"./json/unsplashDefaultObject\";\r\n\r\n// Utility functions\r\nexport { default as createSubscription } from \"./createSubscription\";\r\nexport { default as elementIsVisibleInViewport } from \"./elementIsVisibleInViewport\";\r\nexport { default as handleFormErrors } from \"./formError\";\r\nexport { default as fileToBase64 } from \"./fileToBase64\";\r\nexport { default as getPriceObjects } from \"./getPriceObjects\";\r\nexport {default as convertArrayToObject} from \"./convertArrayToObject\";\r\nexport {default as loadScript} from \"./loadScript\";\r\nexport * from \"./format\";\r\nexport * from \"./helpFunction\";\r\nexport * from \"./oauth_json\";\r\nexport * from \"./paystack\";\r\nexport * from \"./permissions\";\r\nexport * from \"./utils\";\r\nexport * from \"./queryParameters\";\r\n\r\n// Charts\r\nexport * from \"./charts\";\r\n\r\n// Modals\r\nexport * from \"./modals/modals\";\r\nexport * from \"./modals/openConfirmDelete\";\r\n\r\n// Logo\r\nexport const instinctHubLogoUrl = \"/assets/logo/instincthub-logo-color.png\";\r\nexport const instinctHubLogoUrlWhite =\r\n \"/assets/logo/instincthub-logo-white.png\";\r\nexport const instinctHubLogoUrlBlack =\r\n \"/assets/logo/instincthub-logo-black.png\";\r\nexport const instinctHubThumbnailLogo =\r\n \"/assets/logo/instincthub-logo-thumbnail.png\";\r\n"],"names":["instinctHubLogoUrl","instinctHubLogoUrlWhite","instinctHubLogoUrlBlack","instinctHubThumbnailLogo"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/lib/index.ts"],"sourcesContent":["// src/components/lib/index.ts\r\n\r\nexport * from \"./auth/dbRequestst\";\r\nexport * from \"./roles\";\r\n\r\n// JSON exports\r\nexport * from \"./json/accounts\";\r\nexport * from \"./json/countryNigeria\";\r\nexport * from \"./json/countryObjects\";\r\nexport * from \"./json/educationLevels\";\r\nexport * from \"./json/unsplashDefaultObject\";\r\n\r\n// Utility functions\r\nexport { default as createSubscription } from \"./createSubscription\";\r\nexport { default as elementIsVisibleInViewport } from \"./elementIsVisibleInViewport\";\r\nexport { default as handleFormErrors } from \"./formError\";\r\nexport { default as fileToBase64 } from \"./fileToBase64\";\r\nexport { default as getPriceObjects } from \"./getPriceObjects\";\r\nexport {default as convertArrayToObject} from \"./convertArrayToObject\";\r\nexport {default as loadScript} from \"./loadScript\";\r\nexport * from \"./format\";\r\nexport * from \"./helpFunction\";\r\nexport * from \"./oauth_json\";\r\nexport * from \"./paystack\";\r\nexport * from \"./permissions\";\r\nexport * from \"./utils\";\r\nexport * from \"./queryParameters\";\r\n\r\n// Charts\r\nexport * from \"./charts\";\r\n\r\n// Modals\r\nexport * from \"./modals/modals\";\r\nexport * from \"./modals/openConfirmDelete\";\r\n\r\n// Logo\r\nexport const instinctHubLogoUrl = \"/assets/logo/instincthub-logo-color.png\";\r\nexport const instinctHubLogoUrlWhite =\r\n \"/assets/logo/instincthub-logo-white.png\";\r\nexport const instinctHubLogoUrlBlack =\r\n \"/assets/logo/instincthub-logo-black.png\";\r\nexport const instinctHubThumbnailLogo =\r\n \"/assets/logo/instincthub-logo-thumbnail.png\";\r\n"],"names":["instinctHubLogoUrl","instinctHubLogoUrlWhite","instinctHubLogoUrlBlack","instinctHubThumbnailLogo"],"mappings":"01FAoCO,IAAMA,EAAqB,0CACrBC,EACX,0CACWC,EACX,0CACWC,EACX"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{asyncToGenerator as r,regeneratorRuntime as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";var n=function(){var n=r(e().mark((function r(n,t){var
|
|
1
|
+
import{asyncToGenerator as r,regeneratorRuntime as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";var n=function(){var n=r(e().mark((function r(n,t){var R,N,u;return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(N=t.headers["x-instincthub-next-header"],u=t.headers.username,(null==n||null===(R=n.user)||void 0===R?void 0:R.username)===u&&N===process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER){r.next=4;break}return r.abrupt("return",!1);case 4:return r.abrupt("return",!0);case 5:case"end":return r.stop()}}),r)})));return function(r,e){return n.apply(this,arguments)}}(),t=function(){var n=r(e().mark((function r(n){return e().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n.headers["x-instincthub-next-header"]===process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER){r.next=3;break}return r.abrupt("return",!1);case 3:return r.abrupt("return",!0);case 4:case"end":return r.stop()}}),r)})));return function(r){return n.apply(this,arguments)}}(),R=function(r,e){return r.find((function(r){return e}))},N=["LEARNER","BLOGGER","MODERATOR","INSTRUCTOR","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],u=["BLOGGER","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],E=["EVENT","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],a=["MODERATOR","INSTRUCTOR","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],I=["INSTRUCTOR","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],s=["ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN"],o=["REGISTRAR","FINANCE","SUPER_ADMIN"],A=["FINANCE","SUPER_ADMIN"],i=["SUPER_ADMIN"],T={LEARNER:N,BLOGGER:u,EVENT:E,MODERATOR:a,INSTRUCTOR:I,ADMIN:s,REGISTRAR:o,FINANCE:A,SUPER_ADMIN:i},c=function(r){var e=r.accessType,n=r.permissions,t=r.roleName;if(!e)return!1;if(n)return n.some((function(r){return r.toLowerCase()===e.toLowerCase()}));return(t?T[t.toUpperCase()]||s:N).some((function(r){return r.toLowerCase()===e.toLowerCase()}))};export{s as CHANNEL_ADMIN_ROLES,u as CHANNEL_BLOGGER_ROLES,E as CHANNEL_EVENT_ROLES,A as CHANNEL_FINANCE_ROLES,I as CHANNEL_INSTRUCTOR_ROLES,N as CHANNEL_LEARNER_ROLES,a as CHANNEL_MODERATOR_ROLES,o as CHANNEL_REGISTRAR_ROLES,i as CHANNEL_SUPER_ADMIN_ROLES,T as ROLE_MAP,R as findPermissions,c as hasUserPermission,t as headerKeyPermission,n as headerUsernamePermission};
|
|
2
2
|
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sources":["../../../../src/components/lib/permissions.ts"],"sourcesContent":["import { NextApiRequest } from \"next\";\r\nimport { Session } from \"@/types/auth\";\r\n\r\n/**\r\n * Validates if the request has valid username and custom header\r\n * @param session - User session from NextAuth\r\n * @param req - Next.js API request object\r\n * @returns Promise<boolean> - True if the request has valid permissions\r\n */\r\nexport const headerUsernamePermission = async (\r\n session: Session | null,\r\n req: NextApiRequest\r\n): Promise<boolean> => {\r\n const customHeader = req.headers[\"x-instincthub-next-header\"] as string;\r\n const headerUsername = req.headers[\"username\"] as string;\r\n\r\n // Fixed logic error in the original code (negation was incorrectly applied)\r\n if (\r\n session?.user?.username !== headerUsername ||\r\n customHeader !== process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Validates if the request has a valid custom header\r\n * @param req - Next.js API request object\r\n * @returns Promise<boolean> - True if the request has a valid header\r\n */\r\nexport const headerKeyPermission = async (\r\n req: NextApiRequest\r\n): Promise<boolean> => {\r\n const customHeader = req.headers[\"x-instincthub-next-header\"] as string;\r\n\r\n if (customHeader !== process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Finds a permission in an array of permissions\r\n * @example\r\n * ```ts\r\n * findPermissions(REGISTRAR_PERMISSION, instructorType)\r\n * ```\r\n * @param permission - Array of permissions\r\n * @param option - Permission to find\r\n * @returns string | undefined - Permission if found, undefined if not found\r\n */\r\nexport const findPermissions = (\r\n permission: string[],\r\n option: string\r\n): string | undefined => {\r\n // Get array of permissions and user option and check if exist.\r\n return permission.find((i) => (i = option));\r\n};\r\n"],"names":["headerUsernamePermission","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","session","req","_session$user","customHeader","headerUsername","wrap","_context","prev","next","headers","user","username","process","env","NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER","abrupt","stop","_x","_x2","apply","this","arguments","headerKeyPermission","_ref2","_callee2","_context2","_x3","findPermissions","permission","option","find","i"],"mappings":"8GASaA,EAAwB,WAAA,IAAAC,EAAAC,EAAAC,IAAAC,MAAG,SAAAC,EACtCC,EACAC,GAAmB,IAAAC,EAAAC,EAAAC,EAAA,OAAAP,IAAAQ,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAKnB,GAHML,EAAeF,EAAIQ,QAAQ,6BAC3BL,EAAiBH,EAAIQ,QAAkB,UAI3CT,SAAaE,QAANA,EAAPF,EAASU,gBAAIR,SAAbA,EAAeS,YAAaP,GAC5BD,IAAiBS,QAAQC,IAAIC,sCAAqC,CAAAR,EAAAE,KAAA,EAAA,KAAA,CAAA,OAAAF,EAAAS,OAAA,UAE3D,GAAK,KAAA,EAAA,OAAAT,EAAAS,OAAA,UAGP,GAAI,KAAA,EAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAjB,EACZ,KAAA,OAAA,SAhBoCkB,EAAAC,GAAA,OAAAvB,EAAAwB,MAAAC,KAAAC,UAAA,CAAA,CAAA,GAuBxBC,EAAmB,WAAA,IAAAC,EAAA3B,EAAAC,IAAAC,MAAG,SAAA0B,EACjCvB,GAAmB,OAAAJ,IAAAQ,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,KAAA,EAEoD,GAAlDP,EAAIQ,QAAQ,+BAEZG,QAAQC,IAAIC,sCAAqC,CAAAW,EAAAjB,KAAA,EAAA,KAAA,CAAA,OAAAiB,EAAAV,OAAA,UAC7D,GAAK,KAAA,EAAA,OAAAU,EAAAV,OAAA,UAGP,GAAI,KAAA,EAAA,IAAA,MAAA,OAAAU,EAAAT,OAAA,GAAAQ,EACZ,KAAA,OAVYF,SAAmBI,GAAA,OAAAH,EAAAJ,MAAAC,KAAAC,UAAA,CAAA,CAAA,GAsBnBM,EAAkB,SAC7BC,EACAC,GAGA,OAAOD,EAAWE,MAAK,SAACC,GAAC,OAAUF,CAAM,GAC3C"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sources":["../../../../src/components/lib/permissions.ts"],"sourcesContent":["import { NextApiRequest } from \"next\";\r\nimport { Session } from \"@/types/auth\";\r\nimport { InstructorType } from \"@/types\";\r\n\r\n/**\r\n * Validates if the request has valid username and custom header\r\n * @param session - User session from NextAuth\r\n * @param req - Next.js API request object\r\n * @returns Promise<boolean> - True if the request has valid permissions\r\n */\r\nexport const headerUsernamePermission = async (\r\n session: Session | null,\r\n req: NextApiRequest\r\n): Promise<boolean> => {\r\n const customHeader = req.headers[\"x-instincthub-next-header\"] as string;\r\n const headerUsername = req.headers[\"username\"] as string;\r\n\r\n // Fixed logic error in the original code (negation was incorrectly applied)\r\n if (\r\n session?.user?.username !== headerUsername ||\r\n customHeader !== process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Validates if the request has a valid custom header\r\n * @param req - Next.js API request object\r\n * @returns Promise<boolean> - True if the request has a valid header\r\n */\r\nexport const headerKeyPermission = async (\r\n req: NextApiRequest\r\n): Promise<boolean> => {\r\n const customHeader = req.headers[\"x-instincthub-next-header\"] as string;\r\n\r\n if (customHeader !== process.env.NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Finds a permission in an array of permissions\r\n * @example\r\n * ```ts\r\n * findPermissions(REGISTRAR_PERMISSION, instructorType)\r\n * ```\r\n * @param permission - Array of permissions\r\n * @param option - Permission to find\r\n * @returns string | undefined - Permission if found, undefined if not found\r\n */\r\nexport const findPermissions = (\r\n permission: string[],\r\n option: string\r\n): string | undefined => {\r\n // Get array of permissions and user option and check if exist.\r\n return permission.find((i) => (i = option));\r\n};\r\n\r\n/**\r\n * Channel learner roles with full access to all permissions.\r\n * This is the most permissive role set, including all available roles.\r\n * Used as the default fallback when no specific role is provided.\r\n */\r\nexport const CHANNEL_LEARNER_ROLES: InstructorType[] = [\r\n \"LEARNER\",\r\n \"BLOGGER\",\r\n \"MODERATOR\",\r\n \"INSTRUCTOR\",\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel blogger roles with content creation and management permissions.\r\n * Includes blogger-specific permissions plus administrative roles.\r\n */\r\nexport const CHANNEL_BLOGGER_ROLES: InstructorType[] = [\r\n \"BLOGGER\",\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel event roles with event management and organizational permissions.\r\n * Includes event-specific permissions plus administrative roles.\r\n */\r\nexport const CHANNEL_EVENT_ROLES: InstructorType[] = [\r\n \"EVENT\",\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel moderator roles with content moderation and teaching permissions.\r\n * Includes moderation and instruction capabilities plus administrative roles.\r\n */\r\nexport const CHANNEL_MODERATOR_ROLES: InstructorType[] = [\r\n \"MODERATOR\",\r\n \"INSTRUCTOR\",\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel instructor roles with teaching and course management permissions.\r\n * Includes instruction capabilities plus administrative roles.\r\n */\r\nexport const CHANNEL_INSTRUCTOR_ROLES: InstructorType[] = [\r\n \"INSTRUCTOR\",\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel admin roles with administrative and management permissions.\r\n * Includes general administration plus higher-level administrative roles.\r\n */\r\nexport const CHANNEL_ADMIN_ROLES: InstructorType[] = [\r\n \"ADMIN\",\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel registrar roles with user registration and academic record permissions.\r\n * Includes registrar-specific capabilities plus financial and super_admin roles.\r\n */\r\nexport const CHANNEL_REGISTRAR_ROLES: InstructorType[] = [\r\n \"REGISTRAR\",\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel finance roles with financial management and billing permissions.\r\n * Includes finance-specific capabilities plus super_admin role.\r\n */\r\nexport const CHANNEL_FINANCE_ROLES: InstructorType[] = [\r\n \"FINANCE\",\r\n \"SUPER_ADMIN\",\r\n];\r\n\r\n/**\r\n * Channel super_admin roles with complete system access and control.\r\n * This is the most restrictive role set with only super_admin permissions.\r\n */\r\nexport const CHANNEL_SUPER_ADMIN_ROLES: InstructorType[] = [\"SUPER_ADMIN\"];\r\n\r\n/**\r\n * Role mapping object that connects role names to their corresponding permission arrays.\r\n * Used by hasUserPermission function to dynamically select appropriate permissions\r\n * based on the provided roleName parameter.\r\n *\r\n * @example\r\n * ```ts\r\n * // Get permissions for instructor role\r\n * const instructorPermissions = ROLE_MAP['INSTRUCTOR'];\r\n * // Returns: [\"INSTRUCTOR\", \"ADMIN\", \"REGISTRAR\", \"FINANCE\", \"SUPER_ADMIN\"]\r\n *\r\n * // Get permissions for finance role\r\n * const financePermissions = ROLE_MAP['FINANCE'];\r\n * // Returns: [\"FINANCE\", \"SUPER_ADMIN\"]\r\n * ```\r\n */\r\nexport const ROLE_MAP: Record<string, InstructorType[]> = {\r\n /** Maps to CHANNEL_LEARNER_ROLES - most permissive role set */\r\n LEARNER: CHANNEL_LEARNER_ROLES,\r\n /** Maps to CHANNEL_BLOGGER_ROLES - content creation permissions */\r\n BLOGGER: CHANNEL_BLOGGER_ROLES,\r\n /** Maps to CHANNEL_EVENT_ROLES - event management permissions */\r\n EVENT: CHANNEL_EVENT_ROLES,\r\n /** Maps to CHANNEL_MODERATOR_ROLES - moderation and teaching permissions */\r\n MODERATOR: CHANNEL_MODERATOR_ROLES,\r\n /** Maps to CHANNEL_INSTRUCTOR_ROLES - teaching and course management permissions */\r\n INSTRUCTOR: CHANNEL_INSTRUCTOR_ROLES,\r\n /** Maps to CHANNEL_ADMIN_ROLES - administrative permissions */\r\n ADMIN: CHANNEL_ADMIN_ROLES,\r\n /** Maps to CHANNEL_REGISTRAR_ROLES - registration and academic record permissions */\r\n REGISTRAR: CHANNEL_REGISTRAR_ROLES,\r\n /** Maps to CHANNEL_FINANCE_ROLES - financial management permissions */\r\n FINANCE: CHANNEL_FINANCE_ROLES,\r\n /** Maps to CHANNEL_SUPER_ADMIN_ROLES - complete system access (underscore format) */\r\n SUPER_ADMIN: CHANNEL_SUPER_ADMIN_ROLES,\r\n};\r\n\r\n/**\r\n * Checks if user has required permission\r\n * @example\r\n * ```ts\r\n * // Check if user has admin access with provided permissions\r\n * const hasAccess = hasUserPermission({\r\n * accessType: 'ADMIN',\r\n * permissions: ['USER', 'ADMIN', 'MODERATOR']\r\n * });\r\n * // Returns: true\r\n *\r\n * // Use specific role-based permissions\r\n * const hasInstructorAccess = hasUserPermission({\r\n * accessType: 'INSTRUCTOR',\r\n * roleName: 'INSTRUCTOR'\r\n * });\r\n * // Returns: true (uses CHANNEL_INSTRUCTOR_ROLES)\r\n *\r\n * // Use admin role permissions\r\n * const hasAdminAccess = hasUserPermission({\r\n * accessType: 'ADMIN',\r\n * roleName: 'ADMIN'\r\n * });\r\n * // Returns: true (uses CHANNEL_ADMIN_ROLES)\r\n *\r\n * // Fallback to default when roleName doesn't match\r\n * const hasDefaultAccess = hasUserPermission({\r\n * accessType: 'LEARNER',\r\n * roleName: 'INVALID_ROLE'\r\n * });\r\n * // Returns: true (falls back to CHANNEL_LEARNER_ROLES)\r\n *\r\n * // Check without any permissions or role (uses default)\r\n * const hasLearnerAccess = hasUserPermission({\r\n * accessType: 'LEARNER'\r\n * });\r\n * // Returns: true (uses CHANNEL_LEARNER_ROLES as default)\r\n * ```\r\n * @param params - Object containing accessType and optional permissions/roleName\r\n * @param params.accessType - The permission type to check for\r\n * @param params.permissions - Array of user permissions (overrides roleName if provided)\r\n * @param params.roleName - Role name to select predefined permission set (ignored if permissions provided)\r\n * @returns boolean - True if user has the required permission, false otherwise\r\n */\r\nexport const hasUserPermission = ({\r\n accessType,\r\n permissions,\r\n roleName,\r\n}: {\r\n accessType: string;\r\n permissions?: string[] | InstructorType[];\r\n roleName?: InstructorType;\r\n}): boolean => {\r\n // Return false if no accessType\r\n if (!accessType) {\r\n return false;\r\n }\r\n\r\n // If permissions are explicitly provided, use them\r\n if (permissions) {\r\n return permissions.some(\r\n (permission) => permission.toLowerCase() === accessType.toLowerCase()\r\n );\r\n }\r\n\r\n // Helper function to get permission array by role name\r\n const getPermissionsByRole = (role: string): InstructorType[] => {\r\n return ROLE_MAP[role.toUpperCase()] || CHANNEL_ADMIN_ROLES;\r\n };\r\n\r\n // Get permissions based on roleName or fallback to default\r\n const permissionsToCheck = roleName\r\n ? getPermissionsByRole(roleName)\r\n : CHANNEL_LEARNER_ROLES;\r\n\r\n // Check if accessType exists in permissions array (case-insensitive)\r\n return permissionsToCheck.some(\r\n (permission) => permission.toLowerCase() === accessType.toLowerCase()\r\n );\r\n};\r\n"],"names":["headerUsernamePermission","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","session","req","_session$user","customHeader","headerUsername","wrap","_context","prev","next","headers","user","username","process","env","NEXT_PUBLIC_X_INSTINCTHUB_NEXT_HEADER","abrupt","stop","_x","_x2","apply","this","arguments","headerKeyPermission","_ref2","_callee2","_context2","_x3","findPermissions","permission","option","find","i","CHANNEL_LEARNER_ROLES","CHANNEL_BLOGGER_ROLES","CHANNEL_EVENT_ROLES","CHANNEL_MODERATOR_ROLES","CHANNEL_INSTRUCTOR_ROLES","CHANNEL_ADMIN_ROLES","CHANNEL_REGISTRAR_ROLES","CHANNEL_FINANCE_ROLES","CHANNEL_SUPER_ADMIN_ROLES","ROLE_MAP","LEARNER","BLOGGER","EVENT","MODERATOR","INSTRUCTOR","ADMIN","REGISTRAR","FINANCE","SUPER_ADMIN","hasUserPermission","_ref3","accessType","permissions","roleName","some","toLowerCase","toUpperCase"],"mappings":"8GAUaA,EAAwB,WAAA,IAAAC,EAAAC,EAAAC,IAAAC,MAAG,SAAAC,EACtCC,EACAC,GAAmB,IAAAC,EAAAC,EAAAC,EAAA,OAAAP,IAAAQ,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAKnB,GAHML,EAAeF,EAAIQ,QAAQ,6BAC3BL,EAAiBH,EAAIQ,QAAkB,UAI3CT,SAAaE,QAANA,EAAPF,EAASU,gBAAIR,SAAbA,EAAeS,YAAaP,GAC5BD,IAAiBS,QAAQC,IAAIC,sCAAqC,CAAAR,EAAAE,KAAA,EAAA,KAAA,CAAA,OAAAF,EAAAS,OAAA,UAE3D,GAAK,KAAA,EAAA,OAAAT,EAAAS,OAAA,UAGP,GAAI,KAAA,EAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAjB,EACZ,KAAA,OAAA,SAhBoCkB,EAAAC,GAAA,OAAAvB,EAAAwB,MAAAC,KAAAC,UAAA,CAAA,CAAA,GAuBxBC,EAAmB,WAAA,IAAAC,EAAA3B,EAAAC,IAAAC,MAAG,SAAA0B,EACjCvB,GAAmB,OAAAJ,IAAAQ,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,KAAA,EAEoD,GAAlDP,EAAIQ,QAAQ,+BAEZG,QAAQC,IAAIC,sCAAqC,CAAAW,EAAAjB,KAAA,EAAA,KAAA,CAAA,OAAAiB,EAAAV,OAAA,UAC7D,GAAK,KAAA,EAAA,OAAAU,EAAAV,OAAA,UAGP,GAAI,KAAA,EAAA,IAAA,MAAA,OAAAU,EAAAT,OAAA,GAAAQ,EACZ,KAAA,OAVYF,SAAmBI,GAAA,OAAAH,EAAAJ,MAAAC,KAAAC,UAAA,CAAA,CAAA,GAsBnBM,EAAkB,SAC7BC,EACAC,GAGA,OAAOD,EAAWE,MAAK,SAACC,GAAC,OAAUF,CAAM,GAC3C,EAOaG,EAA0C,CACrD,UACA,UACA,YACA,aACA,QACA,YACA,UACA,eAOWC,EAA0C,CACrD,UACA,QACA,YACA,UACA,eAOWC,EAAwC,CACnD,QACA,QACA,YACA,UACA,eAOWC,EAA4C,CACvD,YACA,aACA,QACA,YACA,UACA,eAOWC,EAA6C,CACxD,aACA,QACA,YACA,UACA,eAOWC,EAAwC,CACnD,QACA,YACA,UACA,eAOWC,EAA4C,CACvD,YACA,UACA,eAOWC,EAA0C,CACrD,UACA,eAOWC,EAA8C,CAAC,eAkB/CC,EAA6C,CAExDC,QAASV,EAETW,QAASV,EAETW,MAAOV,EAEPW,UAAWV,EAEXW,WAAYV,EAEZW,MAAOV,EAEPW,UAAWV,EAEXW,QAASV,EAETW,YAAaV,GA+CFW,EAAoB,SAAHC,GAQhB,IAPZC,EAAUD,EAAVC,WACAC,EAAWF,EAAXE,YACAC,EAAQH,EAARG,SAOA,IAAKF,EACH,OAAO,EAIT,GAAIC,EACF,OAAOA,EAAYE,MACjB,SAAC5B,GAAU,OAAKA,EAAW6B,gBAAkBJ,EAAWI,iBAe5D,OAL2BF,EAJlBd,EAKgBc,EALFG,gBAAkBrB,EAMrCL,GAGsBwB,MACxB,SAAC5B,GAAU,OAAKA,EAAW6B,gBAAkBJ,EAAWI,gBAE5D"}
|