@imposium-hub/components 2.2.42 → 2.2.43
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/cjs/Util.d.ts +3 -3
- package/dist/cjs/Util.js +20 -4
- package/dist/cjs/Util.js.map +1 -1
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper.js +27 -6
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +1 -6
- package/dist/cjs/components/assets/AssetsTableDateCell.js +3 -0
- package/dist/cjs/components/assets/AssetsTableDateCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +1 -16
- package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +1 -5
- package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +1 -6
- package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +1 -5
- package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +1 -5
- package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/cjs/components/auth-gate/AuthGate.js +2 -2
- package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
- package/dist/cjs/components/button/Button.d.ts +1 -1
- package/dist/cjs/components/button/Button.stories.d.ts +5 -6
- package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
- package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
- package/dist/cjs/components/button-menu/ButtonMenu.d.ts +3 -3
- package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +1 -2
- package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/cjs/components/card/Card.stories.d.ts +1 -2
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
- package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
- package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +1 -2
- package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
- package/dist/cjs/components/context-menu/AnimateComponent.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenu.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +1 -2
- package/dist/cjs/components/context-menu/SubMenu.d.ts +1 -2
- package/dist/cjs/components/context-menu/helper.d.ts +1 -1
- package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +1 -2
- package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -4
- package/dist/cjs/components/dropdown/Dropdown.d.ts +2 -2
- package/dist/cjs/components/dropdown/Dropdown.js +5 -5
- package/dist/cjs/components/dropdown/Dropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/dropdown.stories.d.ts +2 -2
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
- package/dist/cjs/components/font-picker/FontPicker.d.ts +5 -5
- package/dist/cjs/components/font-picker/font-manager/FontManager.js +2 -2
- package/dist/cjs/components/font-picker/font-manager/FontManager.js.map +1 -1
- package/dist/cjs/components/font-picker/font-manager/constants.d.ts +1 -1
- package/dist/cjs/components/h-rule/HRule.d.ts +1 -2
- package/dist/cjs/components/h-rule/HRule.stories.d.ts +2 -3
- package/dist/cjs/components/header/Header.d.ts +1 -1
- package/dist/cjs/components/header/Header.js +3 -0
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/list-field/ListField.d.ts +2 -2
- package/dist/cjs/components/list-field/ListField.stories.d.ts +1 -2
- package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.stories.d.ts +1 -2
- package/dist/cjs/components/no-access/NoAccess.d.ts +1 -1
- package/dist/cjs/components/no-access/NoAccess.js +11 -2
- package/dist/cjs/components/no-access/NoAccess.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
- package/dist/cjs/components/number-field/NumberField.stories.d.ts +1 -2
- package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
- package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
- package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
- package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
- package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +4 -4
- package/dist/cjs/components/publish-wizard/PublishWizard.js +2 -2
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -6
- package/dist/cjs/components/section/Section.d.ts +1 -2
- package/dist/cjs/components/section/Section.stories.d.ts +2 -3
- package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
- package/dist/cjs/components/select-field/SelectField.stories.d.ts +1 -2
- package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -2
- package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
- package/dist/cjs/components/slider-field/SliderField.stories.d.ts +1 -2
- package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +17 -8
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.d.ts +2 -4
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +2 -5
- package/dist/cjs/components/tag/Tag.d.ts +1 -9
- package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +1 -2
- package/dist/cjs/components/text-field/TextField.stories.d.ts +1 -2
- package/dist/cjs/constants/assets.d.ts +2 -5
- package/dist/cjs/constants/compositions.d.ts +3 -9
- package/dist/cjs/constants/fontSizes.d.ts +1 -1
- package/dist/cjs/constants/icons.d.ts +70 -71
- package/dist/cjs/constants/publish.d.ts +2 -5
- package/dist/cjs/constants/variables.d.ts +1 -4
- package/dist/cjs/redux/actions/active-batch.d.ts +1 -1
- package/dist/cjs/redux/actions/publish.d.ts +2 -2
- package/dist/cjs/redux/reducers/selected-assets.d.ts +1 -1
- package/dist/cjs/services/Auth0.d.ts +2 -2
- package/dist/cjs/services/Auth0.js +2 -3
- package/dist/cjs/services/Auth0.js.map +1 -1
- package/dist/cjs/services/Session.d.ts +1 -1
- package/dist/cjs/services/Session.js +3 -0
- package/dist/cjs/services/Session.js.map +1 -1
- package/dist/cjs/services/Storage.d.ts +1 -1
- package/dist/cjs/utils/assets.d.ts +0 -1
- package/dist/esm/Util.d.ts +3 -3
- package/dist/esm/Util.js +24 -4
- package/dist/esm/Util.js.map +1 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.d.ts +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper.js +28 -7
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableDateCell.d.ts +1 -6
- package/dist/esm/components/assets/AssetsTableDateCell.js +3 -0
- package/dist/esm/components/assets/AssetsTableDateCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +1 -16
- package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +1 -5
- package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +1 -6
- package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +1 -5
- package/dist/esm/components/assets/AssetsTypeIcon.d.ts +1 -5
- package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/esm/components/auth-gate/AuthGate.js +2 -2
- package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.d.ts +5 -6
- package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
- package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenu.d.ts +3 -3
- package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/esm/components/card/Card.stories.d.ts +1 -2
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
- package/dist/esm/components/color-field/ColorField.d.ts +1 -1
- package/dist/esm/components/color-field/ColorFiled.stories.d.ts +1 -2
- package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -2
- package/dist/esm/components/context-menu/SubMenu.d.ts +1 -2
- package/dist/esm/components/context-menu/helper.d.ts +1 -1
- package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +1 -2
- package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -4
- package/dist/esm/components/dropdown/Dropdown.d.ts +2 -2
- package/dist/esm/components/dropdown/dropdown.stories.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
- package/dist/esm/components/font-picker/FontPicker.d.ts +5 -5
- package/dist/esm/components/font-picker/font-manager/constants.d.ts +1 -1
- package/dist/esm/components/h-rule/HRule.d.ts +1 -2
- package/dist/esm/components/h-rule/HRule.stories.d.ts +2 -3
- package/dist/esm/components/header/Header.d.ts +1 -1
- package/dist/esm/components/header/Header.js +3 -0
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/list-field/ListField.d.ts +2 -2
- package/dist/esm/components/list-field/ListField.stories.d.ts +1 -2
- package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/esm/components/modal/Modal.d.ts +1 -1
- package/dist/esm/components/modal/Modal.stories.d.ts +1 -2
- package/dist/esm/components/no-access/NoAccess.d.ts +1 -1
- package/dist/esm/components/no-access/NoAccess.js +11 -2
- package/dist/esm/components/no-access/NoAccess.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +1 -1
- package/dist/esm/components/number-field/NumberField.stories.d.ts +1 -2
- package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
- package/dist/esm/components/players/AudioPreview.d.ts +1 -1
- package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
- package/dist/esm/components/players/ImagePreview.d.ts +1 -1
- package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPreview.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +4 -4
- package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -6
- package/dist/esm/components/section/Section.d.ts +1 -2
- package/dist/esm/components/section/Section.stories.d.ts +2 -3
- package/dist/esm/components/select-field/SelectField.d.ts +1 -1
- package/dist/esm/components/select-field/SelectField.stories.d.ts +1 -2
- package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -2
- package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.stories.d.ts +1 -2
- package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/esm/components/story-previewer/StoryPreviewer.js +10 -5
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.d.ts +2 -4
- package/dist/esm/components/tabs/Tabs.stories.d.ts +2 -5
- package/dist/esm/components/tag/Tag.d.ts +1 -9
- package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +1 -2
- package/dist/esm/components/text-field/TextField.stories.d.ts +1 -2
- package/dist/esm/constants/assets.d.ts +2 -5
- package/dist/esm/constants/compositions.d.ts +3 -9
- package/dist/esm/constants/fontSizes.d.ts +1 -1
- package/dist/esm/constants/icons.d.ts +70 -71
- package/dist/esm/constants/publish.d.ts +2 -5
- package/dist/esm/constants/variables.d.ts +1 -4
- package/dist/esm/redux/actions/active-batch.d.ts +1 -1
- package/dist/esm/redux/actions/publish.d.ts +2 -2
- package/dist/esm/redux/reducers/selected-assets.d.ts +1 -1
- package/dist/esm/services/Auth0.d.ts +2 -2
- package/dist/esm/services/Auth0.js +2 -2
- package/dist/esm/services/Auth0.js.map +1 -1
- package/dist/esm/services/Session.d.ts +1 -1
- package/dist/esm/services/Session.js +3 -0
- package/dist/esm/services/Session.js.map +1 -1
- package/dist/esm/services/Storage.d.ts +1 -1
- package/dist/esm/utils/assets.d.ts +0 -1
- package/package.json +4 -6
- package/src/Util.ts +20 -6
- package/src/components/app-wrapper/AppWrapper.tsx +45 -7
- package/src/components/assets/AssetsTableDateCell.tsx +2 -0
- package/src/components/auth-gate/AuthGate.tsx +3 -2
- package/src/components/header/Header.tsx +4 -0
- package/src/components/no-access/NoAccess.tsx +14 -3
- package/src/components/story-previewer/StoryPreviewer.tsx +12 -22
- package/src/services/Auth0.ts +2 -2
- package/src/services/Session.ts +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imposium-hub/components",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.43",
|
|
4
4
|
"description": "React & Typescript component / asset library for Imposium front-ends",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -72,7 +72,6 @@
|
|
|
72
72
|
"smpte-timecode": "^1.2.3"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@babel/core": "^7.17.10",
|
|
76
75
|
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
|
77
76
|
"@fortawesome/free-brands-svg-icons": "^6.1.1",
|
|
78
77
|
"@fortawesome/free-solid-svg-icons": "^6.1.1",
|
|
@@ -91,13 +90,12 @@
|
|
|
91
90
|
"@storybook/react": "^7.0.7",
|
|
92
91
|
"@storybook/testing-library": "^0.0.11",
|
|
93
92
|
"@types/hoist-non-react-statics": "^3.3.1",
|
|
94
|
-
"@types/
|
|
93
|
+
"@types/offscreencanvas": "^2019.6.4",
|
|
95
94
|
"@types/react": "^17.0.37",
|
|
96
95
|
"@types/resize-observer-browser": "^0.1.5",
|
|
97
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
98
|
-
"@typescript-eslint/parser": "^5.
|
|
96
|
+
"@typescript-eslint/eslint-plugin": "^5.26.0",
|
|
97
|
+
"@typescript-eslint/parser": "^5.26.0",
|
|
99
98
|
"axios": "^0.21.1",
|
|
100
|
-
"babel-loader": "^8.2.5",
|
|
101
99
|
"concurrently": "^7.1.0",
|
|
102
100
|
"eslint": "^8.14.0",
|
|
103
101
|
"eslint-config-prettier": "^8.5.0",
|
package/src/Util.ts
CHANGED
|
@@ -2,8 +2,13 @@ import Timecode from 'smpte-timecode';
|
|
|
2
2
|
|
|
3
3
|
export const isLocal = (): boolean => window.location.hostname === 'localhost';
|
|
4
4
|
|
|
5
|
-
export const getActiveOrg = (activeOrgId: string, access: any): any =>
|
|
6
|
-
access.organizations
|
|
5
|
+
export const getActiveOrg = (activeOrgId: string, access: any): any => {
|
|
6
|
+
if (access && access.organizations && access.organizations.length > 0) {
|
|
7
|
+
return access.organizations.find((o: any) => o.id === activeOrgId);
|
|
8
|
+
} else {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
7
12
|
|
|
8
13
|
export const validateAccessLevel = (orgId: string, serviceId: number, access: any): boolean => {
|
|
9
14
|
const activeOrg: any = getActiveOrg(orgId, access);
|
|
@@ -39,10 +44,19 @@ export const getLastModifiedStoryInOrg = (orgId: string, access: any): string =>
|
|
|
39
44
|
|
|
40
45
|
return sortByLastModified[0].id;
|
|
41
46
|
};
|
|
42
|
-
export const scrapeEmail = (auth: any): string =>
|
|
43
|
-
auth && auth.idTokenPayload
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
export const scrapeEmail = (auth: any): string => {
|
|
48
|
+
if (auth && auth.idTokenPayload) {
|
|
49
|
+
if (auth.idTokenPayload['https://imposium.com/email']) {
|
|
50
|
+
return auth.idTokenPayload['https://imposium.com/email'];
|
|
51
|
+
} else if (auth.idTokenPayload['userEmail']) {
|
|
52
|
+
return auth.idTokenPayload['userEmail'];
|
|
53
|
+
} else {
|
|
54
|
+
return '';
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
};
|
|
46
60
|
|
|
47
61
|
export const parameterizeServiceUrl = (
|
|
48
62
|
activeOrg: string,
|
|
@@ -7,10 +7,11 @@ import { connect } from 'react-redux';
|
|
|
7
7
|
import { bindActionCreators } from 'redux';
|
|
8
8
|
import { login, clearCachedAuth } from '../../redux/actions/auth';
|
|
9
9
|
import { cacheAccessData, clearCachedAccessList } from '../../redux/actions/access';
|
|
10
|
-
import {
|
|
10
|
+
import { validateAccessLevel } from '../../Util';
|
|
11
11
|
|
|
12
12
|
export interface IAppWrapperProps {
|
|
13
13
|
children: React.ReactChildren;
|
|
14
|
+
auth0Domain: string;
|
|
14
15
|
auth0ClientId: string;
|
|
15
16
|
organizationId: string;
|
|
16
17
|
baseUrl: string;
|
|
@@ -49,6 +50,13 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
|
|
|
49
50
|
/>
|
|
50
51
|
);
|
|
51
52
|
|
|
53
|
+
private static readonly NO_ORGS: JSX.Element = (
|
|
54
|
+
<NoAccess
|
|
55
|
+
key='restriction-msg'
|
|
56
|
+
type='no-orgs'
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
59
|
+
|
|
52
60
|
constructor(p: IAppWrapperProps) {
|
|
53
61
|
super(p);
|
|
54
62
|
|
|
@@ -59,10 +67,24 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
|
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
public componentDidMount = (): void => {
|
|
62
|
-
const { auth, access, auth0ClientId, isFreshUser } = this.props;
|
|
70
|
+
const { auth, access, auth0ClientId, auth0Domain, isFreshUser } = this.props;
|
|
63
71
|
const session: IHubSession = SessionService.getSession();
|
|
64
72
|
|
|
65
|
-
AuthService.bindToClient(auth0ClientId);
|
|
73
|
+
AuthService.bindToClient(auth0ClientId, auth0Domain);
|
|
74
|
+
|
|
75
|
+
const validAccessLevel = validateAccessLevel(
|
|
76
|
+
this.props.organizationId,
|
|
77
|
+
this.props.serviceId,
|
|
78
|
+
this.props.access
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
if (!this.state.restrictAccess && !validAccessLevel) {
|
|
82
|
+
this.setState({ restrictAccess: true });
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (this.state.restrictAccess && validAccessLevel) {
|
|
86
|
+
this.setState({ restrictAccess: false });
|
|
87
|
+
}
|
|
66
88
|
|
|
67
89
|
// If cookie, auth or access data is missing / mismatched,
|
|
68
90
|
// silently check auth0 session and refresh flow on success
|
|
@@ -128,9 +150,16 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
|
|
|
128
150
|
private propagateCreds = (): void => {
|
|
129
151
|
const { auth, access, storyId, onAuthenticated } = this.props;
|
|
130
152
|
const activeOrgId: string = this.determineActiveOrganization(auth, access);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
153
|
+
let activeStoryId: string = SessionService.getSession().story_id;
|
|
154
|
+
let activeOrg: any;
|
|
155
|
+
|
|
156
|
+
if (this.props.storyId) {
|
|
157
|
+
activeOrg = access.organizations.find((o: any) => o.id === activeOrgId);
|
|
158
|
+
|
|
159
|
+
if (activeOrg && activeOrg.stories.find((s: any) => s.id === storyId)) {
|
|
160
|
+
activeStoryId = storyId;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
134
163
|
|
|
135
164
|
onAuthenticated(activeOrgId, activeStoryId);
|
|
136
165
|
|
|
@@ -265,9 +294,18 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
|
|
|
265
294
|
let innerContent: any;
|
|
266
295
|
|
|
267
296
|
if (!blockRender && restrictAccess) {
|
|
297
|
+
const showNoOrgs =
|
|
298
|
+
this.props.access &&
|
|
299
|
+
this.props.access.organizations &&
|
|
300
|
+
this.props.access.organizations.length === 0;
|
|
301
|
+
const errorIndicator = showNoOrgs
|
|
302
|
+
? AppWrapper.NO_ORGS
|
|
303
|
+
: showRequestAccess
|
|
304
|
+
? AppWrapper.RESTRICTED_REQUEST
|
|
305
|
+
: AppWrapper.RESTRICTED_BLOCK;
|
|
268
306
|
innerContent = [
|
|
269
307
|
typeof children[0] === 'object' && children[0].type === Header && children[0],
|
|
270
|
-
|
|
308
|
+
errorIndicator
|
|
271
309
|
];
|
|
272
310
|
}
|
|
273
311
|
|
|
@@ -18,6 +18,8 @@ const AssetsTableDateCell: React.FC<IAssetsTableDateCell> = (p: IAssetsTableDate
|
|
|
18
18
|
return <div>{formatDateDefault(values.date_created)}</div>;
|
|
19
19
|
} else if (values.date_modified) {
|
|
20
20
|
return <div>{formatDateDefault(values.date_modified)}</div>;
|
|
21
|
+
} else if (values.date_updated) {
|
|
22
|
+
return <div>{formatDateDefault(values.date_updated)}</div>;
|
|
21
23
|
} else {
|
|
22
24
|
return null;
|
|
23
25
|
}
|
|
@@ -9,6 +9,7 @@ import { cacheAccessData } from '../../redux/actions/access';
|
|
|
9
9
|
|
|
10
10
|
interface IAuthGateProps {
|
|
11
11
|
auth0ClientId: string;
|
|
12
|
+
auth0Domain: string;
|
|
12
13
|
auth0Hash: string;
|
|
13
14
|
onAuthenticated: () => any;
|
|
14
15
|
baseUrl?: string;
|
|
@@ -24,9 +25,9 @@ class AuthGate extends React.PureComponent<IAuthGateProps> {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
public componentDidMount = (): void => {
|
|
27
|
-
const { auth0ClientId, auth0Hash, onAuthenticated, baseUrl } = this.props;
|
|
28
|
+
const { auth0ClientId, auth0Hash, auth0Domain, onAuthenticated, baseUrl } = this.props;
|
|
28
29
|
|
|
29
|
-
AuthService.bindToClient(auth0ClientId);
|
|
30
|
+
AuthService.bindToClient(auth0ClientId, auth0Domain);
|
|
30
31
|
|
|
31
32
|
if (!auth0Hash) {
|
|
32
33
|
AuthService.login();
|
|
@@ -457,6 +457,10 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
457
457
|
);
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
+
if (accessData && accessData.organizations && accessData.organizations.length === 0) {
|
|
461
|
+
storyToggle = null;
|
|
462
|
+
}
|
|
463
|
+
|
|
460
464
|
if (accessData && activeOrganizationBlob && !hideStoryPicker) {
|
|
461
465
|
currentStory = activeOrganizationBlob.stories.find((s: any) => s.id === activeStory);
|
|
462
466
|
storyToggle = (
|
|
@@ -4,20 +4,22 @@ import { faUserLock } from '@fortawesome/free-solid-svg-icons/faUserLock';
|
|
|
4
4
|
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';
|
|
5
5
|
|
|
6
6
|
interface INoAccessProps {
|
|
7
|
-
type: 'request' | 'restrict';
|
|
7
|
+
type: 'request' | 'restrict' | 'no-orgs';
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const MAIL_TO: string = 'mailto:info@imposium.com?subject=My access to Imposium is restricted';
|
|
11
11
|
const REQUEST_ACCESS_TITLE: string = "You don't have access to Imposium yet";
|
|
12
12
|
const REQUEST_HREF_COPY: string = 'Request Access';
|
|
13
13
|
const RESTRICTED_ACCESS_TITLE: string = 'Service not found';
|
|
14
|
+
const NO_ORGS_TITLE = 'No organizations found';
|
|
14
15
|
|
|
15
16
|
const NoAccess: React.FC<INoAccessProps> = (p: INoAccessProps) => {
|
|
16
17
|
if (!p.type) {
|
|
17
|
-
throw new Error('NoAccess requires a type of either: request or restrict');
|
|
18
|
+
throw new Error('NoAccess requires a type of either: request or restrict or no-orgs');
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
const isRequest: boolean = p.type === 'request';
|
|
22
|
+
const isNoOrgs: boolean = p.type === 'no-orgs';
|
|
21
23
|
|
|
22
24
|
return (
|
|
23
25
|
<div className='no-access'>
|
|
@@ -35,8 +37,17 @@ const NoAccess: React.FC<INoAccessProps> = (p: INoAccessProps) => {
|
|
|
35
37
|
|
|
36
38
|
<div className='no-access-copy'>
|
|
37
39
|
<h1 className='no-access-heading'>
|
|
38
|
-
{isRequest
|
|
40
|
+
{isRequest
|
|
41
|
+
? REQUEST_ACCESS_TITLE
|
|
42
|
+
: isNoOrgs
|
|
43
|
+
? NO_ORGS_TITLE
|
|
44
|
+
: RESTRICTED_ACCESS_TITLE}
|
|
39
45
|
</h1>
|
|
46
|
+
<p>
|
|
47
|
+
{isNoOrgs
|
|
48
|
+
? 'Please request access from an admin already on the organization'
|
|
49
|
+
: null}
|
|
50
|
+
</p>
|
|
40
51
|
{isRequest && <a href={MAIL_TO}>{REQUEST_HREF_COPY}</a>}
|
|
41
52
|
</div>
|
|
42
53
|
</div>
|
|
@@ -585,16 +585,10 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
|
|
|
585
585
|
}
|
|
586
586
|
|
|
587
587
|
private createExperience() {
|
|
588
|
-
const {
|
|
589
|
-
|
|
590
|
-
onNotification,
|
|
591
|
-
onError,
|
|
592
|
-
api,
|
|
593
|
-
onExperienceCreated,
|
|
594
|
-
useWorkingCopy,
|
|
595
|
-
editor: { fastRender }
|
|
596
|
-
} = this.props;
|
|
588
|
+
const { storyId, onNotification, onError, api, onExperienceCreated, useWorkingCopy } =
|
|
589
|
+
this.props;
|
|
597
590
|
|
|
591
|
+
const fastRender = this.props.editor?.fastRender || false;
|
|
598
592
|
const compId = this.getCompId();
|
|
599
593
|
|
|
600
594
|
this.resetState(false, () => {
|
|
@@ -660,11 +654,9 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
|
|
|
660
654
|
private renderViewerContent() {
|
|
661
655
|
const { rendering, experience, timeElapsed, activeOutput, isTimeOut } = this.state;
|
|
662
656
|
|
|
663
|
-
const {
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
editor: { playbackRate }
|
|
667
|
-
} = this.props;
|
|
657
|
+
const { api, onError } = this.props;
|
|
658
|
+
|
|
659
|
+
const playbackRate = this.props.editor?.playbackRate || 1;
|
|
668
660
|
|
|
669
661
|
if (rendering) {
|
|
670
662
|
return (
|
|
@@ -840,23 +832,21 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
|
|
|
840
832
|
}
|
|
841
833
|
|
|
842
834
|
private changePlaybackRate() {
|
|
843
|
-
const
|
|
844
|
-
editor: { playbackRate }
|
|
845
|
-
} = this.props;
|
|
835
|
+
const playbackRate = this.props.editor?.playbackRate || 1;
|
|
846
836
|
let newRate = playbackRate + 0.5;
|
|
847
837
|
|
|
848
838
|
if (newRate > this.maxPlaybackRate) {
|
|
849
839
|
newRate = 1;
|
|
850
840
|
}
|
|
851
841
|
|
|
852
|
-
this.props.updateEditorConfig
|
|
842
|
+
if (this.props.updateEditorConfig) {
|
|
843
|
+
this.props.updateEditorConfig({ playbackRate: newRate });
|
|
844
|
+
}
|
|
853
845
|
}
|
|
854
846
|
|
|
855
847
|
public render() {
|
|
856
|
-
const {
|
|
857
|
-
|
|
858
|
-
editor: { playbackRate }
|
|
859
|
-
} = this.props;
|
|
848
|
+
const { allowCompOverride } = this.props;
|
|
849
|
+
const playbackRate = this.props.editor?.playbackRate || 1;
|
|
860
850
|
const { rendering, experience, activeOutput, experienceId, error } = this.state;
|
|
861
851
|
const { storyId } = this.props;
|
|
862
852
|
const renderCopy = experience ? copy.btnReRender : copy.btnRender;
|
package/src/services/Auth0.ts
CHANGED
|
@@ -11,7 +11,6 @@ export interface IIdentity {
|
|
|
11
11
|
|
|
12
12
|
export default class AuthService {
|
|
13
13
|
private static readonly IMPOSIUM_APP_DEFAULTS: any = {
|
|
14
|
-
domain: 'imposium.auth0.com',
|
|
15
14
|
scope: 'openid',
|
|
16
15
|
responseType: 'token id_token',
|
|
17
16
|
redirectUri: `${window.location.origin}/auth`
|
|
@@ -23,9 +22,10 @@ export default class AuthService {
|
|
|
23
22
|
/*
|
|
24
23
|
Initialize the auth0 web client with client ID for a given app-wrapper
|
|
25
24
|
*/
|
|
26
|
-
public static bindToClient = (clientID: string): void => {
|
|
25
|
+
public static bindToClient = (clientID: string, domain: string): void => {
|
|
27
26
|
AuthService.auth0Client = new auth0.WebAuth({
|
|
28
27
|
clientID,
|
|
28
|
+
domain,
|
|
29
29
|
...AuthService.IMPOSIUM_APP_DEFAULTS
|
|
30
30
|
});
|
|
31
31
|
};
|
package/src/services/Session.ts
CHANGED
|
@@ -98,6 +98,7 @@ export default class SessionService {
|
|
|
98
98
|
if (
|
|
99
99
|
cachedStoryId &&
|
|
100
100
|
organizationId &&
|
|
101
|
+
activeOrg.stories &&
|
|
101
102
|
activeOrg.stories.find((s: any) => s.id === cachedStoryId)
|
|
102
103
|
) {
|
|
103
104
|
activeStoryId = cachedStoryId;
|
|
@@ -116,6 +117,8 @@ export default class SessionService {
|
|
|
116
117
|
// Same for story id if the cache was missing / belonging to a different org
|
|
117
118
|
if (
|
|
118
119
|
!activeStoryId &&
|
|
120
|
+
organizations &&
|
|
121
|
+
organizations[0] &&
|
|
119
122
|
organizations[0].stories.length > 0 &&
|
|
120
123
|
typeof organizations[0].stories[0] === 'object' &&
|
|
121
124
|
organizations[0].stories[0].hasOwnProperty('id')
|