Невозможно отправить POST /api/auth/register Node.jsApache

Ответить
Anonymous
 Невозможно отправить POST /api/auth/register Node.js

Сообщение Anonymous »

Я попробовал все, что знал. Мне отчаянно нужна помощь, чтобы заставить это работать и успешно зарегистрировать пользователя и разместить данные в базе данных.
Это мой сервер > файл App.js

Код: Выделить всё

const express = require('express');
const app = express();
const cors = require('cors');
const session = require('express-session');
const passport = require('passport');
var jwt = require('jsonwebtoken');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const path = require('path');
const config = require('./config/auth.config');
const appConfig = require('./config/app.config');
const db = require('./models');
const User = db.user;

require('./models/db');
require('./cronJob');
require('./archiveCronJob');

const authRouter = require('./routes/auth');
const slackRouter = require('./routes/slack');
const ms365Router = require('./routes/ms365');
const googleRouter = require('./routes/google');
const archiveRouter = require('./routes/archive');
const billingRouter = require('./routes/billing');
const adminRouter = require('./routes/admin');
const userRouter = require('./routes/user');

// Configure CORS
app.use(cors({
origin: '*', // Allow requests from any origin
methods: ['GET', 'POST', 'PUT', 'DELETE'], // Allow these methods
allowedHeaders: ['Content-Type', 'Authorization'], // Allow these headers
}));

// Configure session middleware
app.use(session({
secret: config.secret,
resave: true,
saveUninitialized: true,
cookie: { secure: true } // Adjust options as needed
}));

// Configure body parsers
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.options('/api/auth/register', cors());

// Configure passport
app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser((user, done) => {
done(null, user);
});

passport.deserializeUser((user, done) => {
done(null, user);
});

passport.use(new GoogleStrategy({
clientID: config.G_CLIENT_ID,
clientSecret: config.G_CLIENT_SECRET,
callbackURL: `${appConfig.SITE_URL}/auth/google/callback`,
}, (accessToken, refreshToken, profile, done) => {
done(null, profile);
}));

// Define routes
app.use('/api/auth', authRouter);
app.use('/api', slackRouter);
app.use('/api', ms365Router);
app.use('/api', googleRouter);
app.use('/api', archiveRouter);
app.use('/api', billingRouter);
app.use('/api', adminRouter);
app.use('/api', userRouter);

// Download route
app.get('/download/:baseId/:itemId/:filename', (req, res) => {
const baseId = req.params.baseId;
const itemId = req.params.itemId;
const filename = req.params.filename;
const directoryPath = path.join(__dirname, 'download', baseId, itemId);
const filePath = path.join(directoryPath, filename);

res.download(filePath, filename, (err) => {
if (err) {
console.log(err);
res.status(500).send('Error downloading the file.');
}
});
});

// Google OAuth callback route
app.get('/auth/google', passport.authenticate('google', {
scope: ['email']
}));

app.get('/auth/google/callback', passport.authenticate('google'), async (req, res) => {
console.log("Google User: ", req.user);
const email = req.user.emails[0].value;
console.log("Email: ", email);
const existUser = await User.findOne({ email });

if (existUser) {
const token = jwt.sign({ id: existUser._id }, config.secret, {
expiresIn: 86400 // 24 hours
});

res.redirect(`/login?serviceToken=${token}`);
return;
}

const user = new User({
email,
isGoogleAuth: true,
});

try {
await user.save();
console.log("Created User from gmail: ", user);
const token = jwt.sign({ id: user._id }, config.secret, {
expiresIn: 86400 // 24 hours
});
res.redirect(`/login?serviceToken=${token}`);
} catch (error) {
console.error("Error saving user:", error);
res.redirect('/login');
return;
}
});

// SPA fallback route and error handling
app.use((req, res, next) =>  {
if (/(.ico|.js|.css|.jpg|.png|.map|.svg|.ttf)$/i.test(req.path)) {
next();
} else {
res.header('Expires', '-1');
res.sendFile(path.join(__dirname, '../build', 'index.html'));
}
});

// Serve static files
app.use(express.static(path.join(__dirname, '../build')));
app.use(express.static(path.join(__dirname, '../public')));
app.use('/download', express.static('download'));

// Global error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something went wrong!');
});

// Start the server
const PORT = process.env.PORT || 8000;
app.listen(PORT, () => {
console.log(`App listening on port ${PORT}`);
console.log('Press Ctrl+C to quit.');
});
Это мой Сервер > Контроллер > файл auth.js

Код: Выделить всё

const config = require('../config/auth.config');
const appConfig = require('../config/app.config');
const db = require('../models');
const Utils = require('./utils');
const User = db.user;
const admin = require('./admin');
var parser = require('ua-parser-js');

var jwt = require('jsonwebtoken');
var bcrypt = require('bcryptjs');
const crypto = require('crypto');

exports.signup = async (req, res) => {
const existUser = await User.findOne({ email: req.body.email });
if (existUser) {
admin.logActions(req, { email: req.body.email, actionType: 'SignUp', actionDetails: 'Already exists', actionResult: 'Failed' });
res.send({ data: existUser, message: 'Already exists!' });
return;
}

const mailVerificationToken = crypto.randomBytes(32).toString('hex');
const mailVerificationTokenExpires = new Date();
mailVerificationTokenExpires.setDate(mailVerificationTokenExpires.getDate() + 7); // Token expires in 7 days

const currentDate = new Date();
const trialEndDate = new Date();
trialEndDate.setDate(currentDate.getDate() + 30);
const user = new User({
email: req.body.email,
password: bcrypt.hashSync(req.body.password, 8),
trialEndDate: Utils.get30DayFreeTrialEndDate(),
roles: ['customer'],
isMailVerified: false,
mailVerificationToken,
mailVerificationTokenExpires
});
try {
await user.save();
const verificationLink = `${req.protocol}://${req.get('host')}/api/auth/verify-email?token=${mailVerificationToken}`;
await Utils.sendMailVerification(req.body.email, verificationLink);
admin.logActions(req, {
email: req.body.email,
actionType: 'SignUp',
actionDetails: 'Sent email verification link successfully.',
actionResult: 'Success'
});
res.send({ data: user, message: "We've sent the email verification link. Please check your email quickly!" });
} catch (error) {
admin.logActions(req, {
email: req.body.email,
actionType: 'SignUp',
actionDetails: JSON.stringify(error, null, 2),
actionResult: 'Failed'
});
res.status(500).send({ message: error });
}
};
Сервер/маршруты/user.js:(https://i.sstatic.net/zO8r1lj5.png)
Сервер/модели/индекс .js:(https://i.sstatic.net/gY4dS1aI.png)
Сервер/маршруты/auth.js:(https://i.sstatic.net/i7nR47j8. png)

Подробнее здесь: https://stackoverflow.com/questions/786 ... er-node-js
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»