-
add customer
- skip for now
+ add customer
+ skip for now
@@ -55,7 +55,7 @@ const AddCustomer = () => {
-
+
customer information
diff --git a/src/components/customer/CustomerMeasurements.jsx b/src/components/customer/CustomerMeasurements.jsx
index c5e26fe..bf020e6 100644
--- a/src/components/customer/CustomerMeasurements.jsx
+++ b/src/components/customer/CustomerMeasurements.jsx
@@ -68,9 +68,11 @@ const CustomerMeasurements = () => {
-
+
+
+
diff --git a/src/components/sidebar/Sidebar.jsx b/src/components/sidebar/Sidebar.jsx
index 9747b8f..bc29413 100644
--- a/src/components/sidebar/Sidebar.jsx
+++ b/src/components/sidebar/Sidebar.jsx
@@ -1,12 +1,19 @@
-import React, { useContext } from 'react';
+import React, { useState, useEffect } from 'react';
import AdminSidebar from './AdminSidebar';
import EmployeeSidebar from './EmployeeSidebar';
-import { AuthContext } from '../../contexts/AuthContext';
const Sidebar = () => {
- const { user } = useContext(AuthContext);
+ const [user, setUserData] = useState(null);
- if (!user) return null;
+ useEffect(() => {
+ // Retrieve user data from localStorage
+ const storedUserData = localStorage.getItem('loggedInUser');
+ if (storedUserData) {
+ setUserData(JSON.parse(storedUserData));
+ }
+ }, []);
+
+ if (!user) return null; // Ensure user is not null before accessing its properties
return user.role === 'admin' ?
:
;
};
diff --git a/src/services/authService.js b/src/services/authService.js
index f58f025..25e4a1e 100644
--- a/src/services/authService.js
+++ b/src/services/authService.js
@@ -1,17 +1,36 @@
const authService = {
- login: async (username, password) => {
- // Simulate login process
- const userData = { username, role: username === 'admin' ? 'admin' : 'employee' };
+ login: async (username, password) => {
+ try {
+ // Simulate login process with API call (replace with real API endpoint)
+ const response = await axiosInstance.post('/auth/login', { username, password });
+ const userData = response.data;
+
+ // Store user data and token in localStorage
localStorage.setItem('user', JSON.stringify(userData));
+ localStorage.setItem('token', userData.token);
+
return userData;
- },
- logout: () => {
- localStorage.removeItem('user');
- },
- getCurrentUser: () => {
- return JSON.parse(localStorage.getItem('user'));
+ } catch (error) {
+ throw new Error('Login failed. Please check your credentials.');
}
- };
-
- export default authService;
-
\ No newline at end of file
+ },
+ logout: () => {
+ localStorage.removeItem('user');
+ localStorage.removeItem('token');
+ },
+ getCurrentUser: () => {
+ return JSON.parse(localStorage.getItem('user'));
+ },
+ getToken: () => {
+ return localStorage.getItem('token');
+ },
+ isAuthenticated: () => {
+ return !!localStorage.getItem('token');
+ },
+ hasRole: (role) => {
+ const user = JSON.parse(localStorage.getItem('user'));
+ return user && user.role === role;
+ }
+};
+
+export default authService;
diff --git a/src/services/server.js b/src/services/server.js
new file mode 100644
index 0000000..d3cfbec
--- /dev/null
+++ b/src/services/server.js
@@ -0,0 +1,61 @@
+// server.js
+const express = require('express');
+const bodyParser = require('body-parser');
+const nodemailer = require('nodemailer');
+const crypto = require('crypto');
+
+const app = express();
+const port = 5000;
+
+app.use(bodyParser.json());
+
+let users = [
+ // Example users
+ { email: 'admin@example.com', password: 'admin123', role: 'admin' },
+ { email: 'employee@example.com', password: 'employee123', role: 'employee' },
+];
+
+// Endpoint to handle password reset requests
+app.post('/auth/forgot-password', (req, res) => {
+ const { email } = req.body;
+ const user = users.find(user => user.email === email);
+
+ if (!user) {
+ return res.status(404).json({ message: 'User not found' });
+ }
+
+ const token = crypto.randomBytes(20).toString('hex');
+ // Store token in a way that it can be verified later
+ user.resetPasswordToken = token;
+ user.resetPasswordExpires = Date.now() + 3600000; // 1 hour
+
+ // Send email with reset link
+ const transporter = nodemailer.createTransport({
+ service: 'Gmail',
+ auth: {
+ user: 'your-email@gmail.com',
+ pass: 'your-email-password',
+ },
+ });
+
+ const mailOptions = {
+ to: user.email,
+ from: 'passwordreset@example.com',
+ subject: 'Password Reset',
+ text: `You are receiving this because you (or someone else) have requested the reset of the password for your account.\n\n
+ Please click on the following link, or paste this into your browser to complete the process:\n\n
+ http://localhost:3000/reset-password/${token}\n\n
+ If you did not request this, please ignore this email and your password will remain unchanged.\n`,
+ };
+
+ transporter.sendMail(mailOptions, (err) => {
+ if (err) {
+ return res.status(500).json({ message: 'Error sending email' });
+ }
+ res.status(200).json({ message: 'Password reset email sent' });
+ });
+});
+
+app.listen(port, () => {
+ console.log(`Server is running on http://localhost:${port}`);
+});