UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

317 lines (308 loc) 23.8 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * * Licensed under GNU Affero General Public License version 3 of the or any later version. * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 2.12.0 */ import React, { Component } from "react"; import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; import PropTypes from "prop-types"; import ActionFeedbackContextProvider from "./contexts/ActionFeedbackContext"; import DisplayActionFeedbacks from "./components/Common/ActionFeedback/DisplayActionFeedbacks"; import DialogContextProvider from "./contexts/DialogContext"; import ManageDialogs from "./components/Common/Dialog/ManageDialogs/ManageDialogs"; import ResourceWorkspaceContextProvider from "./contexts/ResourceWorkspaceContext"; import ResourcePasswordGeneratorContextProvider from "./contexts/ResourcePasswordGeneratorContext"; import UserWorkspaceContextProvider from "./contexts/UserWorkspaceContext"; import ContextualMenuContextProvider from "./contexts/ContextualMenuContext"; import ManageContextualMenu from "./components/Common/ContextualMenu/ManageContextualMenu"; import ManageLoading from "./components/Common/Loading/ManageLoading/ManageLoading"; import LoadingContextProvider from "./contexts/LoadingContext"; import DisplayUserWorkspace from "./components/User/DisplayUserWorkspace/DisplayUserWorkspace"; import HandleRouteFallback from "./components/Common/Route/HandleRouteFallback"; import DisplayUserSettingsWorkspace from "./components/UserSetting/DisplayUserSettingsWorkspace/DisplayUserSettingsWorkspace"; import HandleSessionExpired from "./components/Authentication/HandleSessionExpired/HandleSessionExpired"; import HandleExtAppRouteChanged from "./components/Common/Route/HandleExtAppRouteChanged"; import NavigationContextProvider from "./contexts/NavigationContext"; import AdministrationWorkspaceContextProvider from "./contexts/AdministrationWorkspaceContext"; import AnnouncementContextProvider from "./contexts/AnnouncementContext"; import HandleSubscriptionAnnouncement from "./components/Announcement/HandleSubscriptionAnnouncement/HandleSubscriptionAnnouncement"; import ExtAppContextProvider from "./contexts/ExtAppContext"; import TranslationProvider from "./components/Common/Internationalisation/TranslationProvider"; import UserSettingsContextProvider from "./contexts/UserSettingsContext"; import AdministrationWorkspace from "./components/Administration/AdministrationWorkspace"; import AppContext from "../shared/context/AppContext/AppContext"; import HandlePassphraseEntryEvents from "./components/AuthenticationPassphrase/HandlePassphraseEntryEvents/HandlePassphraseEntryEvents"; import HandleFolderMoveStrategyEvents from "./components/ResourceFolder/HandleFolderMoveStrategyEvents/HandleFolderMoveStrategyEvents"; import HandleProgressEvents from "./components/Common/Progress/HandleProgressEvents/HandleProgressEvents"; import DisplayResourcesWorkspace from "./components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspace"; import DragContextProvider from "./contexts/DragContext"; import AccountRecoveryUserContextProvider from "./contexts/AccountRecoveryUserContext"; import ExtAppAccountRecoveryUserService from "../shared/services/api/accountRecovery/ExtAppAccountRecoveryUserService"; import WorkflowContextProvider from "./contexts/WorkflowContext"; import ManageWorkflows from "./components/Common/Workflow/ManageWorkflows/ManageWorkflows"; import AdminAccountRecoveryContextProvider from "./contexts/AdminAccountRecoveryContext"; import HandleApplicationFirstLoadRoute from "./components/Common/Route/HandleApplicationFirstLoadRoute"; import AdminSubscriptionContextProvider from "./contexts/Administration/AdministrationSubscription/AdministrationSubscription"; import HandleStatusCheck from "./components/HandleStatusCheck/HandleStatusCheck"; import MfaContextProvider from "./contexts/MFAContext"; import AdminSsoContextProvider from "./contexts/AdminSsoContext"; import RbacContextProvider from "../shared/context/Rbac/RbacContext"; import PasswordPoliciesContext from "../shared/context/PasswordPoliciesContext/PasswordPoliciesContext"; import AdminPasswordPoliciesContextProvider from "./contexts/Administration/AdministrationPasswordPoliciesContext/AdministrationPasswordPoliciesContext"; import ProgressContextProvider from "./contexts/ProgressContext"; import AdministrationUserPassphrasePoliciesContextProvider from "./contexts/Administration/AdministrationUserPassphrasePoliciesContext/AdministrationUserPassphrasePoliciesContext"; import UserPassphrasePoliciesContextProvider from "./contexts/UserPassphrasePoliciesContext"; import AdministrationPasswordExpiryContextProvider from "./contexts/Administration/AdministrationPaswordExpiryContext/AdministrationPaswordExpiryContext"; import PasswordExpirySettingsContextProvider from "./contexts/PasswordExpirySettingsContext"; import ResourceTypesLocalStorageContextProvider from "../shared/context/ResourceTypesLocalStorageContext/ResourceTypesLocalStorageContext"; import MetadataTypesSettingsLocalStorageContextProvider from "../shared/context/MetadataTypesSettingsLocalStorageContext/MetadataTypesSettingsLocalStorageContext"; import HandleConfirmMetadataKeyEntryEvents from "./components/Metadata/HandleConfirmMetadataKeyEntryEvents/HandleConfirmMetadataKeyEntryEvents"; import ManagedClipboardServiceProvider from "./contexts/Clipboard/ManagedClipboardServiceProvider"; import MetadataKeysSettingsLocalStorageContextProvider from "../shared/context/MetadataKeysSettingsLocalStorageContext/MetadataKeysSettingsLocalStorageContext"; import AdministrationEncryptedMetadataGettingStartedContextProvider from "./contexts/Administration/AdministrationEncryptedMetadataGettingStartedContext/AdministrationEncryptedMetadataGettingStartedContext"; import GettingStartedWithEncryptedMetadataServiceWorkerService from "../shared/services/serviceWorker/metadata/gettingStartedWithEncryptedMetadataServiceWorkerService"; import { ResizableSidebarContextProvider } from "./contexts/ResizeSidebar/ResizeSidebarContext"; import SecretRevisionsSettingsContextProvider from "../shared/context/SecretRevisionSettingsContext/SecretRevisionsSettingsContext"; import RoleContextProvider from "./contexts/RoleContext"; import ExportPoliciesSettingsContextProvider from "./contexts/ExportPoliciesSettingsContext"; /** * The passbolt application served by the browser extension. * Briefly it takes care of: * - The administration workspace * - The user workspace * - Most of the user settings MFA screen. Because of duo constraints. */ class ExtApp extends Component { render() { const accountRecoveryUserService = new ExtAppAccountRecoveryUserService(this.props.port); return ( <ExtAppContextProvider port={this.props.port} storage={this.props.storage}> <AppContext.Consumer> {(appContext) => ( <TranslationProvider loadingPath="/webAccessibleResources/locales/{{lng}}/{{ns}}.json"> <RbacContextProvider> <AccountRecoveryUserContextProvider accountRecoveryUserService={accountRecoveryUserService}> <PasswordPoliciesContext> <MfaContextProvider> <WorkflowContextProvider> <ActionFeedbackContextProvider> <DialogContextProvider> <AnnouncementContextProvider> <ManagedClipboardServiceProvider> <ContextualMenuContextProvider> <RoleContextProvider> <LoadingContextProvider> <ProgressContextProvider> {/* Action Feedback Management */} <DisplayActionFeedbacks /> {/* Dialogs Management */} <HandlePassphraseEntryEvents /> <HandleConfirmMetadataKeyEntryEvents /> <HandleFolderMoveStrategyEvents /> <HandleProgressEvents /> <HandleSessionExpired /> {/* Announcement Management */} {appContext.loggedInUser && appContext.loggedInUser.role.name === "admin" && appContext.siteSettings.canIUse("ee") && <HandleSubscriptionAnnouncement />} <Router> <NavigationContextProvider> {/* Account Recovery Management */} {appContext.loggedInUser && (appContext.siteSettings.canIUse("accountRecovery") || appContext.siteSettings.canIUse("mfaPolicies")) && ( <HandleStatusCheck /> )} <HandleExtAppRouteChanged /> <Switch> {/* The application first load route points to an html document */} <Route path="/webAccessibleResources/passbolt-iframe-app.html" component={HandleApplicationFirstLoadRoute} /> {/* The following routes are not handled by the browser extension application. */} <Route exact path={[ "/app/administration/mfa", "/app/administration/users-directory", "/app/administration/email-notification", "/app/administration/smtp-settings", "/app/administration/healthcheck", ]} /> {/* Passwords workspace */} <Route path={[ "/app/folders/view/:filterByFolderId", "/app/passwords/view/:selectedResourceId", "/app/passwords/filter/:filterType", "/app/passwords", ]} > <PasswordExpirySettingsContextProvider> <ExportPoliciesSettingsContextProvider> <ResourceWorkspaceContextProvider> <MetadataTypesSettingsLocalStorageContextProvider> <MetadataKeysSettingsLocalStorageContextProvider> <ResourceTypesLocalStorageContextProvider> <SecretRevisionsSettingsContextProvider> <ResourcePasswordGeneratorContextProvider> <ManageDialogs /> <ManageWorkflows /> <ManageContextualMenu /> <DragContextProvider> <ResizableSidebarContextProvider> <div id="container" className="page password"> <div id="app" className="app" tabIndex="1000"> <DisplayResourcesWorkspace /> </div> </div> </ResizableSidebarContextProvider> </DragContextProvider> </ResourcePasswordGeneratorContextProvider> </SecretRevisionsSettingsContextProvider> </ResourceTypesLocalStorageContextProvider> </MetadataKeysSettingsLocalStorageContextProvider> </MetadataTypesSettingsLocalStorageContextProvider> </ResourceWorkspaceContextProvider> </ExportPoliciesSettingsContextProvider> </PasswordExpirySettingsContextProvider> </Route> {/* Users workspace */} <Route path={[ "/app/account-recovery/requests/review/:accountRecoveryRequestId", "/app/groups/view/:selectedGroupId", "/app/groups/edit/:selectedGroupId", "/app/users/view/:selectedUserId", "/app/users", ]} > <UserWorkspaceContextProvider> <ManageDialogs /> <ManageWorkflows /> <ManageContextualMenu /> <DragContextProvider> <ResizableSidebarContextProvider> <div id="container" className="page user"> <div id="app" className="app" tabIndex="1000"> <DisplayUserWorkspace /> </div> </div> </ResizableSidebarContextProvider> </DragContextProvider> </UserWorkspaceContextProvider> </Route> {/* User settings workspace */} <Route path={["/app/settings", "/app/settings/mfa/:provider"]}> <UserSettingsContextProvider> <UserPassphrasePoliciesContextProvider> <ManageDialogs /> <div id="container" className="page settings"> <div id="app" className="app" tabIndex="1000"> <DisplayUserSettingsWorkspace /> </div> </div> </UserPassphrasePoliciesContextProvider> </UserSettingsContextProvider> </Route> {/* SSO, Subscription and Account Recovery settings */} <Route exact path={[ "/app/administration", "/app/administration/subscription", "/app/administration/account-recovery", "/app/administration/sso", "/app/administration/password-policies", "/app/administration/user-passphrase-policies", "/app/administration/password-expiry", "/app/administration/content-types/metadata", "/app/administration/content-types/metadata-key", "/app/administration/migrate-metadata", "/app/administration/allow-content-types", "/app/administration/content-types/metadata-getting-started", "/app/administration/subscription-teasing", "/app/administration/password-policies-teasing", "/app/administration/user-passphrase-policies-teasing", "/app/administration/account-recovery-teasing", "/app/administration/sso-teasing", "/app/administration/mfa-policy-teasing", "/app/administration/users-directory-teasing", "/app/administration/scim-teasing", "/app/administration/user-provisionning/scim", "/app/administration/secret-history", ]} > <AdministrationWorkspaceContextProvider> <AdminAccountRecoveryContextProvider> <AdminSubscriptionContextProvider> <AdminSsoContextProvider> <AdminPasswordPoliciesContextProvider> <AdministrationUserPassphrasePoliciesContextProvider> <AdministrationPasswordExpiryContextProvider> <ResourceTypesLocalStorageContextProvider> <AdministrationEncryptedMetadataGettingStartedContextProvider service={ new GettingStartedWithEncryptedMetadataServiceWorkerService( appContext.port, ) } > <ManageDialogs /> <ManageWorkflows /> <AdministrationWorkspace /> </AdministrationEncryptedMetadataGettingStartedContextProvider> </ResourceTypesLocalStorageContextProvider> </AdministrationPasswordExpiryContextProvider> </AdministrationUserPassphrasePoliciesContextProvider> </AdminPasswordPoliciesContextProvider> </AdminSsoContextProvider> </AdminSubscriptionContextProvider> </AdminAccountRecoveryContextProvider> </AdministrationWorkspaceContextProvider> </Route> {/* Fallback */} <Route path="/"> <HandleRouteFallback /> </Route> </Switch> </NavigationContextProvider> </Router> <ManageLoading /> </ProgressContextProvider> </LoadingContextProvider> </RoleContextProvider> </ContextualMenuContextProvider> </ManagedClipboardServiceProvider> </AnnouncementContextProvider> </DialogContextProvider> </ActionFeedbackContextProvider> </WorkflowContextProvider> </MfaContextProvider> </PasswordPoliciesContext> </AccountRecoveryUserContextProvider> </RbacContextProvider> </TranslationProvider> )} </AppContext.Consumer> </ExtAppContextProvider> ); } } ExtApp.propTypes = { onClose: PropTypes.func, disabled: PropTypes.bool, port: PropTypes.object, storage: PropTypes.object, }; export default ExtApp;