diff --git a/backend/.env b/backend/.env
index 360866b0c..e9812049e 100644
--- a/backend/.env
+++ b/backend/.env
@@ -1,4 +1,4 @@
-#DATABASE = "mongodb://localhost:27017"
+DATABASE = "mongodb+srv://sribabu:63037sribabu@atlascluster.k6u2oy9.mongodb.net/?retryWrites=true&w=majority"
#RESEND_API = "your resend_api"
#OPENAI_API_KEY = "your open_ai api key"
JWT_SECRET= "your_private_jwt_secret_key"
diff --git a/backend/package-lock.json b/backend/package-lock.json
index 268204e70..3635c8039 100644
--- a/backend/package-lock.json
+++ b/backend/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "idurar-erp-crm",
- "version": "4.0.0-beta.3",
+ "version": "4.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "idurar-erp-crm",
- "version": "4.0.0-beta.3",
+ "version": "4.0.0",
"license": "Fair-code License",
"dependencies": {
"@aws-sdk/client-s3": "^3.509.0",
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 806b68ce3..3a9e7fb79 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "idurar-erp-crm",
- "version": "4.0.0-beta.3",
+ "version": "4.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "idurar-erp-crm",
- "version": "4.0.0-beta.3",
+ "version": "4.0.0",
"dependencies": {
"@ant-design/icons": "^5.3.0",
"@ant-design/pro-layout": "^7.17.19",
@@ -1432,7 +1432,7 @@
"version": "15.7.10",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz",
"integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==",
- "devOptional": true
+ "dev": true
},
"node_modules/@types/quill": {
"version": "1.3.10",
@@ -1446,7 +1446,7 @@
"version": "18.2.41",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz",
"integrity": "sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==",
- "devOptional": true,
+ "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -1466,7 +1466,7 @@
"version": "0.16.6",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.6.tgz",
"integrity": "sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==",
- "devOptional": true
+ "dev": true
},
"node_modules/@types/use-sync-external-store": {
"version": "0.0.3",
diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx
index c1f8a1f5d..bc32854d9 100644
--- a/frontend/src/pages/Login.jsx
+++ b/frontend/src/pages/Login.jsx
@@ -12,6 +12,11 @@ import { selectAuth } from '@/redux/auth/selectors';
import LoginForm from '@/forms/LoginForm';
import Loading from '@/components/Loading';
import AuthModule from '@/modules/AuthModule';
+import RegisterForm from '@/forms/RegisterForm';
+
+import { Typography } from 'antd';
+
+const { Text } = Typography;
const LoginPage = () => {
const translate = useLanguage();
@@ -51,6 +56,11 @@ const LoginPage = () => {
>
{translate('Log in')}
+
+ Don't have an account? {
+ navigate("/register")
+ }} className="hover-underline">Register
+
diff --git a/frontend/src/pages/Register.jsx b/frontend/src/pages/Register.jsx
new file mode 100644
index 000000000..5005d90b3
--- /dev/null
+++ b/frontend/src/pages/Register.jsx
@@ -0,0 +1,73 @@
+import { useEffect } from 'react';
+
+import { useDispatch, useSelector } from 'react-redux';
+import { useNavigate } from 'react-router-dom';
+
+import useLanguage from '@/locale/useLanguage';
+
+import { Form, Button } from 'antd';
+
+import { login } from '@/redux/auth/actions';
+import { selectAuth } from '@/redux/auth/selectors';
+// import LoginForm from '@/forms/LoginForm';
+import RegisterForm from '@/forms/RegisterForm';
+import Loading from '@/components/Loading';
+import AuthModule from '@/modules/AuthModule';
+import { Typography } from 'antd';
+
+const { Text } = Typography;
+
+
+const RegisterPage = () => {
+ const translate = useLanguage();
+ const { isLoading, isSuccess } = useSelector(selectAuth);
+ const navigate = useNavigate();
+// const size = useSize();
+
+ const dispatch = useDispatch();
+ const onFinish = (values) => {
+ dispatch(login({ loginData: values }));
+ };
+
+ useEffect(() => {
+ if (isSuccess) navigate('/');
+ }, [isSuccess]);
+
+ const FormContainer = () => {
+ return (
+
+
+
+
+ Already have an account? {
+ navigate("/")
+ }} className="hover-underline">Login
+
+
+
+
+ );
+ };
+
+ return } AUTH_TITLE="Sign in" />;
+};
+
+export default RegisterPage;
diff --git a/frontend/src/router/AuthRouter.jsx b/frontend/src/router/AuthRouter.jsx
index 2416dd984..463a02e9e 100644
--- a/frontend/src/router/AuthRouter.jsx
+++ b/frontend/src/router/AuthRouter.jsx
@@ -5,6 +5,7 @@ import NotFound from '@/pages/NotFound';
import ForgetPassword from '@/pages/ForgetPassword';
import ResetPassword from '@/pages/ResetPassword';
+import RegisterPage from '@/pages/Register';
import { useDispatch } from 'react-redux';
@@ -15,6 +16,7 @@ export default function AuthRouter() {
} path="/" />
} path="/login" />
+ } path="/register" />
} path="/logout" />
} path="/forgetpassword" />
} path="/resetpassword/:userId/:resetToken" />