UNPKG

passbolt-styleguide

Version:

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

244 lines (234 loc) 14.6 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 DisplayMainMenu from "./components/Common/Menu/DisplayMainMenu"; 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 Footer from "./components/Common/Footer/Footer"; import HandleExtAppRouteChanged from "./components/Common/Route/HandleExtAppRouteChanged"; import NavigationContextProvider from "./contexts/NavigationContext"; import AdministrationWorkspaceContextProvider from "./contexts/AdministrationWorkspaceContext"; import ManageAnnouncements from "./components/Announcement/ManageAnnouncements/ManageAnnouncements"; 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 "./contexts/AppContext"; import HandlePassphraseEntryEvents from "./components/AuthenticationPassphrase/HandlePassphraseEntryEvents/HandlePassphraseEntryEvents"; import HandleFolderMoveStrategyEvents from "./components/ResourceFolder/HandleFolderMoveStrategyEvents/HandleFolderMoveStrategyEvents"; import HandleProgressEvents from "./components/Common/Progress/HandleProgressEvents/HandleProgressEvents"; import HandleErrorEvents from "./components/Common/Error/HandleErrorEvents/HandleErrorEvents"; 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"; /** * 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 { /* * ============================================================= * View * ============================================================= */ 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"> <AccountRecoveryUserContextProvider accountRecoveryUserService={accountRecoveryUserService}> <MfaContextProvider> <WorkflowContextProvider> <ActionFeedbackContextProvider> <DialogContextProvider> <AnnouncementContextProvider> <ContextualMenuContextProvider> <LoadingContextProvider> { /* Action Feedback Management */} <DisplayActionFeedbacks/> { /* Dialogs Management */} <HandlePassphraseEntryEvents/> <HandleFolderMoveStrategyEvents/> <HandleProgressEvents/> <HandleErrorEvents/> <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", "/app/administration/mfa", "/app/administration/users-directory", "/app/administration/email-notification", "/app/administration/smtp-settings", "/app/settings/mfa/:provider", "/app/settings/mfa" ]}/> {/* Passwords workspace */} <Route path={[ "/app/folders/view/:filterByFolderId", "/app/passwords/view/:selectedResourceId", "/app/passwords", ]}> <ResourceWorkspaceContextProvider> <ResourcePasswordGeneratorContextProvider> <ManageDialogs/> <ManageContextualMenu/> <ManageAnnouncements/> <DragContextProvider> <div id="container" className="page password"> <div id="app" className="app ready" tabIndex="1000"> <div className="header first"> <DisplayMainMenu/> </div> <DisplayResourcesWorkspace onMenuItemClick={this.handleWorkspaceSelect}/> </div> </div> </DragContextProvider> </ResourcePasswordGeneratorContextProvider> </ResourceWorkspaceContextProvider> </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/> <ManageAnnouncements/> <div id="container" className="page user"> <div id="app" className="app ready" tabIndex="1000"> <div className="header first"> <DisplayMainMenu/> </div> <DisplayUserWorkspace/> </div> </div> </UserWorkspaceContextProvider> </Route> {/* User settings workspace */} <Route path={"/app/settings"}> <UserSettingsContextProvider> <ManageDialogs/> <ManageAnnouncements/> <div id="container" className="page settings"> <div id="app" className="app ready" tabIndex="1000"> <div className="header first"> <DisplayMainMenu/> </div> <DisplayUserSettingsWorkspace/> </div> </div> </UserSettingsContextProvider> </Route> {/* SSO, Subscription and Account Recovery settings */} <Route exact path={[ "/app/administration/subscription", "/app/administration/account-recovery", "/app/administration/sso", ]}> <AdministrationWorkspaceContextProvider> <AdminAccountRecoveryContextProvider> <AdminSubscriptionContextProvider> <AdminSsoContextProvider> <ManageDialogs/> <ManageWorkflows/> <AdministrationWorkspace/> </AdminSsoContextProvider> </AdminSubscriptionContextProvider> </AdminAccountRecoveryContextProvider> </AdministrationWorkspaceContextProvider> </Route> {/* Fallback */} <Route path="/"> <HandleRouteFallback/> </Route> </Switch> </NavigationContextProvider> </Router> <ManageLoading/> <Footer/> </LoadingContextProvider> </ContextualMenuContextProvider> </AnnouncementContextProvider> </DialogContextProvider> </ActionFeedbackContextProvider> </WorkflowContextProvider> </MfaContextProvider> </AccountRecoveryUserContextProvider> </TranslationProvider> } </AppContext.Consumer> </ExtAppContextProvider> ); } } ExtApp.propTypes = { onClose: PropTypes.func, disabled: PropTypes.bool, port: PropTypes.object, storage: PropTypes.object, }; export default ExtApp;