1
0
mirror of https://github.com/sasjs/server.git synced 2026-01-05 05:40:06 +00:00

chore: added login, logout endpoints

This commit is contained in:
2022-08-26 17:59:07 +02:00
parent 0a0ba2cca5
commit eeba2328c0
3 changed files with 102 additions and 20 deletions

2
.gitignore vendored
View File

@@ -5,8 +5,8 @@ node_modules/
.env* .env*
sas/ sas/
sasjs_root/ sasjs_root/
api/mocks/
tmp/ tmp/
api/mocks/*
build/ build/
sasjsbuild/ sasjsbuild/
sasjscore/ sasjscore/

View File

@@ -1,16 +1,21 @@
import { readFile } from '@sasjs/utils' import { readFile } from '@sasjs/utils'
import express, { Request } from 'express' import express from 'express'
import path from 'path' import path from 'path'
const mockSas9Router = express.Router() const mockSas9Router = express.Router()
const { MOCK_SERVERTYPE } = process.env const { MOCK_SERVERTYPE } = process.env
mockSas9Router.post('/SASStoredProcess/do/', async (req, res) => { let loggedIn: boolean = false
let program = req.query._program?.toString() || ''
program = program.replace('/', '') mockSas9Router.get('/SASStoredProcess', async (req, res) => {
const filePath = path.join(process.cwd(), 'mocks', program) if (!loggedIn) {
res.redirect('/SASLogon/login')
return
}
const filePath = path.join(process.cwd(), 'mocks', "generic", "sas9", "sas-stored-process")
let file let file
try { try {
@@ -19,12 +24,44 @@ mockSas9Router.post('/SASStoredProcess/do/', async (req, res) => {
) )
} catch (err: any) { } catch (err: any) {
console.error(`Mocked file on path: ${filePath} is not found.`) console.error(`Mocked file on path: ${filePath} is not found.`)
res.status(403).send(err.toString())
return
}
try {
res.send(file)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
mockSas9Router.post('/SASStoredProcess/do/', async (req, res) => {
let program = req.query._program?.toString() || ''
program = program.replace('/', '')
const filePath = path.join(process.cwd(), 'mocks', ...program.split('/'))
let file
try {
file = await readFile(
filePath
)
} catch (err: any) {
let err = `Mocked file on path: ${filePath} is not found.`
console.error(err)
res.status(403).send(err)
return return
} }
if (!file) { if (!file) {
console.error(`Mocked file on path: ${filePath} is not found.`) let err = `Mocked file on path: ${filePath} is not found.`
console.error(err)
res.status(403).send(err)
return
}
if (!loggedIn) {
res.redirect('/SASLogon/login')
return return
} }
@@ -43,15 +80,52 @@ mockSas9Router.post('/SASStoredProcess/do/', async (req, res) => {
} }
}) })
if (MOCK_SERVERTYPE === undefined) { if (MOCK_SERVERTYPE !== undefined) {
mockSas9Router.post('/SASLogon/login', async (req, res) => { mockSas9Router.get('/SASLogon/login', async (req, res) => {
const filePath = path.join(process.cwd(), 'mocks', 'generic', 'sas9', 'login')
try { try {
res.send({ msg: 'Login' }) const file = await readFile(
filePath
)
res.send(file)
} catch (err: any) { } catch (err: any) {
res.status(403).send(err.toString()) res.status(403).send(err.toString())
} }
}) })
mockSas9Router.post('/SASLogon/login', async (req, res) => {
loggedIn = true
const filePath = path.join(process.cwd(), 'mocks', 'generic', 'sas9', 'logged-in')
try {
const file = await readFile(
filePath
)
res.send(file)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
mockSas9Router.get('/SASLogon/logout', async (req, res) => {
loggedIn = false
const filePath = path.join(process.cwd(), 'mocks', 'generic', 'sas9', 'logged-out')
try {
const file = await readFile(
filePath
)
res.send(file)
} catch (err: any) {
res.status(403).send(err.toString())
}
})
} }
export default mockSas9Router export default mockSas9Router

View File

@@ -26,7 +26,10 @@ webRouter.get('/', async (req, res) => {
} }
}) })
if (MOCK_SERVERTYPE !== undefined) { /**
* 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) => { webRouter.post('/SASLogon/login', desktopRestrict, async (req, res) => {
const { error, value: body } = loginWebValidation(req.body) const { error, value: body } = loginWebValidation(req.body)
if (error) return res.status(400).send(error.details[0].message) if (error) return res.status(400).send(error.details[0].message)
@@ -57,14 +60,19 @@ webRouter.post(
} }
) )
webRouter.get('/SASLogon/logout', desktopRestrict, async (req, res) => { /**
try { * If any type of mock is enabled, we won't use regular working logon endpoints
await controller.logout(req) */
res.status(200).send('OK!') if (MOCK_SERVERTYPE === undefined) {
} catch (err: any) { webRouter.get('/SASLogon/logout', desktopRestrict, async (req, res) => {
res.status(403).send(err.toString()) try {
} await controller.logout(req)
}) res.status(200).send('OK!')
} catch (err: any) {
res.status(403).send(err.toString())
}
})
}
webRouter.use('/', mockSas9Router) webRouter.use('/', mockSas9Router)
// disabled for now // disabled for now