@sanity/desk-tool
Version:
Tool for managing all sorts of content in a structured manner
54 lines (53 loc) • 2.62 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PermissionCheckBanner = PermissionCheckBanner;
var _react = _interopRequireDefault(require("react"));
var _hooks = require("@sanity/base/hooks");
var _ui = require("@sanity/ui");
var _icons = require("@sanity/icons");
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _templateObject;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var Root = (0, _styledComponents.default)(_ui.Card)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n z-index: 50;\n"])));
function PermissionCheckBanner(_ref) {
var _currentUser$roles, _currentUser$roles2;
var granted = _ref.granted,
requiredPermission = _ref.requiredPermission;
var _useCurrentUser = (0, _hooks.useCurrentUser)(),
currentUser = _useCurrentUser.value;
var plural = (currentUser === null || currentUser === void 0 || (_currentUser$roles = currentUser.roles) === null || _currentUser$roles === void 0 ? void 0 : _currentUser$roles.length) !== 1;
var roles = join((currentUser === null || currentUser === void 0 || (_currentUser$roles2 = currentUser.roles) === null || _currentUser$roles2 === void 0 ? void 0 : _currentUser$roles2.map(r => /*#__PURE__*/_react.default.createElement("code", {
key: r.name
}, r.title))) || [], ', ');
if (granted) return null;
return /*#__PURE__*/_react.default.createElement(Root, {
"data-testid": "permission-check-banner",
shadow: 1,
tone: "transparent"
}, /*#__PURE__*/_react.default.createElement(_ui.Container, {
paddingX: 4,
paddingY: 3,
sizing: "border",
width: 1
}, /*#__PURE__*/_react.default.createElement(_ui.Flex, {
align: "flex-start"
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
size: 1
}, /*#__PURE__*/_react.default.createElement(_icons.ReadOnlyIcon, null)), /*#__PURE__*/_react.default.createElement(_ui.Box, {
flex: 1,
marginLeft: 3
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
size: 1
}, "Your role", plural && 's', " ", roles, " ", plural ? 'do' : 'does', " not have permissions to", ' ', requiredPermission, " this document.")))));
}
function join(array, sep) {
return array.reduce((result, item) => {
if (result === null) {
return [item];
}
return result.concat([sep, item]);
}, null);
}