Merge branch 'dev' of https://github.com/smart-chain-fr/leCoffre-front into dev
This commit is contained in:
commit
88c13c7c03
@ -21,5 +21,5 @@ version: 0.0.1
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: 0.2.5
|
||||
appVersion: 0.3.7
|
||||
|
||||
|
@ -11,6 +11,8 @@ const nextConfig = {
|
||||
BACK_API_VERSION: process.env.BACK_API_VERSION,
|
||||
FRONT_APP_HOST: process.env.FRONT_APP_HOST,
|
||||
FRONT_APP_PORT: process.env.FRONT_APP_PORT,
|
||||
IDNOT_AUTHORIZE_ENDPOINT: process.env.IDNOT_AUTHORIZE_ENDPOINT,
|
||||
IDNOT_CLIENT_ID: process.env.IDNOT_CLIENT_ID,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { Service } from "typedi";
|
||||
import BaseApiService from "@Front/Api/BaseApiService";
|
||||
import { FrontendVariables } from "@Front/Config/VariablesFront";
|
||||
|
||||
@Service()
|
||||
export default class Auth extends BaseApiService {
|
||||
@ -10,30 +11,21 @@ export default class Auth extends BaseApiService {
|
||||
}
|
||||
|
||||
public static getInstance(): Auth {
|
||||
return (this.instance = this.instance ?? new Auth());
|
||||
return (this.instance = this.instance ?? new this());
|
||||
}
|
||||
|
||||
public async userSignin() {
|
||||
const url = new URL(
|
||||
"https://qual-connexion.idnot.fr/IdPOAuth2/authorize/idnot_idp_v1?client_id=4501646203F3EF67&redirect_uri=http://0.0.0.0:3000/authorized-client&scope=openid,profile,offline_access&response_type=code"
|
||||
);
|
||||
public async getIdnotJwt(autorizationCode: string | string[]): Promise<any> {
|
||||
const variables = FrontendVariables.getInstance();
|
||||
const baseBackUrl =
|
||||
variables.BACK_API_PROTOCOL +
|
||||
variables.BACK_API_HOST +
|
||||
(variables.BACK_API_PORT ? ":" + variables.BACK_API_PORT : "");
|
||||
const url = new URL(`${baseBackUrl}/api/v1/idnot-user/${autorizationCode}`);
|
||||
try {
|
||||
return await this.getRequest<any>(url);
|
||||
return await this.postRequest<any>(url);
|
||||
} catch (err) {
|
||||
this.onError(err);
|
||||
return Promise.reject(err);
|
||||
}
|
||||
}
|
||||
|
||||
public async getIdnotJwt(autorizationCode: string | string[]) {
|
||||
const url = new URL(
|
||||
`http://127.0.0.1:3001/api/v1/idnot-user/${autorizationCode}`
|
||||
);
|
||||
try {
|
||||
await this.postRequest<any>(url);
|
||||
} catch (err) {
|
||||
this.onError(err);
|
||||
//return Promise.reject(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 645 B After Width: | Height: | Size: 644 B |
@ -29,10 +29,10 @@ export default class ClientSection extends React.Component<IProps, IState> {
|
||||
}
|
||||
|
||||
private renderCustomerFolders() {
|
||||
const output = this.props.folder.office_folder_has_customers?.map((folderHasCustomer) => {
|
||||
const output = this.props.folder.office_folder_has_customers?.map((folderHasCustomer, key) => {
|
||||
if (!folderHasCustomer.customer) return null;
|
||||
// TODO : Les documents ASKED fonctionne mais les autres documents ne doivcent etre seulement ceux qui correspondent au folder
|
||||
return <div className={classes["user-folder"]}><UserFolder folder={this.props.folder} customer={folderHasCustomer.customer} key={folderHasCustomer.customer.uid} /></div>;
|
||||
return <div className={classes["user-folder"]} key={folderHasCustomer.customer.uid}><UserFolder folder={this.props.folder} customer={folderHasCustomer.customer} /></div>;
|
||||
})
|
||||
return output ?? null;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||
import BasePage from "../Base";
|
||||
import classes from "./classes.module.scss";
|
||||
import CoffreIcon from "@Assets/Icons/coffre.svg";
|
||||
import LandingImage from "./landing-connect.png"
|
||||
import LandingImage from "./landing-connect.png";
|
||||
import Image from "next/image";
|
||||
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
||||
import { FrontendVariables } from "@Front/Config/VariablesFront";
|
||||
@ -14,23 +14,36 @@ export default class LoginClass extends BasePage {
|
||||
<DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
||||
<div className={classes["root"]}>
|
||||
<Image alt="coffre" src={CoffreIcon} />
|
||||
<Typography typo={ITypo.H1}><div className={classes["title"]}>Connexion espace professionnel</div></Typography>
|
||||
<Button onClick={this.redirectUserOnConnection}>S’identifier avec ID.not</Button>
|
||||
<Typography typo={ITypo.P_18}><div className={classes["forget-password"]}>Vous n’arrivez pas à vous connecter ?</div></Typography>
|
||||
<Button variant={EButtonVariant.LINE} >Contacter l’administrateur</Button>
|
||||
<Typography typo={ITypo.H1}>
|
||||
<div className={classes["title"]}>
|
||||
Connexion espace professionnel
|
||||
</div>
|
||||
</Typography>
|
||||
<Button onClick={this.redirectUserOnConnection}>
|
||||
S’identifier avec ID.not
|
||||
</Button>
|
||||
<Typography typo={ITypo.P_18}>
|
||||
<div className={classes["forget-password"]}>
|
||||
Vous n’arrivez pas à vous connecter ?
|
||||
</div>
|
||||
</Typography>
|
||||
<Button variant={EButtonVariant.LINE}>
|
||||
Contacter l’administrateur
|
||||
</Button>
|
||||
</div>
|
||||
</DefaultDoubleSidePage>
|
||||
);
|
||||
}
|
||||
|
||||
private redirectUserOnConnection() {
|
||||
// check variable
|
||||
const baseFronturl = FrontendVariables.getInstance().BACK_API_PROTOCOL +
|
||||
FrontendVariables.getInstance().FRONT_APP_HOST +
|
||||
(FrontendVariables.getInstance().FRONT_APP_PORT ? ":" + FrontendVariables.getInstance().FRONT_APP_PORT : "");
|
||||
|
||||
const url = `https://qual-connexion.idnot.fr/IdPOAuth2/authorize/idnot_idp_v1?client_id=4501646203F3EF67&redirect_uri=${baseFronturl}/authorized-client&scope=openid,profile,offline_access&response_type=code`
|
||||
|
||||
window.location.assign(url)
|
||||
const variables = FrontendVariables.getInstance();
|
||||
const baseFronturl =
|
||||
variables.BACK_API_PROTOCOL +
|
||||
variables.FRONT_APP_HOST +
|
||||
(variables.FRONT_APP_PORT ? ":" + variables.FRONT_APP_PORT : "");
|
||||
const authorizeEndPoint = variables.IDNOT_AUTHORIZE_ENDPOINT;
|
||||
const clientId = variables.IDNOT_CLIENT_ID;
|
||||
const url = `${authorizeEndPoint}?client_id=${clientId}&redirect_uri=${baseFronturl}/authorized-client&scope=openid,profile,offline_access&response_type=code`;
|
||||
window.location.assign(url);
|
||||
}
|
||||
}
|
@ -1,29 +1,76 @@
|
||||
import classes from "./classes.module.scss";
|
||||
import LandingImage from "../Login/landing-connect.png";
|
||||
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
||||
import Router, { useRouter } from "next/router";
|
||||
// import classes from "./classes.module.scss";
|
||||
// import LandingImage from "../Login/landing-connect.png";
|
||||
// import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
|
||||
// import Image from "next/image";
|
||||
// import CoffreIcon from "@Assets/Icons/coffre.svg";
|
||||
// import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
||||
// import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
//import React, { useEffect, useState } from "react";
|
||||
import React from "react";
|
||||
import Loader from "@Front/Components/DesignSystem/Loader";
|
||||
//import Loader from "@Front/Components/DesignSystem/Loader";
|
||||
import Auth from "@Front/Api/Auth/IdNot";
|
||||
import Folder from "../Folder";
|
||||
import LoginClass from "../Login";
|
||||
|
||||
type IPropsClass = {};
|
||||
type IPropsClass = {};
|
||||
|
||||
type IStateClass = {};
|
||||
// type IStateClass = {};
|
||||
|
||||
class LoginCallBackClass extends React.Component<IPropsClass, IStateClass> {
|
||||
public override render(): JSX.Element {
|
||||
return (
|
||||
<DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
||||
<div className={classes["root"]}>
|
||||
<Loader />
|
||||
</div>
|
||||
</DefaultDoubleSidePage>
|
||||
);
|
||||
}
|
||||
}
|
||||
// class LoginCallBackClass extends React.Component<IPropsClass, IStateClass> {
|
||||
// public override render(): JSX.Element {
|
||||
// return (
|
||||
// <DefaultDoubleSidePage title={"Login"} image={LandingImage}>
|
||||
// <div className={classes["root"]}>
|
||||
// <Image alt="coffre" src={CoffreIcon} />
|
||||
// <Typography typo={ITypo.H1}>
|
||||
// <div className={classes["title"]}>
|
||||
// Connexion espace professionnel
|
||||
// </div>
|
||||
// </Typography>
|
||||
// <Loader />
|
||||
// <Typography typo={ITypo.P_18}>
|
||||
// <div className={classes["forget-password"]}>
|
||||
// Vous n’arrivez pas à vous connecter ?
|
||||
// </div>
|
||||
// </Typography>
|
||||
// <Button variant={EButtonVariant.LINE}>
|
||||
// Contacter l’administrateur
|
||||
// </Button>
|
||||
// </div>
|
||||
// </DefaultDoubleSidePage>
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
// TODO: Refacto with functionnal component container of classcomponent
|
||||
// export default function LoginCallBack(props: IPropsClass) {
|
||||
// const [user, setUser] = useState(null);
|
||||
// const [isLoading, setIsLoading] = useState(false);
|
||||
// const router = useRouter();
|
||||
// const { code } = router.query;
|
||||
// if (code) {
|
||||
// useEffect(() => {
|
||||
// const getIdNotJwt = async () => {
|
||||
// setIsLoading(true);
|
||||
// try {
|
||||
// const authService = Auth.getInstance();
|
||||
// const fetchedUser = await authService.getIdnotJwt(code);
|
||||
// setUser(fetchedUser);
|
||||
// } catch (error) {
|
||||
// console.error(error);
|
||||
// // Router.push('/login');
|
||||
// }
|
||||
// };
|
||||
// getIdNotJwt();
|
||||
// }, []);
|
||||
// if (isLoading) return <LoginCallBackClass {... props}/>
|
||||
// return <Folder {...props} />;
|
||||
// }
|
||||
// return <LoginClass {...props}/>
|
||||
// }
|
||||
|
||||
export default function LoginCallBack(props: IPropsClass) {
|
||||
const router = useRouter();
|
||||
const { code } = router.query;
|
||||
@ -31,15 +78,13 @@ export default function LoginCallBack(props: IPropsClass) {
|
||||
const getIdNotJwt = async () => {
|
||||
try {
|
||||
const authService = Auth.getInstance();
|
||||
const user = await authService.getIdnotJwt(code);
|
||||
console.log(user);
|
||||
Router.push('/dossier');
|
||||
await authService.getIdnotJwt(code);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
Router.push('/login');
|
||||
}
|
||||
};
|
||||
getIdNotJwt();
|
||||
return <Folder {...props} />;
|
||||
}
|
||||
return <LoginClass {...props}/>
|
||||
}
|
||||
return <LoginCallBackClass {...props} />;
|
||||
}
|
@ -15,6 +15,10 @@ export class FrontendVariables {
|
||||
|
||||
public FRONT_APP_PORT!: string;
|
||||
|
||||
public IDNOT_AUTHORIZE_ENDPOINT!: string;
|
||||
|
||||
public IDNOT_CLIENT_ID!: string;
|
||||
|
||||
private constructor() {}
|
||||
|
||||
public static getInstance(): FrontendVariables {
|
||||
|
@ -19,9 +19,11 @@ type AppPropsWithLayout = AppProps & {
|
||||
backApiVersion: string,
|
||||
frontAppHost: string,
|
||||
frontAppPort: string,
|
||||
idNotAuthorizeEndpoint: string;
|
||||
idNotClientId: string;
|
||||
};
|
||||
|
||||
const MyApp = (({ Component, pageProps, backApiProtocol, backApiHost, backApiPort, backApiRootUrl, backApiVersion, frontAppHost, frontAppPort }: AppPropsWithLayout) => {
|
||||
const MyApp = (({ Component, pageProps, backApiProtocol, backApiHost, backApiPort, backApiRootUrl, backApiVersion, frontAppHost, frontAppPort, idNotAuthorizeEndpoint, idNotClientId }: AppPropsWithLayout) => {
|
||||
const getLayout = Component.getLayout ?? ((page) => <DefaultLayout children={page}></DefaultLayout>);
|
||||
|
||||
FrontendVariables.getInstance().BACK_API_PROTOCOL = backApiProtocol;
|
||||
@ -31,6 +33,9 @@ const MyApp = (({ Component, pageProps, backApiProtocol, backApiHost, backApiPor
|
||||
FrontendVariables.getInstance().BACK_API_VERSION = backApiVersion;
|
||||
FrontendVariables.getInstance().FRONT_APP_HOST = frontAppHost;
|
||||
FrontendVariables.getInstance().FRONT_APP_PORT = frontAppPort;
|
||||
FrontendVariables.getInstance().IDNOT_AUTHORIZE_ENDPOINT = idNotAuthorizeEndpoint;
|
||||
FrontendVariables.getInstance().IDNOT_CLIENT_ID = idNotClientId;
|
||||
|
||||
|
||||
return getLayout(<Component {...pageProps} />);
|
||||
}) as AppType;
|
||||
@ -44,6 +49,8 @@ MyApp.getInitialProps = async () => {
|
||||
backApiVersion: process.env["BACK_API_VERSION"],
|
||||
frontAppHost: process.env["FRONT_APP_HOST"],
|
||||
frontAppPort: process.env["FRONT_APP_PORT"],
|
||||
idNotAuthorizeEndpoint: process.env["IDNOT_AUTHORIZE_ENDPOINT"],
|
||||
idNotClientId: process.env["IDNOT_CLIENT_ID"],
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user