Added: fully working signin/signup system with routing

This commit is contained in:
2024-05-06 22:18:22 +02:00
parent bd5f7388b8
commit 89075eb6ae
19 changed files with 1199 additions and 41 deletions

View File

@ -11,7 +11,7 @@ services:
image: mongo-express
restart: always
ports:
- 8081:8081
- 8091:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: root

View File

@ -23,6 +23,7 @@
"bcrypt": "^5.1.1",
"colors": "1.4.0",
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"fs-extra": "^10.0.0",
@ -41,6 +42,7 @@
"@types/bcrypt": "^5.0.2",
"@types/chai": "^4.2.22",
"@types/cookie-parser": "^1.4.7",
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/fs-extra": "^9.0.13",
"@types/inquirer": "^8.1.3",

View File

@ -1,29 +1,29 @@
import express from "express";
import morgan from "morgan";
import path from 'path'
//import cors from 'cors'
import cors from 'cors'
import cookieParser from 'cookie-parser'
import { router as routes } from "./routes";
//import { router as middlewares } from './middlewares'
//import env from './config/environment'
import env from './config/environment'
//export let corsWhitelist: Array<string>
//if (env.CORS_WHITELIST != 'undefined') {
// corsWhitelist = [...['http://localhost:8080', 'http://localhost:6040'], ...env.CORS_WHITELIST.split(';')]
//} else {
// corsWhitelist = ['http://localhost:8080', 'http://localhost:6040']
//}
//const corsOptions = {
// origin: function (origin: any, callback: any) {
// if (!origin || corsWhitelist.indexOf(origin) !== -1) {
// callback(null, true)
// } else {
// callback(new Error('Not allowed by CORS'))
// }
// },
// optionsSuccessStatus: 200,
// credentials: true
//}
export let corsWhitelist: Array<string>
if (env.CORS_WHITELIST != 'undefined') {
corsWhitelist = [...['http://localhost:8080', 'http://localhost:6040'], ...env.CORS_WHITELIST.split(';')]
} else {
corsWhitelist = ['http://localhost:8080', 'http://localhost:6040']
}
const corsOptions = {
origin: function (origin: any, callback: any) {
if (!origin || corsWhitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
},
optionsSuccessStatus: 200,
credentials: true
}
export const app = express();
@ -31,7 +31,7 @@ export const app = express();
//app.use(middlewares)
//app.set('view engine', 'ejs')
//app.set('views', path.join(__dirname, 'views'))
//app.use(cors(corsOptions))
app.use(cors(corsOptions))
app.use(morgan("dev"));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

View File

@ -52,7 +52,7 @@ export async function signin_post(req: Request, res: Response) {
res.cookie('jwt', token, { httpOnly: true, maxAge: maxAge * 1000 });
res.cookie('auth', true, { httpOnly: false, maxAge: maxAge * 1000 });
res.json(Log.info(200, 'user is logged in'));
res.json(Log.info(200, 'user is logged in', {jwt: token}));
return;
}

View File

@ -18,6 +18,7 @@ router.get('/', docsController.docs_get);
router.post("/auth/signup",validate(AuthVal.signup) , authController.signup_post);
router.post("/auth/signin",validate(AuthVal.signin) , authController.signin_post);
router.options("/auth/signin",validate(AuthVal.signin) , authController.signin_post);
router.post("/auth/logout", requireAuth, authController.logout_post);
router.get("/auth/status", requireAuth, authController.status_get);

View File

@ -2,5 +2,5 @@ import * as shell from 'shelljs';
// Copy all the view templates
//shell.cp('-R', 'src/views', 'dist/')
//shell.cp('-R', 'src/public', 'dist/');
shell.cp('-u', 'src/.env', 'dist/');
shell.cp('-R', 'src/public', 'dist/');
shell.cp('-u', 'src/.env', 'dist/');