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

Merge pull request #163 from sasjs/issue159

fix: reqHeadrs.txt will contain headers to access APIs
This commit is contained in:
Allan Bowe
2022-05-08 01:34:41 +03:00
committed by GitHub
9 changed files with 45 additions and 40 deletions

14
api/package-lock.json generated
View File

@@ -8,7 +8,7 @@
"name": "api", "name": "api",
"version": "0.0.2", "version": "0.0.2",
"dependencies": { "dependencies": {
"@sasjs/core": "^4.19.0", "@sasjs/core": "^4.23.1",
"@sasjs/utils": "2.42.1", "@sasjs/utils": "2.42.1",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"connect-mongo": "^4.6.0", "connect-mongo": "^4.6.0",
@@ -1385,9 +1385,9 @@
} }
}, },
"node_modules/@sasjs/core": { "node_modules/@sasjs/core": {
"version": "4.19.0", "version": "4.23.1",
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-4.19.0.tgz", "resolved": "https://registry.npmjs.org/@sasjs/core/-/core-4.23.1.tgz",
"integrity": "sha512-vG2YHJveQUQqN0YBhapXb8y+Qp4OniHzRedlqKRxyL0Pc+kwXx5co4Vo+dcOI5/MX0p+8oERP2aCR77s4FEUJg==" "integrity": "sha512-9d6yEPJRRvPLMUkpyaiQ62SXNMMyt2l815jxWgFjnVOxKeUQv9TPyZqZ0FpmWdVe6EY8dv8GLlyaBpOLDnY6Vg=="
}, },
"node_modules/@sasjs/utils": { "node_modules/@sasjs/utils": {
"version": "2.42.1", "version": "2.42.1",
@@ -11358,9 +11358,9 @@
} }
}, },
"@sasjs/core": { "@sasjs/core": {
"version": "4.19.0", "version": "4.23.1",
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-4.19.0.tgz", "resolved": "https://registry.npmjs.org/@sasjs/core/-/core-4.23.1.tgz",
"integrity": "sha512-vG2YHJveQUQqN0YBhapXb8y+Qp4OniHzRedlqKRxyL0Pc+kwXx5co4Vo+dcOI5/MX0p+8oERP2aCR77s4FEUJg==" "integrity": "sha512-9d6yEPJRRvPLMUkpyaiQ62SXNMMyt2l815jxWgFjnVOxKeUQv9TPyZqZ0FpmWdVe6EY8dv8GLlyaBpOLDnY6Vg=="
}, },
"@sasjs/utils": { "@sasjs/utils": {
"version": "2.42.1", "version": "2.42.1",

View File

@@ -47,7 +47,7 @@
}, },
"author": "4GL Ltd", "author": "4GL Ltd",
"dependencies": { "dependencies": {
"@sasjs/core": "^4.19.0", "@sasjs/core": "^4.23.1",
"@sasjs/utils": "2.42.1", "@sasjs/utils": "2.42.1",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"connect-mongo": "^4.6.0", "connect-mongo": "^4.6.0",

View File

@@ -3,7 +3,7 @@ import { Request, Security, Route, Tags, Post, Body } from 'tsoa'
import { ExecuteReturnJson, ExecutionController } from './internal' import { ExecuteReturnJson, ExecutionController } from './internal'
import { PreProgramVars } from '../types' import { PreProgramVars } from '../types'
import { ExecuteReturnJsonResponse } from '.' import { ExecuteReturnJsonResponse } from '.'
import { parseLogToArray } from '../utils' import { getPreProgramVariables, parseLogToArray } from '../utils'
interface ExecuteSASCodePayload { interface ExecuteSASCodePayload {
/** /**
@@ -56,16 +56,3 @@ const executeSASCode = async (req: any, { code }: ExecuteSASCodePayload) => {
} }
} }
} }
const getPreProgramVariables = (req: any): PreProgramVars => {
const host = req.get('host')
const protocol = req.protocol + '://'
const { user, accessToken } = req
return {
username: user.username,
userId: user.userId,
displayName: user.displayName,
serverUrl: protocol + host,
accessToken
}
}

View File

@@ -75,12 +75,12 @@ export class ExecutionController {
const logPath = path.join(session.path, 'log.log') const logPath = path.join(session.path, 'log.log')
const headersPath = path.join(session.path, 'stpsrv_header.txt') const headersPath = path.join(session.path, 'stpsrv_header.txt')
const weboutPath = path.join(session.path, 'webout.txt') const weboutPath = path.join(session.path, 'webout.txt')
const tokenFile = path.join(session.path, 'accessToken.txt') const tokenFile = path.join(session.path, 'reqHeaders.txt')
await createFile(weboutPath, '') await createFile(weboutPath, '')
await createFile( await createFile(
tokenFile, tokenFile,
preProgramVariables?.accessToken ?? 'accessToken' preProgramVariables?.httpHeaders.join('\n') ?? ''
) )
const varStatments = Object.keys(vars).reduce( const varStatments = Object.keys(vars).reduce(

View File

@@ -17,8 +17,8 @@ import {
ExecutionController, ExecutionController,
ExecutionVars ExecutionVars
} from './internal' } from './internal'
import { PreProgramVars } from '../types'
import { import {
getPreProgramVariables,
getTmpFilesFolderPath, getTmpFilesFolderPath,
HTTPHeaders, HTTPHeaders,
isDebugOn, isDebugOn,
@@ -210,16 +210,3 @@ const executeReturnJson = async (
} }
} }
} }
const getPreProgramVariables = (req: any): PreProgramVars => {
const host = req.get('host')
const protocol = req.protocol + '://'
const { user, accessToken } = req
return {
username: user.username,
userId: user.userId,
displayName: user.displayName,
serverUrl: protocol + host,
accessToken
}
}

View File

@@ -3,5 +3,5 @@ export interface PreProgramVars {
userId: number userId: number
displayName: string displayName: string
serverUrl: string serverUrl: string
accessToken: string httpHeaders: string[]
} }

View File

@@ -0,0 +1,29 @@
import { PreProgramVars } from '../types'
export const getPreProgramVariables = (req: any): PreProgramVars => {
const host = req.get('host')
const protocol = req.protocol + '://'
const { user, accessToken } = req
const csrfToken = req.headers['x-xsrf-token']
const sessionId = req.cookies['connect.sid']
const { _csrf } = req.cookies
const httpHeaders: string[] = []
if (accessToken) httpHeaders.push(`Authorization: Bearer ${accessToken}`)
if (csrfToken) httpHeaders.push(`x-xsrf-token: ${csrfToken}`)
const cookies: string[] = []
if (sessionId) cookies.push(`connect.sid=${sessionId}`)
if (_csrf) cookies.push(`_csrf=${_csrf}`)
if (cookies.length) httpHeaders.push(`cookie: ${cookies.join('; ')}`)
return {
username: user.username,
userId: user.userId,
displayName: user.displayName,
serverUrl: protocol + host,
httpHeaders
}
}

View File

@@ -8,6 +8,7 @@ export * from './generateAuthCode'
export * from './generateRefreshToken' export * from './generateRefreshToken'
export * from './getCertificates' export * from './getCertificates'
export * from './getDesktopFields' export * from './getDesktopFields'
export * from './getPreProgramVariables'
export * from './isDebugOn' export * from './isDebugOn'
export * from './parseLogToArray' export * from './parseLogToArray'
export * from './removeTokensInDB' export * from './removeTokensInDB'

View File

@@ -1,2 +1,3 @@
### Get current user's info via access token ### Get current user's info via session ID
GET http://localhost:5000/SASjsApi/session GET http://localhost:5000/SASjsApi/session
cookie: connect.sid=s:G2DeFdKuWhnmTOsTHmTWrxAXPx2P6TLD.JyNLxfACC1w3NlFQFfL5chyxtrqbPYmS6iButRc1goE