Fix confirm link invite
This commit is contained in:
parent
66ea36b36f
commit
39d8a9b85b
@ -1,13 +1,20 @@
|
||||
import React from "react";
|
||||
import { useLocation, Navigate } from "react-router-dom";
|
||||
import { ValidationResult } from "./../helpers/constants";
|
||||
import { AuthenticatedAction, ValidationResult } from "./../helpers/constants";
|
||||
import Loader from "@docspace/components/loader";
|
||||
import Section from "@docspace/common/components/Section";
|
||||
import { checkConfirmLink } from "@docspace/common/api/user"; //TODO: Move AuthStore
|
||||
import { combineUrl, getObjectByLocation } from "@docspace/common/utils";
|
||||
import { inject, observer } from "mobx-react";
|
||||
|
||||
const ConfirmRoute = (props) => {
|
||||
const ConfirmRoute = ({
|
||||
doAuthenticated,
|
||||
isAuthenticated,
|
||||
storeIsLoaded,
|
||||
logout,
|
||||
defaultPage,
|
||||
children,
|
||||
}) => {
|
||||
const [state, setState] = React.useState({
|
||||
linkData: {},
|
||||
isLoaded: false,
|
||||
@ -35,10 +42,13 @@ const ConfirmRoute = (props) => {
|
||||
);
|
||||
|
||||
React.useEffect(() => {
|
||||
const { forUnauthorized, isAuthenticated } = props;
|
||||
if (!storeIsLoaded) return;
|
||||
|
||||
if (forUnauthorized && isAuthenticated) {
|
||||
props.logout();
|
||||
if (isAuthenticated && doAuthenticated != AuthenticatedAction.None) {
|
||||
if (doAuthenticated == AuthenticatedAction.Redirect)
|
||||
return window.location.replace(defaultPage);
|
||||
|
||||
if (doAuthenticated == AuthenticatedAction.Logout) logout();
|
||||
}
|
||||
|
||||
const { search } = location;
|
||||
@ -135,7 +145,7 @@ const ConfirmRoute = (props) => {
|
||||
"/error"
|
||||
);
|
||||
});
|
||||
}, [getData]);
|
||||
}, [getData, doAuthenticated, isAuthenticated, storeIsLoaded, logout]);
|
||||
|
||||
// console.log(`ConfirmRoute render`, this.props, this.state);
|
||||
|
||||
@ -146,17 +156,24 @@ const ConfirmRoute = (props) => {
|
||||
</Section.SectionBody>
|
||||
</Section>
|
||||
) : (
|
||||
React.cloneElement(props.children, {
|
||||
React.cloneElement(children, {
|
||||
linkData: state.linkData,
|
||||
roomData: state.roomData,
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
ConfirmRoute.defaultProps = {
|
||||
doAuthenticated: AuthenticatedAction.None,
|
||||
};
|
||||
|
||||
export default inject(({ auth }) => {
|
||||
const { isAuthenticated, logout } = auth;
|
||||
const { isAuthenticated, logout, isLoaded, settingsStore } = auth;
|
||||
const { defaultPage } = settingsStore;
|
||||
return {
|
||||
isAuthenticated,
|
||||
logout,
|
||||
storeIsLoaded: isLoaded,
|
||||
defaultPage,
|
||||
};
|
||||
})(observer(ConfirmRoute));
|
||||
|
@ -154,3 +154,9 @@ export const ARTICLE_ALERTS = Object.freeze({
|
||||
TeamTraining: "TeamTraining",
|
||||
SubmitToFormGallery: "SubmitToFormGallery",
|
||||
});
|
||||
|
||||
export const AuthenticatedAction = Object.freeze({
|
||||
None: 0,
|
||||
Logout: 1,
|
||||
Redirect: 2,
|
||||
});
|
||||
|
@ -179,4 +179,10 @@ export const RegisterContainer = styled.div`
|
||||
.password-field-wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.signin-container {
|
||||
width: 100%;
|
||||
margin-top: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
}`;
|
||||
|
@ -37,6 +37,7 @@ import {
|
||||
GreetingContainer,
|
||||
RegisterContainer,
|
||||
} from "./StyledCreateUser";
|
||||
import combineUrl from "@docspace/common/utils/combineUrl";
|
||||
|
||||
const CreateUserForm = (props) => {
|
||||
const {
|
||||
@ -107,12 +108,7 @@ const CreateUserForm = (props) => {
|
||||
}, []);*/
|
||||
|
||||
useEffect(() => {
|
||||
const { isAuthenticated, logout, linkData } = props;
|
||||
|
||||
if (isAuthenticated) {
|
||||
const path = window.location;
|
||||
logout().then(() => window.location.replace(path));
|
||||
}
|
||||
const { linkData } = props;
|
||||
|
||||
const fetchData = async () => {
|
||||
if (linkData.type === "LinkInvite") {
|
||||
@ -128,7 +124,7 @@ const CreateUserForm = (props) => {
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, [props.isAuthenticated]);
|
||||
}, []);
|
||||
|
||||
const onSubmit = () => {
|
||||
const { linkData, hashSettings } = props;
|
||||
@ -419,6 +415,12 @@ const CreateUserForm = (props) => {
|
||||
setIsPasswordErrorShow(true);
|
||||
};
|
||||
|
||||
const onSignIn = () => {
|
||||
return window.location.replace(
|
||||
combineUrl(window.DocSpaceConfig?.proxy?.url, "/login")
|
||||
);
|
||||
};
|
||||
|
||||
const userAvatar = user && user.hasAvatar ? user.avatar : DefaultUserPhoto;
|
||||
|
||||
return (
|
||||
@ -431,7 +433,8 @@ const CreateUserForm = (props) => {
|
||||
fontSize="23px"
|
||||
fontWeight={700}
|
||||
textAlign="left"
|
||||
className="greeting-title">
|
||||
className="greeting-title"
|
||||
>
|
||||
{greetingTitle}
|
||||
</Text>
|
||||
|
||||
@ -462,7 +465,8 @@ const CreateUserForm = (props) => {
|
||||
t={t}
|
||||
i18nKey="WelcomeToRoom"
|
||||
ns="Confirm"
|
||||
key={roomName}>
|
||||
key={roomName}
|
||||
>
|
||||
Welcome to the <strong>{{ roomName }}</strong> room!
|
||||
</Trans>
|
||||
) : (
|
||||
@ -500,7 +504,8 @@ const CreateUserForm = (props) => {
|
||||
fontWeight="600"
|
||||
color={currentColorScheme?.main?.accent}
|
||||
className="more-label"
|
||||
onClick={moreAuthOpen}>
|
||||
onClick={moreAuthOpen}
|
||||
>
|
||||
{t("Common:ShowMore")}
|
||||
</Link>
|
||||
)}
|
||||
@ -529,7 +534,8 @@ const CreateUserForm = (props) => {
|
||||
emailErrorText
|
||||
? t(`Common:${emailErrorText}`)
|
||||
: t("Common:RequiredField")
|
||||
}>
|
||||
}
|
||||
>
|
||||
<EmailInput
|
||||
id="login"
|
||||
name="login"
|
||||
@ -562,7 +568,8 @@ const CreateUserForm = (props) => {
|
||||
: fname.trim().length === 0
|
||||
? t("Common:RequiredField")
|
||||
: t("Common:IncorrectFirstName")
|
||||
}>
|
||||
}
|
||||
>
|
||||
<TextInput
|
||||
id="first-name"
|
||||
name="first-name"
|
||||
@ -590,7 +597,8 @@ const CreateUserForm = (props) => {
|
||||
: sname.trim().length === 0
|
||||
? t("Common:RequiredField")
|
||||
: t("Common:IncorrectLastName")
|
||||
}>
|
||||
}
|
||||
>
|
||||
<TextInput
|
||||
id="last-name"
|
||||
name="last-name"
|
||||
@ -614,7 +622,8 @@ const CreateUserForm = (props) => {
|
||||
hasError={isPasswordErrorShow && !passwordValid}
|
||||
errorMessage={`${t(
|
||||
"Common:PasswordLimitMessage"
|
||||
)}: ${getPasswordErrorMessage(t, settings)}`}>
|
||||
)}: ${getPasswordErrorMessage(t, settings)}`}
|
||||
>
|
||||
<PasswordInput
|
||||
simpleView={false}
|
||||
hideNewPasswordButton
|
||||
@ -670,6 +679,19 @@ const CreateUserForm = (props) => {
|
||||
onClick={onSubmit}
|
||||
/>
|
||||
</div>
|
||||
<div className="signin-container">
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
fontSize="13px"
|
||||
fontWeight="600"
|
||||
color={currentColorScheme?.main?.accent}
|
||||
className="signin-button"
|
||||
onClick={onSignIn}
|
||||
>
|
||||
{t("Common:LoginButton")}
|
||||
</Link>
|
||||
</div>
|
||||
</form>
|
||||
)}
|
||||
|
||||
@ -710,14 +732,7 @@ const CreateUserForm = (props) => {
|
||||
};
|
||||
|
||||
export default inject(({ auth }) => {
|
||||
const {
|
||||
logout,
|
||||
isAuthenticated,
|
||||
settingsStore,
|
||||
providers,
|
||||
thirdPartyLogin,
|
||||
capabilities,
|
||||
} = auth;
|
||||
const { settingsStore, providers, thirdPartyLogin, capabilities } = auth;
|
||||
const {
|
||||
passwordSettings,
|
||||
greetingSettings,
|
||||
@ -733,8 +748,7 @@ export default inject(({ auth }) => {
|
||||
greetingTitle: greetingSettings,
|
||||
hashSettings,
|
||||
defaultPage,
|
||||
isAuthenticated,
|
||||
logout,
|
||||
|
||||
getSettings,
|
||||
getPortalPasswordSettings,
|
||||
thirdPartyLogin,
|
||||
|
@ -5,6 +5,7 @@ import ConfirmRoute from "../helpers/confirmRoute";
|
||||
import ErrorBoundary from "@docspace/common/components/ErrorBoundary";
|
||||
|
||||
import Error404 from "SRC_DIR/pages/Errors/404";
|
||||
import { AuthenticatedAction } from "../helpers/constants";
|
||||
|
||||
const Confirm = loadable(() => import("../pages/Confirm"));
|
||||
|
||||
@ -53,7 +54,7 @@ const confirmRoutes = [
|
||||
{
|
||||
path: "EmpInvite",
|
||||
element: (
|
||||
<ConfirmRoute forUnauthorized>
|
||||
<ConfirmRoute doAuthenticated={AuthenticatedAction.Redirect}>
|
||||
<CreateUserForm />
|
||||
</ConfirmRoute>
|
||||
),
|
||||
@ -61,7 +62,7 @@ const confirmRoutes = [
|
||||
{
|
||||
path: "LinkInvite",
|
||||
element: (
|
||||
<ConfirmRoute forUnauthorized>
|
||||
<ConfirmRoute doAuthenticated={AuthenticatedAction.Redirect}>
|
||||
<CreateUserForm />
|
||||
</ConfirmRoute>
|
||||
),
|
||||
@ -69,7 +70,7 @@ const confirmRoutes = [
|
||||
{
|
||||
path: "Activation",
|
||||
element: (
|
||||
<ConfirmRoute forUnauthorized>
|
||||
<ConfirmRoute doAuthenticated={AuthenticatedAction.Logout}>
|
||||
<ActivateUserForm />
|
||||
</ConfirmRoute>
|
||||
),
|
||||
@ -93,7 +94,7 @@ const confirmRoutes = [
|
||||
{
|
||||
path: "PasswordChange",
|
||||
element: (
|
||||
<ConfirmRoute forUnauthorized>
|
||||
<ConfirmRoute doAuthenticated={AuthenticatedAction.Logout}>
|
||||
<ChangePasswordForm />
|
||||
</ConfirmRoute>
|
||||
),
|
||||
@ -165,7 +166,7 @@ const confirmRoutes = [
|
||||
{
|
||||
path: "Auth",
|
||||
element: (
|
||||
<ConfirmRoute forUnauthorized>
|
||||
<ConfirmRoute doAuthenticated={AuthenticatedAction.Logout}>
|
||||
<Auth />
|
||||
</ConfirmRoute>
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user