Merge pull request #270 from ONLYOFFICE/feature/rewrite-routes
Feature/rewrite routes
This commit is contained in:
commit
c3d40484b5
87
packages/client/src/components/PrivateRouteWrapper/index.tsx
Normal file
87
packages/client/src/components/PrivateRouteWrapper/index.tsx
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
import { inject, observer } from "mobx-react";
|
||||||
|
|
||||||
|
import { PrivateRoute } from "@docspace/shared/routes";
|
||||||
|
import type { PrivateRouteProps } from "@docspace/shared/routes";
|
||||||
|
|
||||||
|
const PrivateRouteWrapper = ({
|
||||||
|
wizardCompleted,
|
||||||
|
children,
|
||||||
|
enablePortalRename,
|
||||||
|
isAdmin,
|
||||||
|
isAuthenticated,
|
||||||
|
isCommunity,
|
||||||
|
isEnterprise,
|
||||||
|
isLoaded,
|
||||||
|
isLogout,
|
||||||
|
isNotPaidPeriod,
|
||||||
|
isPortalDeactivate,
|
||||||
|
limitedAccessSpace,
|
||||||
|
tenantStatus,
|
||||||
|
user,
|
||||||
|
restricted,
|
||||||
|
withCollaborator,
|
||||||
|
withManager,
|
||||||
|
}: Partial<PrivateRouteProps>) => {
|
||||||
|
return (
|
||||||
|
<PrivateRoute
|
||||||
|
user={user!}
|
||||||
|
isAdmin={isAdmin!}
|
||||||
|
isLoaded={isLoaded!}
|
||||||
|
isLogout={isLogout!}
|
||||||
|
restricted={restricted}
|
||||||
|
withManager={withManager}
|
||||||
|
isCommunity={isCommunity}
|
||||||
|
isEnterprise={isEnterprise}
|
||||||
|
tenantStatus={tenantStatus!}
|
||||||
|
isAuthenticated={isAuthenticated}
|
||||||
|
wizardCompleted={wizardCompleted!}
|
||||||
|
isNotPaidPeriod={isNotPaidPeriod!}
|
||||||
|
withCollaborator={withCollaborator}
|
||||||
|
isPortalDeactivate={isPortalDeactivate!}
|
||||||
|
enablePortalRename={enablePortalRename!}
|
||||||
|
limitedAccessSpace={limitedAccessSpace!}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</PrivateRoute>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default inject<TStore>(
|
||||||
|
({ authStore, settingsStore, userStore, currentTariffStatusStore }) => {
|
||||||
|
const {
|
||||||
|
isAuthenticated,
|
||||||
|
isLoaded,
|
||||||
|
isAdmin,
|
||||||
|
|
||||||
|
isLogout,
|
||||||
|
isCommunity,
|
||||||
|
isEnterprise,
|
||||||
|
} = authStore;
|
||||||
|
const { isNotPaidPeriod } = currentTariffStatusStore;
|
||||||
|
const { user } = userStore;
|
||||||
|
|
||||||
|
const {
|
||||||
|
wizardCompleted,
|
||||||
|
tenantStatus,
|
||||||
|
isPortalDeactivate,
|
||||||
|
enablePortalRename,
|
||||||
|
limitedAccessSpace,
|
||||||
|
} = settingsStore;
|
||||||
|
|
||||||
|
return {
|
||||||
|
isPortalDeactivate,
|
||||||
|
isCommunity,
|
||||||
|
isNotPaidPeriod,
|
||||||
|
user,
|
||||||
|
isAuthenticated,
|
||||||
|
isAdmin,
|
||||||
|
isLoaded,
|
||||||
|
wizardCompleted,
|
||||||
|
tenantStatus,
|
||||||
|
isLogout,
|
||||||
|
isEnterprise,
|
||||||
|
enablePortalRename,
|
||||||
|
limitedAccessSpace,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
)(observer(PrivateRouteWrapper));
|
35
packages/client/src/components/PublicRouteWrapper/index.tsx
Normal file
35
packages/client/src/components/PublicRouteWrapper/index.tsx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import { inject, observer } from "mobx-react";
|
||||||
|
|
||||||
|
import { PublicRoute } from "@docspace/shared/routes";
|
||||||
|
import type { PublicRouteProps } from "@docspace/shared/routes";
|
||||||
|
|
||||||
|
const PublicRouteWrapper = ({
|
||||||
|
children,
|
||||||
|
isAuthenticated,
|
||||||
|
isPortalDeactivate,
|
||||||
|
tenantStatus,
|
||||||
|
wizardCompleted,
|
||||||
|
}: Partial<PublicRouteProps>) => {
|
||||||
|
return (
|
||||||
|
<PublicRoute
|
||||||
|
tenantStatus={tenantStatus!}
|
||||||
|
isAuthenticated={isAuthenticated}
|
||||||
|
wizardCompleted={wizardCompleted!}
|
||||||
|
isPortalDeactivate={isPortalDeactivate!}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</PublicRoute>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default inject<TStore>(({ authStore, settingsStore }) => {
|
||||||
|
const { isAuthenticated } = authStore;
|
||||||
|
const { wizardCompleted, tenantStatus, isPortalDeactivate } = settingsStore;
|
||||||
|
|
||||||
|
return {
|
||||||
|
tenantStatus,
|
||||||
|
wizardCompleted,
|
||||||
|
isAuthenticated,
|
||||||
|
isPortalDeactivate,
|
||||||
|
};
|
||||||
|
})(observer(PublicRouteWrapper));
|
@ -2,8 +2,8 @@ import React from "react";
|
|||||||
import { Navigate } from "react-router-dom";
|
import { Navigate } from "react-router-dom";
|
||||||
import loadable from "@loadable/component";
|
import loadable from "@loadable/component";
|
||||||
|
|
||||||
import PrivateRoute from "@docspace/common/components/PrivateRoute";
|
import PrivateRoute from "../components/PrivateRouteWrapper";
|
||||||
import PublicRoute from "@docspace/common/components/PublicRoute";
|
import PublicRoute from "../components/PublicRouteWrapper";
|
||||||
import Error404 from "@docspace/shared/components/errors/Error404";
|
import Error404 from "@docspace/shared/components/errors/Error404";
|
||||||
|
|
||||||
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
|
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
|
||||||
|
@ -3,7 +3,7 @@ import { Navigate } from "react-router-dom";
|
|||||||
|
|
||||||
import loadable from "@loadable/component";
|
import loadable from "@loadable/component";
|
||||||
|
|
||||||
import PrivateRoute from "@docspace/common/components/PrivateRoute";
|
import PrivateRoute from "../components/PrivateRouteWrapper";
|
||||||
|
|
||||||
const Profile = loadable(() => import("../pages/Profile"));
|
const Profile = loadable(() => import("../pages/Profile"));
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import { Navigate } from "react-router-dom";
|
import { Navigate } from "react-router-dom";
|
||||||
import loadable from "@loadable/component";
|
import loadable from "@loadable/component";
|
||||||
|
|
||||||
import PrivateRoute from "@docspace/common/components/PrivateRoute";
|
import PrivateRoute from "../components/PrivateRouteWrapper";
|
||||||
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
|
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
|
||||||
|
|
||||||
import Error404 from "@docspace/shared/components/errors/Error404";
|
import Error404 from "@docspace/shared/components/errors/Error404";
|
||||||
@ -12,180 +12,202 @@ import { generalRoutes } from "./general";
|
|||||||
const PortalSettings = loadable(() => import("../pages/PortalSettings"));
|
const PortalSettings = loadable(() => import("../pages/PortalSettings"));
|
||||||
|
|
||||||
const CustomizationSettings = loadable(
|
const CustomizationSettings = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/common/index.js")
|
() => import("../pages/PortalSettings/categories/common/index.js"),
|
||||||
);
|
);
|
||||||
const LanguageAndTimeZoneSettings = loadable(
|
const LanguageAndTimeZoneSettings = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Customization/language-and-time-zone"
|
"../pages/PortalSettings/categories/common/Customization/language-and-time-zone"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const WelcomePageSettings = loadable(
|
const WelcomePageSettings = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Customization/welcome-page-settings"
|
"../pages/PortalSettings/categories/common/Customization/welcome-page-settings"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const DNSSettings = loadable(
|
const DNSSettings = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Customization/dns-settings"
|
"../pages/PortalSettings/categories/common/Customization/dns-settings"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const PortalRenaming = loadable(
|
const PortalRenaming = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Customization/portal-renaming"
|
"../pages/PortalSettings/categories/common/Customization/portal-renaming"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const WhiteLabel = loadable(
|
const WhiteLabel = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/common/Branding/whitelabel")
|
() => import("../pages/PortalSettings/categories/common/Branding/whitelabel"),
|
||||||
);
|
);
|
||||||
const CompanyInfoSettings = loadable(
|
const CompanyInfoSettings = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Branding/companyInfoSettings"
|
"../pages/PortalSettings/categories/common/Branding/companyInfoSettings"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const AdditionalResources = loadable(
|
const AdditionalResources = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/common/Branding/additionalResources"
|
"../pages/PortalSettings/categories/common/Branding/additionalResources"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const SecuritySettings = loadable(
|
const SecuritySettings = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/security/index.js")
|
() => import("../pages/PortalSettings/categories/security/index.js"),
|
||||||
);
|
);
|
||||||
const TfaPage = loadable(
|
const TfaPage = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/security/access-portal/tfa")
|
() => import("../pages/PortalSettings/categories/security/access-portal/tfa"),
|
||||||
);
|
);
|
||||||
const PasswordStrengthPage = loadable(
|
const PasswordStrengthPage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/passwordStrength"
|
"../pages/PortalSettings/categories/security/access-portal/passwordStrength"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const TrustedMailPage = loadable(
|
const TrustedMailPage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/trustedMail"
|
"../pages/PortalSettings/categories/security/access-portal/trustedMail"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const IpSecurityPage = loadable(
|
const IpSecurityPage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/ipSecurity"
|
"../pages/PortalSettings/categories/security/access-portal/ipSecurity"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const BruteForceProtectionPage = loadable(
|
const BruteForceProtectionPage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/bruteForceProtection"
|
"../pages/PortalSettings/categories/security/access-portal/bruteForceProtection"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const AdminMessagePage = loadable(
|
const AdminMessagePage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/adminMessage"
|
"../pages/PortalSettings/categories/security/access-portal/adminMessage"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const SessionLifetimePage = loadable(
|
const SessionLifetimePage = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/security/access-portal/sessionLifetime"
|
"../pages/PortalSettings/categories/security/access-portal/sessionLifetime"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const Integration = loadable(
|
const Integration = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/integration")
|
() => import("../pages/PortalSettings/categories/integration"),
|
||||||
);
|
);
|
||||||
const Payments = loadable(
|
const Payments = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/payments")
|
() => import("../pages/PortalSettings/categories/payments"),
|
||||||
);
|
);
|
||||||
const Statistics = loadable(() =>
|
const Statistics = loadable(
|
||||||
import("../pages/PortalSettings/categories/storage-management")
|
() => import("../pages/PortalSettings/categories/storage-management"),
|
||||||
);
|
);
|
||||||
const QuotaPerRoom = loadable(() =>
|
const QuotaPerRoom = loadable(
|
||||||
import(
|
() =>
|
||||||
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerRoom.js"
|
import(
|
||||||
)
|
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerRoom.js"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const QuotaPerUser = loadable(() =>
|
const QuotaPerUser = loadable(
|
||||||
import(
|
() =>
|
||||||
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerUser.js"
|
import(
|
||||||
)
|
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerUser.js"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const ThirdParty = loadable(() =>
|
const ThirdParty = loadable(
|
||||||
import(
|
() =>
|
||||||
"../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
|
import(
|
||||||
)
|
"../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const DocumentService = loadable(
|
const DocumentService = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/integration/DocumentService")
|
() =>
|
||||||
|
import("../pages/PortalSettings/categories/integration/DocumentService"),
|
||||||
);
|
);
|
||||||
|
|
||||||
const SingleSignOn = loadable(
|
const SingleSignOn = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/integration/SingleSignOn")
|
() => import("../pages/PortalSettings/categories/integration/SingleSignOn"),
|
||||||
);
|
);
|
||||||
const SPSettings = loadable(
|
const SPSettings = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/integration/SingleSignOn/SPSettings"
|
"../pages/PortalSettings/categories/integration/SingleSignOn/SPSettings"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const SPMetadata = loadable(
|
const SPMetadata = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/integration/SingleSignOn/ProviderMetadata"
|
"../pages/PortalSettings/categories/integration/SingleSignOn/ProviderMetadata"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const DeveloperTools = loadable(
|
const DeveloperTools = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/developer-tools/index.js")
|
() => import("../pages/PortalSettings/categories/developer-tools/index.js"),
|
||||||
);
|
);
|
||||||
const WebhookHistory = loadable(
|
const WebhookHistory = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"
|
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const WebhookDetails = loadable(
|
const WebhookDetails = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"
|
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const Backup = loadable(
|
const Backup = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/data-management/index")
|
() => import("../pages/PortalSettings/categories/data-management/index"),
|
||||||
);
|
);
|
||||||
const DeleteDataPage = loadable(
|
const DeleteDataPage = loadable(
|
||||||
() => import("../pages/PortalSettings/categories/delete-data")
|
() => import("../pages/PortalSettings/categories/delete-data"),
|
||||||
);
|
);
|
||||||
const RestoreBackup = loadable(
|
const RestoreBackup = loadable(
|
||||||
() =>
|
() =>
|
||||||
import(
|
import(
|
||||||
"../pages/PortalSettings/categories/data-management/backup/restore-backup/index"
|
"../pages/PortalSettings/categories/data-management/backup/restore-backup/index"
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
const Bonus = loadable(() => import("../pages/Bonus"));
|
const Bonus = loadable(() => import("../pages/Bonus"));
|
||||||
|
|
||||||
const SimpleRoom = loadable(() =>
|
const SimpleRoom = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/SimpleRoom")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/SimpleRoom"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const Manager = loadable(() =>
|
const Manager = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Manager")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Manager"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const RoomSelector = loadable(() =>
|
const RoomSelector = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/RoomSelector")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/RoomSelector"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const FileSelector = loadable(() =>
|
const FileSelector = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/FileSelector")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/FileSelector"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const Editor = loadable(() =>
|
const Editor = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Editor")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Editor"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
const Viewer = loadable(() =>
|
const Viewer = loadable(
|
||||||
import("../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Viewer")
|
() =>
|
||||||
|
import(
|
||||||
|
"../pages/PortalSettings/categories/developer-tools/JavascriptSDK/presets/Viewer"
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const PortalSettingsRoutes = {
|
const PortalSettingsRoutes = {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
export { default as PrivateRoute } from "./PrivateRoute";
|
|
||||||
export { default as PublicRoute } from "./PublicRoute";
|
export { default as PublicRoute } from "./PublicRoute";
|
||||||
export { default as ExternalRedirect } from "./ExternalRedirect";
|
export { default as ExternalRedirect } from "./ExternalRedirect";
|
||||||
export { default as AdvancedSelector } from "./AdvancedSelector";
|
export { default as AdvancedSelector } from "./AdvancedSelector";
|
||||||
|
@ -1,37 +1,37 @@
|
|||||||
/* eslint-disable react/prop-types */
|
/* eslint-disable react/prop-types */
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Navigate, useLocation } from "react-router-dom";
|
import { Navigate, useLocation } from "react-router-dom";
|
||||||
import { inject, observer } from "mobx-react";
|
|
||||||
import Error403 from "@docspace/shared/components/errors/Error403";
|
|
||||||
|
|
||||||
|
import Error403 from "@docspace/shared/components/errors/Error403";
|
||||||
import AppLoader from "@docspace/shared/components/app-loader";
|
import AppLoader from "@docspace/shared/components/app-loader";
|
||||||
|
|
||||||
import { combineUrl } from "@docspace/shared/utils/combineUrl";
|
|
||||||
import { TenantStatus } from "@docspace/shared/enums";
|
import { TenantStatus } from "@docspace/shared/enums";
|
||||||
|
import { combineUrl } from "@docspace/shared/utils/combineUrl";
|
||||||
|
|
||||||
const PrivateRoute = ({ children, ...rest }) => {
|
import type { PrivateRouteProps } from "./Routers.types";
|
||||||
|
|
||||||
|
export const PrivateRoute = (props: PrivateRouteProps) => {
|
||||||
const {
|
const {
|
||||||
isAdmin,
|
isAdmin,
|
||||||
isAuthenticated,
|
|
||||||
isLoaded,
|
isLoaded,
|
||||||
restricted,
|
|
||||||
|
|
||||||
user,
|
|
||||||
|
|
||||||
wizardCompleted,
|
|
||||||
|
|
||||||
tenantStatus,
|
|
||||||
isNotPaidPeriod,
|
|
||||||
withManager,
|
|
||||||
withCollaborator,
|
|
||||||
isLogout,
|
isLogout,
|
||||||
standalone,
|
|
||||||
isCommunity,
|
isCommunity,
|
||||||
isEnterprise,
|
isEnterprise,
|
||||||
|
isNotPaidPeriod,
|
||||||
|
isAuthenticated,
|
||||||
isPortalDeactivate,
|
isPortalDeactivate,
|
||||||
enablePortalRename,
|
|
||||||
|
withManager,
|
||||||
|
withCollaborator,
|
||||||
|
wizardCompleted,
|
||||||
|
|
||||||
|
user,
|
||||||
|
children,
|
||||||
|
restricted,
|
||||||
|
tenantStatus,
|
||||||
limitedAccessSpace,
|
limitedAccessSpace,
|
||||||
} = rest;
|
enablePortalRename,
|
||||||
|
} = props;
|
||||||
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
if (!user && isAuthenticated) {
|
if (!user && isAuthenticated) {
|
||||||
if (isPortalDeactivate) {
|
if (isPortalDeactivate) {
|
||||||
window.location.replace(
|
window.location.replace(
|
||||||
combineUrl(window.DocSpaceConfig?.proxy?.url, "/unavailable")
|
combineUrl(window.DocSpaceConfig?.proxy?.url, "/unavailable"),
|
||||||
);
|
);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -71,7 +71,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
if (isLoaded && !isAuthenticated) {
|
if (isLoaded && !isAuthenticated) {
|
||||||
if (isPortalDeactivate) {
|
if (isPortalDeactivate) {
|
||||||
window.location.replace(
|
window.location.replace(
|
||||||
combineUrl(window.DocSpaceConfig?.proxy?.url, "/unavailable")
|
combineUrl(window.DocSpaceConfig?.proxy?.url, "/unavailable"),
|
||||||
);
|
);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -88,7 +88,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.location.replace(
|
window.location.replace(
|
||||||
combineUrl(window.DocSpaceConfig?.proxy?.url, redirectPath)
|
combineUrl(window.DocSpaceConfig?.proxy?.url, redirectPath),
|
||||||
);
|
);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -97,11 +97,11 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
if (
|
if (
|
||||||
isLoaded &&
|
isLoaded &&
|
||||||
((!isNotPaidPeriod && isPortalUnavailableUrl) ||
|
((!isNotPaidPeriod && isPortalUnavailableUrl) ||
|
||||||
(!user.isOwner && isPortalDeletionUrl) ||
|
(!user?.isOwner && isPortalDeletionUrl) ||
|
||||||
(isCommunity && isPaymentsUrl) ||
|
(isCommunity && isPaymentsUrl) ||
|
||||||
(isEnterprise && isBonusPage))
|
(isEnterprise && isBonusPage))
|
||||||
) {
|
) {
|
||||||
return <Navigate replace to={"/"} />;
|
return <Navigate replace to="/" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isLoaded && limitedAccessSpace && isPortalDeletionUrl) {
|
if (isLoaded && limitedAccessSpace && isPortalDeletionUrl) {
|
||||||
@ -119,7 +119,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
replace
|
replace
|
||||||
to={combineUrl(
|
to={combineUrl(
|
||||||
window.DocSpaceConfig?.proxy?.url,
|
window.DocSpaceConfig?.proxy?.url,
|
||||||
"/preparation-portal"
|
"/preparation-portal",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -128,7 +128,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
if (
|
if (
|
||||||
isNotPaidPeriod &&
|
isNotPaidPeriod &&
|
||||||
isLoaded &&
|
isLoaded &&
|
||||||
(user.isOwner || user.isAdmin) &&
|
(user?.isOwner || user?.isAdmin) &&
|
||||||
!isPaymentsUrl &&
|
!isPaymentsUrl &&
|
||||||
!isBackupUrl &&
|
!isBackupUrl &&
|
||||||
!isPortalDeletionUrl
|
!isPortalDeletionUrl
|
||||||
@ -138,7 +138,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
replace
|
replace
|
||||||
to={combineUrl(
|
to={combineUrl(
|
||||||
window.DocSpaceConfig?.proxy?.url,
|
window.DocSpaceConfig?.proxy?.url,
|
||||||
"/portal-settings/payments/portal-payments"
|
"/portal-settings/payments/portal-payments",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -147,8 +147,8 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
if (
|
if (
|
||||||
isNotPaidPeriod &&
|
isNotPaidPeriod &&
|
||||||
isLoaded &&
|
isLoaded &&
|
||||||
!user.isOwner &&
|
!user?.isOwner &&
|
||||||
!user.isAdmin &&
|
!user?.isAdmin &&
|
||||||
!isPortalUnavailableUrl
|
!isPortalUnavailableUrl
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
@ -156,7 +156,7 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
replace
|
replace
|
||||||
to={combineUrl(
|
to={combineUrl(
|
||||||
window.DocSpaceConfig?.proxy?.url,
|
window.DocSpaceConfig?.proxy?.url,
|
||||||
"/portal-unavailable"
|
"/portal-unavailable",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -195,72 +195,26 @@ const PrivateRoute = ({ children, ...rest }) => {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
if (isPortalRenameUrl && !enablePortalRename) {
|
if (isPortalRenameUrl && !enablePortalRename) {
|
||||||
return <Navigate replace to={"/error/404"} />;
|
return <Navigate replace to="/error/404" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!restricted ||
|
!restricted ||
|
||||||
isAdmin ||
|
isAdmin ||
|
||||||
(withManager && !user.isVisitor && !user.isCollaborator) ||
|
(withManager && !user?.isVisitor && !user?.isCollaborator) ||
|
||||||
(withCollaborator && !user.isVisitor)
|
(withCollaborator && !user?.isVisitor)
|
||||||
) {
|
) {
|
||||||
return children;
|
return children;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (restricted) {
|
if (restricted) {
|
||||||
return <Navigate replace to={"/error/401"} />;
|
return <Navigate replace to="/error/401" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <Navigate replace to={"/error/404"} />;
|
return <Navigate replace to="/error/404" />;
|
||||||
};
|
};
|
||||||
|
|
||||||
const component = renderComponent();
|
const component = renderComponent();
|
||||||
|
|
||||||
return component;
|
return component;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default inject(
|
|
||||||
({ authStore, settingsStore, userStore, currentTariffStatusStore }) => {
|
|
||||||
const {
|
|
||||||
isAuthenticated,
|
|
||||||
isLoaded,
|
|
||||||
isAdmin,
|
|
||||||
|
|
||||||
isLogout,
|
|
||||||
isCommunity,
|
|
||||||
isEnterprise,
|
|
||||||
} = authStore;
|
|
||||||
const { isNotPaidPeriod } = currentTariffStatusStore;
|
|
||||||
const { user } = userStore;
|
|
||||||
|
|
||||||
const {
|
|
||||||
setModuleInfo,
|
|
||||||
wizardCompleted,
|
|
||||||
personal,
|
|
||||||
tenantStatus,
|
|
||||||
standalone,
|
|
||||||
isPortalDeactivate,
|
|
||||||
enablePortalRename,
|
|
||||||
limitedAccessSpace,
|
|
||||||
} = settingsStore;
|
|
||||||
|
|
||||||
return {
|
|
||||||
isPortalDeactivate,
|
|
||||||
isCommunity,
|
|
||||||
isNotPaidPeriod,
|
|
||||||
user,
|
|
||||||
isAuthenticated,
|
|
||||||
isAdmin,
|
|
||||||
isLoaded,
|
|
||||||
|
|
||||||
wizardCompleted,
|
|
||||||
tenantStatus,
|
|
||||||
|
|
||||||
isLogout,
|
|
||||||
standalone,
|
|
||||||
isEnterprise,
|
|
||||||
enablePortalRename,
|
|
||||||
limitedAccessSpace,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)(observer(PrivateRoute));
|
|
@ -1,14 +1,20 @@
|
|||||||
/* eslint-disable react/prop-types */
|
/* eslint-disable react/prop-types */
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Navigate, Route, useLocation } from "react-router-dom";
|
import { Navigate, useLocation } from "react-router-dom";
|
||||||
//import AppLoader from "../AppLoader";
|
|
||||||
import { combineUrl } from "@docspace/shared/utils/combineUrl";
|
|
||||||
import { inject, observer } from "mobx-react";
|
|
||||||
import { TenantStatus } from "@docspace/shared/enums";
|
|
||||||
|
|
||||||
export const PublicRoute = ({ children, ...rest }) => {
|
import { TenantStatus } from "@docspace/shared/enums";
|
||||||
const { wizardCompleted, isAuthenticated, tenantStatus, isPortalDeactivate } =
|
import { combineUrl } from "@docspace/shared/utils/combineUrl";
|
||||||
rest;
|
|
||||||
|
import type { PublicRouteProps } from "./Routers.types";
|
||||||
|
|
||||||
|
export const PublicRoute = (props: PublicRouteProps) => {
|
||||||
|
const {
|
||||||
|
wizardCompleted,
|
||||||
|
isAuthenticated,
|
||||||
|
tenantStatus,
|
||||||
|
isPortalDeactivate,
|
||||||
|
children,
|
||||||
|
} = props;
|
||||||
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
@ -34,7 +40,7 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
(isAuthenticated && !isPortalRestoring && !isPortalDeactivate) ||
|
(isAuthenticated && !isPortalRestoring && !isPortalDeactivate) ||
|
||||||
(!location?.state?.isRestrictionError && isPortalRestriction)
|
(!location?.state?.isRestrictionError && isPortalRestriction)
|
||||||
) {
|
) {
|
||||||
return <Navigate replace to={"/"} />;
|
return <Navigate replace to="/" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAuthenticated && isPortalRestoring && !isPreparationPortalUrl) {
|
if (isAuthenticated && isPortalRestoring && !isPreparationPortalUrl) {
|
||||||
@ -43,7 +49,7 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
replace
|
replace
|
||||||
to={combineUrl(
|
to={combineUrl(
|
||||||
window.DocSpaceConfig?.proxy?.url,
|
window.DocSpaceConfig?.proxy?.url,
|
||||||
"/preparation-portal"
|
"/preparation-portal",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -57,7 +63,7 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!wizardCompleted && location.pathname !== "/wizard") {
|
if (!wizardCompleted && location.pathname !== "/wizard") {
|
||||||
return <Navigate replace to={"/wizard"} />;
|
return <Navigate replace to="/wizard" />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -71,7 +77,7 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
replace
|
replace
|
||||||
to={combineUrl(
|
to={combineUrl(
|
||||||
window.DocSpaceConfig?.proxy?.url,
|
window.DocSpaceConfig?.proxy?.url,
|
||||||
"/preparation-portal"
|
"/preparation-portal",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@ -97,7 +103,7 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
!isPortalDeactivate
|
!isPortalDeactivate
|
||||||
) {
|
) {
|
||||||
window.location.replace(
|
window.location.replace(
|
||||||
combineUrl(window.DocSpaceConfig?.proxy?.url, "/login")
|
combineUrl(window.DocSpaceConfig?.proxy?.url, "/login"),
|
||||||
);
|
);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -110,16 +116,3 @@ export const PublicRoute = ({ children, ...rest }) => {
|
|||||||
|
|
||||||
return component;
|
return component;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default inject(({ authStore, settingsStore }) => {
|
|
||||||
const { isAuthenticated, isLoaded } = authStore;
|
|
||||||
const { wizardCompleted, tenantStatus, isPortalDeactivate } = settingsStore;
|
|
||||||
|
|
||||||
return {
|
|
||||||
tenantStatus,
|
|
||||||
wizardCompleted,
|
|
||||||
isAuthenticated,
|
|
||||||
isLoaded,
|
|
||||||
isPortalDeactivate,
|
|
||||||
};
|
|
||||||
})(observer(PublicRoute));
|
|
40
packages/shared/routes/Routers.types.ts
Normal file
40
packages/shared/routes/Routers.types.ts
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import type { PropsWithChildren } from "react";
|
||||||
|
|
||||||
|
import type { AuthStore } from "../store/AuthStore";
|
||||||
|
import type { UserStore } from "../store/UserStore";
|
||||||
|
import type { SettingsStore } from "../store/SettingsStore";
|
||||||
|
import type { CurrentTariffStatusStore } from "../store/CurrentTariffStatusStore";
|
||||||
|
|
||||||
|
export interface PrivateRouteProps
|
||||||
|
extends PropsWithChildren,
|
||||||
|
Pick<
|
||||||
|
AuthStore,
|
||||||
|
| "isAuthenticated"
|
||||||
|
| "isLoaded"
|
||||||
|
| "isAdmin"
|
||||||
|
| "isLogout"
|
||||||
|
| "isCommunity"
|
||||||
|
| "isEnterprise"
|
||||||
|
>,
|
||||||
|
Pick<
|
||||||
|
SettingsStore,
|
||||||
|
| "wizardCompleted"
|
||||||
|
| "tenantStatus"
|
||||||
|
| "isPortalDeactivate"
|
||||||
|
| "enablePortalRename"
|
||||||
|
| "limitedAccessSpace"
|
||||||
|
>,
|
||||||
|
Pick<CurrentTariffStatusStore, "isNotPaidPeriod">,
|
||||||
|
Pick<UserStore, "user"> {
|
||||||
|
restricted?: boolean;
|
||||||
|
withManager?: boolean;
|
||||||
|
withCollaborator?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface PublicRouteProps
|
||||||
|
extends PropsWithChildren,
|
||||||
|
Pick<AuthStore, "isAuthenticated">,
|
||||||
|
Pick<
|
||||||
|
SettingsStore,
|
||||||
|
"wizardCompleted" | "tenantStatus" | "isPortalDeactivate"
|
||||||
|
> {}
|
4
packages/shared/routes/index.ts
Normal file
4
packages/shared/routes/index.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export { PrivateRoute } from "./Route.private";
|
||||||
|
export { PublicRoute } from "./Route.public";
|
||||||
|
|
||||||
|
export type { PrivateRouteProps, PublicRouteProps } from "./Routers.types";
|
@ -24,6 +24,7 @@
|
|||||||
".storybook",
|
".storybook",
|
||||||
"babel.config.ts",
|
"babel.config.ts",
|
||||||
"index.d.ts",
|
"index.d.ts",
|
||||||
"tsconfig.eslint.json"
|
"tsconfig.eslint.json",
|
||||||
|
"routes"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user