1
0
mirror of https://github.com/sasjs/server.git synced 2026-01-03 05:10:04 +00:00
Files
server/api/src/routes/web/web.ts
2022-08-26 18:03:28 +02:00

82 lines
2.2 KiB
TypeScript

import express from 'express'
import { WebController } from '../../controllers/web'
import { authenticateAccessToken, desktopRestrict } from '../../middlewares'
import { authorizeValidation, loginWebValidation } from '../../utils'
import mockSas9Router from '../api/mock-sas9'
const webRouter = express.Router()
const controller = new WebController()
const { MOCK_SERVERTYPE } = process.env
webRouter.get('/', async (req, res) => {
let response
try {
response = await controller.home()
} catch (_) {
response = '<html><head></head><body>Web Build is not present</body></html>'
} finally {
const codeToInject = `<script>document.cookie = 'XSRF-TOKEN=${req.csrfToken()}; Max-Age=86400; SameSite=Strict; Path=/;'</script>`
const injectedContent = response?.replace(
'</head>',
`${codeToInject}</head>`
)
return res.send(injectedContent)
}
})
/**
* If any type of mock is enabled, we won't use regular working logon endpoints
*/
if (MOCK_SERVERTYPE === undefined) {
webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
const { error, value: body } = loginWebValidation(req.body)
if (error) return res.status(400).send(error.details[0].message)
try {
const response = await controller.login(req, body)
res.send(response)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
}
webRouter.post(
'/SASLogon/authorize',
desktopRestrict,
authenticateAccessToken,
async (req, res) => {
const { error, value: body } = authorizeValidation(req.body)
if (error) return res.status(400).send(error.details[0].message)
try {
const response = await controller.authorize(req, body)
res.send(response)
} catch (err: any) {
res.status(403).send(err.toString())
}
}
)
/**
* If any type of mock is enabled, we won't use regular working logon endpoints
*/
if (MOCK_SERVERTYPE === undefined) {
webRouter.get('/SASLogon/logout', desktopRestrict, async (req, res) => {
try {
await controller.logout(req)
res.status(200).send('OK!')
} catch (err: any) {
res.status(403).send(err.toString())
}
})
}
webRouter.use('/', mockSas9Router)
// disabled for now
// webRouter.use('/', mockViyaRouter)
export default webRouter