UNPKG

react-permissions-dynamic

Version:
120 lines (119 loc) 7.84 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const src_1 = require("../../src"); const initialPermissions = [ { action: 'has_this_permission', allowed: true, }, { action: 'not_available_permission', allowed: false, }, { action: 'no_allowed_specified_permission', }, ]; const emptyCheckPermissions = () => __awaiter(void 0, void 0, void 0, function* () { yield new Promise(resolve => setTimeout(resolve, 2000)); return [ { action: 'checked_on_go', allowed: true, }, { action: 'denied_on_go', allowed: false, }, { action: 'no_allowed_info_on_go', }, ]; }); const SuccessfullResult = () => { return react_1.default.createElement("span", { style: { color: 'lightgreen' } }, "\u2714"); }; const FailedResult = () => { return react_1.default.createElement("span", { style: { color: 'red' } }, "\u274C"); }; const Permissions = () => { return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(src_1.PermissionsProvider, { initialPermissions: initialPermissions, onCheckPermissions: emptyCheckPermissions }, react_1.default.createElement("h1", null, "Permissions Playground"), react_1.default.createElement(src_1.PermissionCheck, { fallback: react_1.default.createElement(FailedResult, null), action: "has_this_permission" }, react_1.default.createElement("span", null, "This is permitted ", react_1.default.createElement(SuccessfullResult, null))), react_1.default.createElement(src_1.PermissionCheck, { action: "not_available_permission" }, "This is not permitted, but we see nothing ", react_1.default.createElement(FailedResult, null)), react_1.default.createElement(src_1.PermissionCheck, { fallback: react_1.default.createElement("span", null, "No Permission ", react_1.default.createElement(SuccessfullResult, null)), action: "not_available_permission" }, react_1.default.createElement("span", null, "This is not permitted, but we have fallback ", react_1.default.createElement(FailedResult, null))), react_1.default.createElement(src_1.PermissionCheck, { action: "didnt check this action", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null, "Server forgot about this permission ", react_1.default.createElement(SuccessfullResult, null)) }, "We didn't get permission from check ", react_1.default.createElement(FailedResult, null)), react_1.default.createElement(src_1.PermissionCheck, { action: "denied_on_go", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null, "Server denied this permission ", react_1.default.createElement(SuccessfullResult, null)) }, "We got refected permission from check ", react_1.default.createElement(FailedResult, null)), react_1.default.createElement(src_1.PermissionCheck, { action: "no_allowed_info_on_go", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null, "Server didn't send allowed check ", react_1.default.createElement(SuccessfullResult, null)) }, "We didn't get allowed permission from check ", react_1.default.createElement(FailedResult, null)), react_1.default.createElement(src_1.PermissionCheck, { loading: react_1.default.createElement("span", null, "This is loading for 2s"), action: "checked_on_go", fallback: react_1.default.createElement("span", null, "Permission check failed ", react_1.default.createElement(FailedResult, null)) }, react_1.default.createElement("span", null, "This content loaded ", react_1.default.createElement(SuccessfullResult, null))), react_1.default.createElement(src_1.PermissionCheck, { action: ['checked_on_go'], loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null, "Permission check failed ", react_1.default.createElement(FailedResult, null)) }, react_1.default.createElement("span", null, "Action was passed as array ", react_1.default.createElement(SuccessfullResult, null))), react_1.default.createElement(src_1.PermissionCheck, { action: ['checked_on_go', 'not_available_permission'], loading: react_1.default.createElement("span", null, "This is loading for 2s"), isAllowed: allowed => allowed.includes('checked_on_go') || allowed.includes('not_available_permission'), fallback: react_1.default.createElement("span", null, "This message should not appear ", react_1.default.createElement(FailedResult, null)) }, react_1.default.createElement("span", null, "Must handle custom logic ", react_1.default.createElement(SuccessfullResult, null))), react_1.default.createElement(src_1.PermissionCheck, { action: "checked_on_go", fallback: react_1.default.createElement("span", null, "This message should not appear ", react_1.default.createElement(FailedResult, null)) }, react_1.default.createElement("span", null, "No Loading content must be shown ", react_1.default.createElement(SuccessfullResult, null)))), react_1.default.createElement(src_1.PermissionsProvider, { initialPermissions: initialPermissions }, react_1.default.createElement(src_1.PermissionCheck, { action: "this_permission_is_unknown", loading: react_1.default.createElement("span", null, "This message should not appear ", react_1.default.createElement(FailedResult, null)), fallback: react_1.default.createElement("span", null, "This message should appear ", react_1.default.createElement(SuccessfullResult, null)) }, react_1.default.createElement("span", null, "No dynamic check means static permissions ", react_1.default.createElement(SuccessfullResult, null)))))); }; exports.default = react_1.default.memo(Permissions);