diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ba53a6..9ded935 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## [0.3.8](https://github.com/sasjs/server/compare/v0.3.7...v0.3.8) (2022-06-13) + + +### Bug Fixes + +* execution controller better error handling ([8a617a7](https://github.com/sasjs/server/commit/8a617a73ae63233332f5788c90f173d6cd5e1283)) +* execution controller error details ([3fa2a7e](https://github.com/sasjs/server/commit/3fa2a7e2e32f90050f6b09e30ce3ef725eb0b15f)) + +## [0.3.7](https://github.com/sasjs/server/compare/v0.3.6...v0.3.7) (2022-06-08) + + +### Bug Fixes + +* **appstream:** redirect to relative + nested resource should be accessed ([5ab35b0](https://github.com/sasjs/server/commit/5ab35b02c4417132dddb5a800982f31d0d50ef66)) + ## [0.3.6](https://github.com/sasjs/server/compare/v0.3.5...v0.3.6) (2022-06-02) diff --git a/api/src/controllers/internal/Execution.ts b/api/src/controllers/internal/Execution.ts index 50620c1..dff5efc 100644 --- a/api/src/controllers/internal/Execution.ts +++ b/api/src/controllers/internal/Execution.ts @@ -79,7 +79,7 @@ export class ExecutionController { } } } - throw `ExecutionController: ${programPath} file does not exist.` + throw `The Stored Program at "${programPath}" does not exist, or you do not have permission to view it.` } async executeProgram( diff --git a/api/src/routes/appStream/index.ts b/api/src/routes/appStream/index.ts index 4a607e5..3954039 100644 --- a/api/src/routes/appStream/index.ts +++ b/api/src/routes/appStream/index.ts @@ -2,11 +2,7 @@ import path from 'path' import express, { Request } from 'express' import { folderExists } from '@sasjs/utils' -import { - addEntryToAppStreamConfig, - getFilesFolder, - getFullUrl -} from '../../utils' +import { addEntryToAppStreamConfig, getFilesFolder } from '../../utils' import { appStreamHtml } from './appStreamHtml' const appStreams: { [key: string]: string } = {} @@ -73,14 +69,16 @@ export const publishAppStream = async ( router.get(`/*`, function (req: Request, res, next) { const reqPath = req.path.replace(/^\//, '') - // Redirecting to url with trailing slash for base appStream URL only + // Redirecting to url with trailing slash for appStream base URL only if (reqPath.split('/').length === 1 && !reqPath.endsWith('/')) - return res.redirect(301, `${getFullUrl(req)}/`) + // navigating to same url with slash at start + return res.redirect(301, `${reqPath}/`) const appStream = reqPath.split('/')[0] const appStreamFilesPath = appStreams[appStream] if (appStreamFilesPath) { - const resourcePath = reqPath.split('/')[1] || 'index.html' + // resourcePath is without appStream base path + const resourcePath = reqPath.split('/').slice(1).join('/') || 'index.html' req.url = resourcePath