app.ts
const cors = require('cors')
const cookieParser = require('cookie-parser')
const app = express()
const postRoute = require('./routes/post.route.js')
const userRoute = require('./routes/user.route.js')
const corsOptions = {
origin: true,
credentials: true,
}
// middleware
app.use(cors(corsOptions))
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(cookieParser())
// routes
app.use('/api', userRoute)
app.use('/api', postRoute)
module.exports = appserver.ts
const http = require('http')
const app = require('./app.js')
const server = http.createServer(app)
const PORT = process.env.PORT || 5000
server.listen(PORT, () => console.log('Listing to port ' + PORT))userController.ts
import { Request, Response } from 'express'
import catchSync from '../middleware/catchSync'
import User from '../models/userModel'
/**
* @desc Auth user & get token
* @route POST /api/users/login
* @access Public
*/
const authUser = catchSync(async (req: Request, res: Response) => {
res.send('auth user')
})
/**
* @desc Regiseter user
* @route POST /api/users
* @access Public
*/
const registerUser = catchSync(async (req: Request, res: Response) => {
res.send('register user')
})
/**
* @desc Logout user / clear cookie
* @route POST /api/users/logout
* @access Private
*/
const logoutUser = catchSync(async (req: Request, res: Response) => {
res.send('logout user')
})
/**
* @desc Get user profile
* @route GET /api/users/profile
* @access Private
*/
const getUserProfile = catchSync(async (req: Request, res: Response) => {
res.send('get user profile')
})
/**
* @desc Update user profile
* @route PUT /api/users/profile
* @access Private
* @note Notice that we dont passes an id here cause we gonna be using the token as indentifier for this user
*/
const updateUserProfile = catchSync(async (req: Request, res: Response) => {
res.send('update user profile')
})
/**
* @desc Get users
* @route Get /api/users
* @access Private/Admin
*/
const getUsers = catchSync(async (req: Request, res: Response) => {
res.send('get users profile')
})
/**
* @desc Get user by ID
* @route Get /api/users/:id
* @access Private/Admin
*/
const getUserByID = catchSync(async (req: Request, res: Response) => {
res.send('get by id')
})
/**
* @desc Delete users
* @route DELETE /api/users/:id
* @access Private/Admin
*/
const deleteUser = catchSync(async (req: Request, res: Response) => {
res.send('delete user profile')
})
/**
* @desc update user
* @route PUT /api/users/:id
* @access Private/Admin
*/
const updateUser = catchSync(async (req: Request, res: Response) => {
res.send('update user')
})
export {
authUser,
registerUser,
logoutUser,
getUserProfile,
updateUserProfile,
getUsers,
getUserByID,
deleteUser,
updateUser,
}