fix(web): ability to use get/patch User API in desktop mode.

This commit is contained in:
Saad Jutt
2022-05-27 17:01:14 +05:00
parent b066734398
commit 2c259fe1de
6 changed files with 79 additions and 14 deletions
+31 -9
View File
@@ -1,20 +1,42 @@
import { RequestHandler } from 'express'
import { RequestHandler, Request } from 'express'
import { RequestUser } from '../types'
import { ModeType } from '../utils'
const regexUser = /^\/SASjsApi\/user\/[0-9]*$/ // /SASjsApi/user/1
const allowedInDesktopMode: { [key: string]: RegExp[] } = {
GET: [regexUser],
PATCH: [regexUser]
}
const reqAllowedInDesktopMode = (request: Request): boolean => {
const { method, originalUrl: url } = request
return !!allowedInDesktopMode[method]?.find((urlRegex) => urlRegex.test(url))
}
export const desktopRestrict: RequestHandler = (req, res, next) => {
const { MODE } = process.env
if (MODE?.trim() !== 'server')
return res.status(403).send('Not Allowed while in Desktop Mode.')
if (MODE === ModeType.Desktop) {
if (!reqAllowedInDesktopMode(req))
return res.status(403).send('Not Allowed while in Desktop Mode.')
}
next()
}
export const desktopUsername: RequestHandler = (req, res, next) => {
const { MODE } = process.env
if (MODE?.trim() !== 'server')
return res.status(200).send({
userId: 12345,
username: 'DESKTOPusername',
displayName: 'DESKTOP User'
})
if (MODE === ModeType.Desktop) return res.status(200).send(desktopUser)
next()
}
export const desktopUser: RequestUser = {
userId: 12345,
clientId: 'desktop_app',
username: 'DESKTOPusername',
displayName: 'DESKTOP User',
isAdmin: true,
isActive: true
}