-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
111 lines (96 loc) · 3.2 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import http from 'http'
import path from 'path'
import cors from 'cors'
import express from 'express'
import cookieParser from 'cookie-parser'
import session from 'express-session'
import passport from 'passport'
import dotenv from 'dotenv'
dotenv.config()
import { authRoutes } from './api/auth/auth.routes.js'
import { userRoutes } from './api/user/user.routes.js'
import { reviewRoutes } from './api/review/review.routes.js'
import { boardRoutes } from './api/board/board.routes.js'
import { setupSocketAPI } from './services/socket.service.js'
import { setupAsyncLocalStorage } from './middlewares/setupAls.middleware.js'
const app = express()
const server = http.createServer(app)
// Express App Config
app.use(cookieParser())
app.use(express.json())
app.use(
session({
secret: 'some secret',
resave: false,
saveUninitialized: true,
})
)
app.use(passport.initialize())
app.use(passport.session())
// הגדרת session middleware עם MongoStore
// app.use(
// session({
// secret: process.env.SESSION_SECRET, // מחרוזת סודית להצפנה
// resave: false, // לא לשמור סשן אם לא נעשה שינוי
// saveUninitialized: false, // לא לשמור סשנים ריקים
// store: MongoStore.create({
// mongoUrl: process.env.MONGO_CONNECTION, // חיבור למסד נתונים של MongoDB
// ttl: 14 * 24 * 60 * 60, // זמן חיי הסשן (14 ימים לדוגמה)
// autoRemove: 'native', // מאפשר לנקות סשנים שפגו תוקף בצורה אוטומטית
// }),
// cookie: {
// secure: process.env.NODE_ENV === 'production', // אם ב-Production, נשתמש בקוקי מאובטח
// maxAge: 1000 * 60 * 60 * 24 * 14, // משך חיי הקוקי (14 ימים)
// },
// })
// );
// passport.use(
// new GoogleStrategy(
// {
// clientID: process.env.GOOGLE_CLIENT_ID,
// clientSecret: process.env.GOOGLE_CLIENT_SECRET,
// callbackURL: 'http://localhost:5173/auth/google/callback',
// },
// (accessToken, refreshToken, profile, done) => {
// return done(null, profile)
// }
// )
// )
// passport.serializeUser((user, done) => {
// done(null, user)
// })
// passport.deserializeUser((user, done) => {
// done(null, user)
// })
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.resolve('public')))
} else {
const corsOptions = {
origin: [
'http://127.0.0.1:3000',
'http://localhost:3000',
'http://127.0.0.1:3030',
'http://localhost:3030',
'http://127.0.0.1:5173',
'http://localhost:5173',
'http://127.0.0.1:5174',
'http://localhost:5174',
],
credentials: true,
}
app.use(cors(corsOptions))
}
app.all('*', setupAsyncLocalStorage)
app.use('/api/auth', authRoutes)
app.use('/api/user', userRoutes)
app.use('/api/review', reviewRoutes)
app.use('/api/board', boardRoutes)
setupSocketAPI(server)
app.get('/**', (req, res) => {
res.sendFile(path.resolve('public/index.html'))
})
import { logger } from './services/logger.service.js'
const port = process.env.PORT || 3030
server.listen(port, () => {
logger.info('Server is running on port: ' + port)
})