206 lines
5.9 KiB
JavaScript
206 lines
5.9 KiB
JavaScript
// const express = require('express');
|
|
// const multer = require('multer');
|
|
// const cors = require('cors');
|
|
// const path = require('path');
|
|
// const app = express();
|
|
// const routes = require('./routes/panRoutes');
|
|
// const panVerifyRoute = require('./routes/panRoutes.js'); // Ensure this is correct
|
|
// app.use(panVerifyRoute); // or './routes/index.js'
|
|
|
|
|
|
// // Enable CORS and JSON parsing
|
|
// const corsOptions = {
|
|
// origin: 'http://localhost:5174',
|
|
// methods: ['GET', 'POST'],
|
|
// allowedHeaders: ['Content-Type', 'Authorization'],
|
|
// credentials: true,
|
|
// };
|
|
// app.use(cors(corsOptions));
|
|
|
|
// app.use(express.json());
|
|
|
|
// // File storage config (uploads will be stored in ./uploads folder)
|
|
// const storage = multer.diskStorage({
|
|
// destination: (req, file, cb) => {
|
|
// cb(null, './uploads');
|
|
// },
|
|
// filename: (req, file, cb) => {
|
|
// cb(null, Date.now() + path.extname(file.originalname)); // e.g., 1746543152975.png
|
|
// }
|
|
// });
|
|
|
|
// const upload = multer({ storage });
|
|
|
|
// // API: Verify PAN and Image
|
|
// app.post('/api/verify-pan', upload.single('image'), (req, res) => {
|
|
// const pan = req.body.pan;
|
|
// const image = req.file;
|
|
|
|
// if (!pan || !image) {
|
|
// return res.status(400).json({ error: 'PAN number and image file are required.' });
|
|
// }
|
|
|
|
// console.log('Received PAN:', pan);
|
|
// console.log('Uploaded image:', image.filename);
|
|
|
|
// // Simulate processing here — e.g., verifying PAN from DB or calling API
|
|
|
|
// res.json({
|
|
// message: 'PAN and image received successfully.',
|
|
// pan,
|
|
// imageFilename: image.filename,
|
|
// });
|
|
// });
|
|
// app.use(routes); // add this
|
|
|
|
|
|
// // Start server if this is the entry file
|
|
// const PORT = 5002;
|
|
// app.listen(PORT, () => {
|
|
// console.log(`Backend running on http://localhost:${PORT}`);
|
|
// });
|
|
|
|
|
|
|
|
|
|
const express = require('express');
|
|
const multer = require('multer');
|
|
const cors = require('cors');
|
|
const path = require('path');
|
|
const app = express();
|
|
|
|
// First set up middleware before routes
|
|
// Enable CORS
|
|
const corsOptions = {
|
|
origin: 'http://localhost:5174',
|
|
methods: ['GET', 'POST'],
|
|
allowedHeaders: ['Content-Type', 'Authorization'],
|
|
credentials: true,
|
|
};
|
|
app.use(cors(corsOptions));
|
|
|
|
// Enable JSON parsing
|
|
app.use(express.json());
|
|
|
|
// File storage config
|
|
const storage = multer.diskStorage({
|
|
destination: (req, file, cb) => {
|
|
cb(null, './uploads');
|
|
},
|
|
filename: (req, file, cb) => {
|
|
cb(null, Date.now() + path.extname(file.originalname));
|
|
}
|
|
});
|
|
|
|
const upload = multer({ storage });
|
|
|
|
// Now define routes
|
|
|
|
// Direct route definition for PAN verification
|
|
// app.post('/api/verify-pan', upload.single('panImage'), (req, res) => {
|
|
// const pan = req.body.pan;
|
|
// const image = req.file;
|
|
|
|
// if (!pan || !image) {
|
|
// return res.status(400).json({ error: 'PAN number and image file are required.' });
|
|
// }
|
|
|
|
// console.log('Received PAN:', pan);
|
|
// console.log('Uploaded image:', image.filename);
|
|
|
|
// // Simulate verification - in a real app, do actual verification here
|
|
// // For now, always return verified: true
|
|
// res.json({
|
|
// verified: true,
|
|
// message: 'PAN and image received successfully.',
|
|
// pan,
|
|
// imageFilename: image.filename,
|
|
// });
|
|
// });
|
|
// In your app.js or a dedicated route file
|
|
|
|
// Updated PAN verification endpoint
|
|
app.post('/api/verify-pan', upload.single('panImage'), (req, res) => {
|
|
try {
|
|
const pan = req.body.pan;
|
|
const image = req.file;
|
|
|
|
if (!pan || !image) {
|
|
return res.status(400).json({
|
|
verified: false,
|
|
error: 'PAN number and image file are required.'
|
|
});
|
|
}
|
|
|
|
console.log('Received PAN:', pan);
|
|
console.log('Uploaded image:', image.filename);
|
|
|
|
// Validate PAN format - PAN format is typically 5 letters + 4 numbers + 1 letter
|
|
const panRegex = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;
|
|
if (!panRegex.test(pan)) {
|
|
return res.status(400).json({
|
|
verified: false,
|
|
message: 'Invalid PAN format. It should be in the format ABCDE1234F.'
|
|
});
|
|
}
|
|
|
|
// In a real app, you would:
|
|
// 1. Perform OCR on the image to extract PAN details
|
|
// 2. Verify against a database or external service
|
|
// 3. Compare the extracted data with the provided PAN number
|
|
|
|
// For testing purposes, let's simulate verification
|
|
// Here we're just checking if the PAN follows the pattern and assumes it's valid
|
|
// In production, replace this with actual verification logic
|
|
|
|
const isValid = true; // Set to true for testing, but in production use actual verification
|
|
|
|
if (isValid) {
|
|
res.json({
|
|
verified: true,
|
|
message: 'PAN verified successfully.',
|
|
pan,
|
|
imageFilename: image.filename,
|
|
});
|
|
} else {
|
|
res.json({
|
|
verified: false,
|
|
message: 'PAN verification failed. The provided PAN number does not match our records.'
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.error('Error verifying PAN:', error);
|
|
res.status(500).json({
|
|
verified: false,
|
|
message: 'An error occurred during PAN verification.'
|
|
});
|
|
}
|
|
});
|
|
|
|
// Add route for form submission
|
|
app.post('/api/vvet/add', upload.array('images'), (req, res) => {
|
|
try {
|
|
console.log('Form submission received:', req.body);
|
|
console.log('Files received:', req.files);
|
|
|
|
// Process the form data
|
|
// Save to database, etc.
|
|
|
|
res.json({ success: true, message: 'Form submitted successfully' });
|
|
} catch (error) {
|
|
console.error('Error processing form submission:', error);
|
|
res.status(500).json({ success: false, message: 'Error processing form' });
|
|
}
|
|
});
|
|
|
|
// Import other routes if needed
|
|
// Note: Only import panRoutes once
|
|
const routes = require('./routes/panRoutes');
|
|
app.use(routes);
|
|
|
|
// Start server
|
|
const PORT = 5002;
|
|
app.listen(PORT, () => {
|
|
console.log(`Backend running on http://localhost:${PORT}`);
|
|
});
|