Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

92 lignes
3.4 KiB

  1. import * as React from "react";
  2. import * as HttpUtils from "utils/HttpUtils";
  3. import * as UrlUtils from "utils/ApiPathConst";
  4. import { useNavigate } from "react-router-dom";
  5. import { useDispatch } from "react-redux";
  6. import { handleLogoutFunction, handleLogin } from 'auth/index';
  7. import Loadable from 'components/Loadable';
  8. const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent')));
  9. import {
  10. Grid,
  11. } from '@mui/material';
  12. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  13. const Index = () => {
  14. const dispatch = useDispatch()
  15. const navigate = useNavigate()
  16. React.useEffect(() => {
  17. goLogin();
  18. }, []);
  19. function goLogin(){
  20. dispatch(handleLogoutFunction());
  21. let params = new URLSearchParams(window.location.search)
  22. if(params.get("code")){
  23. HttpUtils.post({
  24. url: UrlUtils.GET_SMART_LOGIN,
  25. params:{
  26. code: params.get("code")
  27. },
  28. onSuccess: (responseData) => {
  29. console.log("responseData");
  30. console.log(responseData);
  31. const userData = {
  32. id: responseData.id,
  33. fullenName: responseData.name,
  34. fullchName: responseData.chName,
  35. email: responseData.email,
  36. type: responseData.type,
  37. role: responseData.role,
  38. abilities: responseData.abilities,
  39. creditor: responseData.creditor,
  40. locale: responseData.preferLocale,
  41. //avatar: require('src/assets/images/users/avatar-3.png').default,
  42. }
  43. const data = { ...userData, accessToken: responseData.accessToken, refreshToken: responseData.refreshToken }
  44. if(responseData.type === "GLD"){
  45. setLocale("en");
  46. localStorage.setItem('locale','en');
  47. }else{
  48. if (responseData.preferLocale ==="zh_HK"){
  49. setLocale("zh-HK");
  50. localStorage.setItem('locale','zh-HK');
  51. }
  52. if (responseData.preferLocale ==="zh-CN"){
  53. setLocale("zh-CN");
  54. localStorage.setItem('locale','zh-CN');
  55. }
  56. }
  57. dispatch(handleLogin(data))
  58. navigate('/dashboard');
  59. },
  60. onFail: (response)=>{
  61. console.log("Fail");
  62. console.log(response);
  63. window.location.assign("/iamsmart/loginFail");
  64. },
  65. onError:(error)=>{
  66. console.log(error);
  67. window.location.assign("/iamsmart/loginFail");
  68. }
  69. });
  70. }else{
  71. window.location.assign("/iamsmart/loginFail");
  72. }
  73. }
  74. return (
  75. <Grid container sx={{ minHeight: '95vh', mb: 3 }} direction="column" justifyContent="center" alignItems="center">
  76. <Grid item>
  77. <LoadingComponent />
  78. </Grid>
  79. </Grid>
  80. );
  81. };
  82. export default Index;