@sassoftware/viya-serverjs 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +6 -0
- package/.dockerignore +2 -0
- package/.env +29 -0
- package/.env.proxy +31 -0
- package/.env.server +29 -0
- package/.eslintignore +4 -0
- package/.eslintrc.json +42 -0
- package/Dockerfile +44 -0
- package/README.md +6 -4
- package/cli.js +9 -0
- package/images/viya-apiserverjs.png +0 -0
- package/lib/{core/config.js → config.js} +5 -24
- package/lib/handlers/appCallback.js +62 -0
- package/lib/handlers/codeAuth.js +61 -0
- package/lib/{core/handlers → handlers}/decodeJwt.js +2 -2
- package/lib/handlers/favicon.js +45 -0
- package/lib/handlers/getApp.js +77 -0
- package/lib/handlers/getApp2.js +48 -0
- package/lib/handlers/getUser.js +49 -0
- package/lib/{core/handlers → handlers}/index.js +2 -2
- package/lib/handlers/keepAlive.js +99 -0
- package/lib/handlers/keepAlive2.js +33 -0
- package/lib/handlers/logon.js +44 -0
- package/lib/handlers/logout.js +88 -0
- package/lib/handlers/proxyMapUri.js +78 -0
- package/lib/handlers/proxyOnResponse.js +26 -0
- package/lib/handlers/reactDev.js +52 -0
- package/lib/handlers/setCookies.js +110 -0
- package/lib/{core/iService.js → iService.js} +45 -30
- package/lib/index.js +177 -10
- package/lib/{core/parseDocker.js → parseDocker.js} +1 -1
- package/lib/plugins/SASauth.js +101 -0
- package/lib/plugins/appCookie.js +99 -0
- package/lib/plugins/setContext.js +56 -0
- package/lib/{core/plugins → plugins}/setDefaultRoutes.js +67 -58
- package/lib/plugins/setupAuth.js +87 -0
- package/lib/{core/plugins → plugins}/setupUserRoutes.js +21 -12
- package/lib/plugins/token.js +31 -0
- package/lib/schemes/SASTokenScheme.js +71 -0
- package/package.json +56 -14
- package/packages/core/config.js +86 -0
- package/packages/core/handlers/appCallback.js +40 -0
- package/packages/core/handlers/codeAuth.js +31 -0
- package/packages/core/handlers/decodeJwt.js +11 -0
- package/packages/core/handlers/favicon.js +24 -0
- package/packages/core/handlers/getApp.js +41 -0
- package/packages/core/handlers/getApp2.js +26 -0
- package/packages/core/handlers/getUser.js +20 -0
- package/packages/core/handlers/index.js +36 -0
- package/packages/core/handlers/keepAlive.js +54 -0
- package/packages/core/handlers/keepAlive2.js +13 -0
- package/packages/core/handlers/logon.js +24 -0
- package/packages/core/handlers/logout.js +43 -0
- package/{lib → packages}/core/handlers/proxyMapUri.js +25 -36
- package/packages/core/handlers/proxyOnResponse.js +12 -0
- package/packages/core/handlers/reactDev.js +30 -0
- package/packages/core/handlers/setCookies.js +78 -0
- package/packages/core/iService.js +369 -0
- package/packages/core/index.js +249 -0
- package/packages/core/parseDocker.js +33 -0
- package/packages/core/plugins/SASauth.js +79 -0
- package/packages/core/plugins/appCookie.js +49 -0
- package/packages/core/plugins/setContext.js +34 -0
- package/packages/core/plugins/setDefaultRoutes.js +262 -0
- package/packages/core/plugins/setupAuth.js +48 -0
- package/packages/core/plugins/setupUserRoutes.js +48 -0
- package/packages/core/plugins/token.js +10 -0
- package/packages/core/schemes/SASTokenScheme.js +43 -0
- package/packages/core/visionIndex.html +24 -0
- package/packages/examples/apitest/.env +11 -0
- package/packages/examples/apitest/.eslintrc.json +42 -0
- package/packages/examples/apitest/Dockerfile +41 -0
- package/packages/examples/apitest/api.js +88 -0
- package/packages/examples/apitest/appenv.js +6 -0
- package/packages/examples/apitest/docker-compose.yml +10 -0
- package/packages/examples/apitest/package.json +19 -0
- package/packages/examples/apitest/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/apitest/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/apitest/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/apitest/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/apitest/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/apitest/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/apitest/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/apitest/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/apitest/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/apitest/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/apitest/public/data/cars.csv +429 -0
- package/packages/examples/apitest/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/apitest/public/data/cmdList.txt +15 -0
- package/packages/examples/apitest/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/apitest/public/data/iris.csv +151 -0
- package/packages/examples/apitest/public/data/model1.sas7bdat +0 -0
- package/packages/examples/apitest/public/favicon.ico +0 -0
- package/packages/examples/apitest/public/index.html +316 -0
- package/packages/examples/apitest/public/index2.html +102 -0
- package/packages/examples/apitest/public/logon.html +42 -0
- package/packages/examples/apitest/public/myapp/secondary.html +1 -0
- package/packages/examples/apitest/public/myapp/test.js +2 -0
- package/packages/examples/apitest/public/onlogoff.html +53 -0
- package/packages/examples/apitest/start.sh +15 -0
- package/packages/examples/app/.env +32 -0
- package/packages/examples/app/.envProxy +19 -0
- package/packages/examples/app/.envimpl +12 -0
- package/packages/examples/app/.eslintrc.json +42 -0
- package/packages/examples/app/Dockerfile +42 -0
- package/packages/examples/app/appenv.js +6 -0
- package/packages/examples/app/certs/ca.crt +19 -0
- package/packages/examples/app/certs/tls.crt +25 -0
- package/packages/examples/app/certs/tls.key +28 -0
- package/packages/examples/app/certs/tls.sh +5 -0
- package/packages/examples/app/docker-compose.yml +12 -0
- package/packages/examples/app/index.js +15 -0
- package/packages/examples/app/package.json +20 -0
- package/packages/examples/app/public/casread.html +324 -0
- package/packages/examples/app/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/app/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/app/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/app/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/app/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/app/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/app/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/app/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/app/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/app/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/app/public/data/cars.csv +429 -0
- package/packages/examples/app/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/app/public/data/cmdList.txt +15 -0
- package/packages/examples/app/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/app/public/data/iris.csv +151 -0
- package/packages/examples/app/public/data/model1.sas7bdat +0 -0
- package/packages/examples/app/public/favicon.ico +0 -0
- package/packages/examples/app/public/index.html +332 -0
- package/packages/examples/app/public/indexProxy.html +346 -0
- package/packages/examples/app/public/indextest.html +316 -0
- package/packages/examples/app/public/logon.html +44 -0
- package/packages/examples/app/public/micburger.html +345 -0
- package/packages/examples/app/public/micburger.txt.html +311 -0
- package/packages/examples/app/public/myapp/secondary.html +1 -0
- package/packages/examples/app/public/myapp/test.js +2 -0
- package/packages/examples/app/public/sara.txt +345 -0
- package/packages/examples/app/public/testva2.html +311 -0
- package/packages/examples/app/startup.sh +15 -0
- package/packages/examples/appdocker/.env +21 -0
- package/packages/examples/appdocker/.envProxy +22 -0
- package/packages/examples/appdocker/.envimpl +12 -0
- package/packages/examples/appdocker/.eslintrc.json +42 -0
- package/packages/examples/appdocker/Dockerfile +43 -0
- package/packages/examples/appdocker/appenv.js +6 -0
- package/packages/examples/appdocker/certs/ca.crt +19 -0
- package/packages/examples/appdocker/certs/tls.crt +25 -0
- package/packages/examples/appdocker/certs/tls.key +28 -0
- package/packages/examples/appdocker/certs/tls.sh +5 -0
- package/packages/examples/appdocker/docker-compose.yml +12 -0
- package/packages/examples/appdocker/index.js +15 -0
- package/packages/examples/appdocker/package.json +20 -0
- package/packages/examples/appdocker/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/appdocker/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/appdocker/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/appdocker/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/appdocker/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/appdocker/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/appdocker/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/appdocker/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/appdocker/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/appdocker/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/appdocker/public/data/cars.csv +429 -0
- package/packages/examples/appdocker/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/appdocker/public/data/cmdList.txt +15 -0
- package/packages/examples/appdocker/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/appdocker/public/data/iris.csv +151 -0
- package/packages/examples/appdocker/public/data/model1.sas7bdat +0 -0
- package/packages/examples/appdocker/public/favicon.ico +0 -0
- package/packages/examples/appdocker/public/index.html +346 -0
- package/packages/examples/appdocker/public/indexProxy.html +346 -0
- package/packages/examples/appdocker/public/indextest.html +316 -0
- package/packages/examples/appdocker/public/logon.html +44 -0
- package/packages/examples/appdocker/public/myapp/secondary.html +1 -0
- package/packages/examples/appdocker/public/myapp/test.js +2 -0
- package/packages/examples/appdocker/startup.sh +15 -0
- package/packages/examples/apptest/.env +28 -0
- package/packages/examples/apptest/.envProxy +22 -0
- package/packages/examples/apptest/.envimpl +12 -0
- package/packages/examples/apptest/.eslintrc.json +42 -0
- package/packages/examples/apptest/Dockerfile +44 -0
- package/packages/examples/apptest/appDir/app1/design.html +350 -0
- package/packages/examples/apptest/appDir/app1/index.html +353 -0
- package/packages/examples/apptest/appDir/index.html +350 -0
- package/packages/examples/apptest/appenv.js +6 -0
- package/packages/examples/apptest/docker-compose.yml +12 -0
- package/packages/examples/apptest/index.js +444 -0
- package/packages/examples/apptest/package.json +24 -0
- package/packages/examples/apptest/public/casread2.html +321 -0
- package/packages/examples/apptest/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/apptest/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/apptest/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/apptest/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/apptest/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/apptest/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/apptest/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/apptest/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/apptest/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/apptest/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/apptest/public/data/cars.csv +429 -0
- package/packages/examples/apptest/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/apptest/public/data/cmdList.txt +15 -0
- package/packages/examples/apptest/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/apptest/public/data/iris.csv +151 -0
- package/packages/examples/apptest/public/data/model1.sas7bdat +0 -0
- package/packages/examples/apptest/public/design.html +349 -0
- package/packages/examples/apptest/public/favicon.ico +0 -0
- package/packages/examples/apptest/public/help.html +1 -0
- package/packages/examples/apptest/public/index.html +353 -0
- package/packages/examples/apptest/public/index2.html +353 -0
- package/packages/examples/apptest/public/indexProxy.html +346 -0
- package/packages/examples/apptest/public/indextest.html +316 -0
- package/packages/examples/apptest/public/logon.html +44 -0
- package/packages/examples/apptest/public/myapp/q.html +349 -0
- package/packages/examples/apptest/public/myapp/secondary.html +1 -0
- package/packages/examples/apptest/public/myapp/test.js +2 -0
- package/packages/examples/apptest/public/push1.html +187 -0
- package/packages/examples/apptest/startup.sh +15 -0
- package/packages/examples/apptesti/.env +13 -0
- package/packages/examples/apptesti/.eslintrc.json +42 -0
- package/packages/examples/apptesti/Dockerfile +42 -0
- package/packages/examples/apptesti/appenv.js +6 -0
- package/packages/examples/apptesti/certs/ca.crt +19 -0
- package/packages/examples/apptesti/certs/tls.crt +25 -0
- package/packages/examples/apptesti/certs/tls.key +28 -0
- package/packages/examples/apptesti/certs/tls.sh +5 -0
- package/packages/examples/apptesti/docker-compose.yml +12 -0
- package/{lib/cli.js → packages/examples/apptesti/index.js} +4 -6
- package/packages/examples/apptesti/package.json +20 -0
- package/packages/examples/apptesti/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/apptesti/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/apptesti/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/apptesti/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/apptesti/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/apptesti/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/apptesti/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/apptesti/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/apptesti/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/apptesti/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/apptesti/public/data/cars.csv +429 -0
- package/packages/examples/apptesti/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/apptesti/public/data/cmdList.txt +15 -0
- package/packages/examples/apptesti/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/apptesti/public/data/iris.csv +151 -0
- package/packages/examples/apptesti/public/data/model1.sas7bdat +0 -0
- package/packages/examples/apptesti/public/favicon.ico +0 -0
- package/packages/examples/apptesti/public/index.html +346 -0
- package/packages/examples/apptesti/public/indexProxy.html +346 -0
- package/packages/examples/apptesti/public/indextest.html +316 -0
- package/packages/examples/apptesti/public/logon.html +44 -0
- package/packages/examples/apptesti/public/main.html +346 -0
- package/packages/examples/apptesti/public/myapp/secondary.html +1 -0
- package/packages/examples/apptesti/public/myapp/test.js +2 -0
- package/packages/examples/apptesti/startup.sh +15 -0
- package/packages/examples/basic/.env +10 -0
- package/packages/examples/basic/.eslintrc.json +42 -0
- package/packages/examples/basic/Dockerfile +41 -0
- package/packages/examples/basic/api.js +88 -0
- package/packages/examples/basic/appenv.js +6 -0
- package/packages/examples/basic/docker-compose.yml +10 -0
- package/packages/examples/basic/package.json +19 -0
- package/packages/examples/basic/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/basic/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/basic/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/basic/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/basic/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/basic/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/basic/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/basic/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/basic/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/basic/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/basic/public/data/cars.csv +429 -0
- package/packages/examples/basic/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/basic/public/data/cmdList.txt +15 -0
- package/packages/examples/basic/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/basic/public/data/iris.csv +151 -0
- package/packages/examples/basic/public/data/model1.sas7bdat +0 -0
- package/packages/examples/basic/public/favicon.ico +0 -0
- package/packages/examples/basic/public/index.html +29 -0
- package/packages/examples/basic/public/index2.html +102 -0
- package/packages/examples/basic/public/logon.html +42 -0
- package/packages/examples/basic/public/myapp/secondary.html +1 -0
- package/packages/examples/basic/public/myapp/test.js +2 -0
- package/packages/examples/basic/public/onlogoff.html +53 -0
- package/packages/examples/basic/start.sh +15 -0
- package/packages/examples/proxytest/.env +23 -0
- package/packages/examples/proxytest/.envimpl +11 -0
- package/packages/examples/proxytest/.eslintrc.json +42 -0
- package/packages/examples/proxytest/Dockerfile +42 -0
- package/packages/examples/proxytest/appenv.js +6 -0
- package/packages/examples/proxytest/docker-compose.yml +12 -0
- package/packages/examples/proxytest/index.js +57 -0
- package/packages/examples/proxytest/package.json +18 -0
- package/packages/examples/proxytest/public/data/Cluster_SDOH1.sas +182 -0
- package/packages/examples/proxytest/public/data/Cluster_SDOH6.sas +180 -0
- package/packages/examples/proxytest/public/data/LeNet_snzrle.astore +0 -0
- package/packages/examples/proxytest/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/packages/examples/proxytest/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/packages/examples/proxytest/public/data/ast/GBlocalcopy.sasast +0 -0
- package/packages/examples/proxytest/public/data/ast/LeNet_snzrle.astore +0 -0
- package/packages/examples/proxytest/public/data/ast/gb_IrisGB.sasast +0 -0
- package/packages/examples/proxytest/public/data/ast/paysimsvdd.sasast +0 -0
- package/packages/examples/proxytest/public/data/ast/svmlocalcopy.sasast +0 -0
- package/packages/examples/proxytest/public/data/cars.csv +429 -0
- package/packages/examples/proxytest/public/data/cluster_test2.sas7bdat +0 -0
- package/packages/examples/proxytest/public/data/cmdList.txt +15 -0
- package/packages/examples/proxytest/public/data/gradBoost.sashdat +0 -0
- package/packages/examples/proxytest/public/data/iris.csv +151 -0
- package/packages/examples/proxytest/public/data/model1.sas7bdat +0 -0
- package/packages/examples/proxytest/public/favicon.ico +0 -0
- package/packages/examples/proxytest/public/index.html +357 -0
- package/packages/examples/proxytest/public/index.js +57 -0
- package/packages/examples/proxytest/public/indextest.html +316 -0
- package/packages/examples/proxytest/public/logon.html +44 -0
- package/packages/examples/proxytest/public/main.html +357 -0
- package/packages/examples/proxytest/public/myapp/secondary.html +1 -0
- package/packages/examples/proxytest/public/myapp/test.js +2 -0
- package/packages/examples/proxytest/public/restaf.js +2461 -0
- package/packages/examples/proxytest/public/restaf.min.js +11 -0
- package/packages/examples/proxytest/public/sas/iris.txt +10 -0
- package/packages/examples/proxytest/startup.sh +15 -0
- package/public/casread2.html +321 -0
- package/public/data/Cluster_SDOH1.sas +182 -0
- package/public/data/Cluster_SDOH6.sas +180 -0
- package/public/data/LeNet_snzrle.astore +0 -0
- package/public/data/NeuralNetwork_High_med.sas +2409 -0
- package/public/data/NeuralNetwork_high_med1.sas +2409 -0
- package/public/data/ast/GBlocalcopy.sasast +0 -0
- package/public/data/ast/LeNet_snzrle.astore +0 -0
- package/public/data/ast/gb_IrisGB.sasast +0 -0
- package/public/data/ast/paysimsvdd.sasast +0 -0
- package/public/data/ast/svmlocalcopy.sasast +0 -0
- package/public/data/cars.csv +429 -0
- package/public/data/cluster_test2.sas7bdat +0 -0
- package/public/data/cmdList.txt +15 -0
- package/public/data/gradBoost.sashdat +0 -0
- package/public/data/iris.csv +151 -0
- package/public/data/model1.sas7bdat +0 -0
- package/public/design.html +350 -0
- package/public/display.html +354 -0
- package/public/favicon.ico +0 -0
- package/public/help.html +1 -0
- package/public/index.html +354 -0
- package/public/index2.html +353 -0
- package/public/indexProxy.html +350 -0
- package/public/indextest.html +316 -0
- package/public/logon.html +44 -0
- package/public/myapp/q.html +349 -0
- package/public/myapp/secondary.html +1 -0
- package/public/myapp/test.js +2 -0
- package/public/push1.html +187 -0
- package/server.js +444 -0
- package/src/config.js +90 -0
- package/src/handlers/appCallback.js +40 -0
- package/src/handlers/codeAuth.js +31 -0
- package/src/handlers/decodeJwt.js +11 -0
- package/src/handlers/favicon.js +24 -0
- package/src/handlers/getApp.js +52 -0
- package/src/handlers/getApp2.js +26 -0
- package/src/handlers/getUser.js +20 -0
- package/src/handlers/index.js +36 -0
- package/src/handlers/keepAlive.js +54 -0
- package/src/handlers/keepAlive2.js +13 -0
- package/src/handlers/logon.js +24 -0
- package/src/handlers/logout.js +43 -0
- package/src/handlers/proxyMapUri.js +56 -0
- package/src/handlers/proxyOnResponse.js +12 -0
- package/src/handlers/reactDev.js +30 -0
- package/src/handlers/setCookies.js +76 -0
- package/src/iService.js +369 -0
- package/src/index.js +243 -0
- package/src/parseDocker.js +32 -0
- package/src/plugins/SASauth.js +79 -0
- package/src/plugins/appCookie.js +49 -0
- package/src/plugins/setContext.js +34 -0
- package/src/plugins/setDefaultRoutes.js +262 -0
- package/src/plugins/setupAuth.js +48 -0
- package/src/plugins/setupUserRoutes.js +48 -0
- package/src/plugins/token.js +10 -0
- package/src/schemes/SASTokenScheme.js +43 -0
- package/src/visionIndex.html +24 -0
- package/start.sh +15 -0
- package/lib/core/handlers/appCallback.js +0 -51
- package/lib/core/handlers/codeAuth.js +0 -61
- package/lib/core/handlers/favicon.js +0 -45
- package/lib/core/handlers/getApp.js +0 -67
- package/lib/core/handlers/getApp2.js +0 -48
- package/lib/core/handlers/getUser.js +0 -49
- package/lib/core/handlers/keepAlive.js +0 -96
- package/lib/core/handlers/keepAlive2.js +0 -33
- package/lib/core/handlers/logon.js +0 -44
- package/lib/core/handlers/logout.js +0 -88
- package/lib/core/handlers/proxyOnResponse.js +0 -26
- package/lib/core/handlers/reactDev.js +0 -52
- package/lib/core/handlers/setCookies.js +0 -116
- package/lib/core/index.js +0 -195
- package/lib/core/plugins/SASauth.js +0 -100
- package/lib/core/plugins/appCookie.js +0 -98
- package/lib/core/plugins/setContext.js +0 -55
- package/lib/core/plugins/setupAuth.js +0 -86
- package/lib/core/plugins/token.js +0 -31
- package/lib/core/schemes/SASTokenScheme.js +0 -71
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) SAS Institute Inc.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
* ---------------------------------------------------------------------------------------
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
'use strict';
|
|
19
|
+
let debug = require('debug')('getapp2');
|
|
20
|
+
async function getApp2 (req, h) {
|
|
21
|
+
debug('in getApp2');
|
|
22
|
+
debug(req.params);
|
|
23
|
+
return h.file(`${req.params.param}`);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default getApp2;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
let debug = require('debug')('user');
|
|
7
|
+
async function getUser (req, h) {
|
|
8
|
+
|
|
9
|
+
debug(req.state);
|
|
10
|
+
let name = 'SAS User';
|
|
11
|
+
if (req.state.ocookie != null) {
|
|
12
|
+
let sid = req.state.ocookie.sid;
|
|
13
|
+
debug(sid);
|
|
14
|
+
let credentials = await req.server.app.cache.get(sid);
|
|
15
|
+
name = credentials.user_name;
|
|
16
|
+
}
|
|
17
|
+
debug(name);
|
|
18
|
+
return `let USER_NAME='${name}'`;
|
|
19
|
+
}
|
|
20
|
+
export default getUser;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
import getApp from './getApp';
|
|
7
|
+
import getApp2 from './getApp2';
|
|
8
|
+
import favicon from './favicon';
|
|
9
|
+
import appCallback from './appCallback';
|
|
10
|
+
import logon from './logon';
|
|
11
|
+
import keepAlive from './keepAlive';
|
|
12
|
+
import keepAlive2 from './keepAlive2';
|
|
13
|
+
import logout from './logout';
|
|
14
|
+
import getUser from './getUser';
|
|
15
|
+
import setupUserRoutes from '../plugins/setupUserRoutes';
|
|
16
|
+
import reactDev from './reactDev';
|
|
17
|
+
import proxyMapUri from './proxyMapUri';
|
|
18
|
+
import proxyOnResponse from './proxyOnResponse';
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
getApp,
|
|
22
|
+
getApp2,
|
|
23
|
+
favicon,
|
|
24
|
+
keepAlive,
|
|
25
|
+
keepAlive2,
|
|
26
|
+
appCallback,
|
|
27
|
+
logon,
|
|
28
|
+
logout,
|
|
29
|
+
getUser,
|
|
30
|
+
setupUserRoutes,
|
|
31
|
+
reactDev,
|
|
32
|
+
proxyMapUri,
|
|
33
|
+
proxyOnResponse
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
import axios from 'axios';
|
|
8
|
+
let Boom = require('@hapi/boom');
|
|
9
|
+
let debug= require('debug')('keepAlive');
|
|
10
|
+
|
|
11
|
+
// primarly to do a keepAlive of sasLogon
|
|
12
|
+
let qs = require('qs');
|
|
13
|
+
async function keepAlive (req, h) {
|
|
14
|
+
refreshToken(req, h);
|
|
15
|
+
let SASLogon = `${process.env.VIYA_SERVER}/SASLogon/`;
|
|
16
|
+
return h.redirect(SASLogon).code(302);
|
|
17
|
+
}
|
|
18
|
+
// let SASLogon = `${process.env.VIYA_SERVER}/SASLogon/oauth/authorize?client_id=${process.env.CLIENTID}&redirect_uri=${process.env.APPSERVER}/keepAlive2&response_type=code`;
|
|
19
|
+
|
|
20
|
+
async function refreshToken (req, h) {
|
|
21
|
+
let credentials = req.auth.credentials;
|
|
22
|
+
debug('refreshToken', credentials);
|
|
23
|
+
let sid = credentials.sid;
|
|
24
|
+
let config = {
|
|
25
|
+
url : `${process.env.VIYA_SERVER}/SASLogon/oauth/token`,
|
|
26
|
+
method: 'POST',
|
|
27
|
+
|
|
28
|
+
headers: {
|
|
29
|
+
'Accept' : 'application/json',
|
|
30
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
31
|
+
},
|
|
32
|
+
data: qs.stringify({
|
|
33
|
+
grant_type : 'refresh_token',
|
|
34
|
+
refresh_token: credentials.refreshToken,
|
|
35
|
+
client_id : process.env.CLIENTID,
|
|
36
|
+
client_secret: process.env.CLIENTSECRET
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
try {
|
|
40
|
+
let r = await axios(config);
|
|
41
|
+
let newcred = {...credentials};
|
|
42
|
+
newcred.token = r.data.access_token;
|
|
43
|
+
newcred.refreshToken = r.data.refresh_token;
|
|
44
|
+
debug('newcred', newcred);
|
|
45
|
+
await req.server.app.cache.set(sid, credentials);
|
|
46
|
+
return credentials;
|
|
47
|
+
}
|
|
48
|
+
catch(err) {
|
|
49
|
+
let error = Boom.badRequest('Unable to refresh tokens in KeepAlive', JSON.stringify(err, null,4));
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
export default keepAlive;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
// primarly to do a keepAlive of sasLogon
|
|
8
|
+
|
|
9
|
+
async function keepAlive2 (req, h) {
|
|
10
|
+
|
|
11
|
+
return '<h2> Token refresh failed. Contact you admin </h2>';
|
|
12
|
+
}
|
|
13
|
+
export default keepAlive2;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import setCookies from './setCookies';
|
|
7
|
+
let debug = require('debug')('logon');
|
|
8
|
+
async function logon (req, h) {
|
|
9
|
+
debugger;
|
|
10
|
+
debug('.................................................in logon');
|
|
11
|
+
req.log('in logon');
|
|
12
|
+
|
|
13
|
+
let r = await setCookies(req, h, null);
|
|
14
|
+
debug(r.redirect);
|
|
15
|
+
req.log('in logon after setcookie', r.redirect);
|
|
16
|
+
return h.redirect(r.redirect);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
export default logon;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
|
|
7
|
+
import axios from 'axios';
|
|
8
|
+
|
|
9
|
+
let debug = require('debug')('logout');
|
|
10
|
+
|
|
11
|
+
async function logout (req, h) {
|
|
12
|
+
let q = req.query;
|
|
13
|
+
debug(req.state);
|
|
14
|
+
|
|
15
|
+
let hh = req.server.info.uri.replace(/0.0.0.0/, 'localhost');
|
|
16
|
+
let callbackUrl = `${hh}/${process.env.APPNAME}`;
|
|
17
|
+
if (q.callbackUrl != null) {
|
|
18
|
+
callbackUrl = `${callbackUrl}/${q.callbackUrl}`;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
let url = `${process.env.VIYA_SERVER}/SASLogon/logout.do?callbackUrl=${callbackUrl}`;
|
|
22
|
+
if (process.env.AUTHFLOW === 'server') {
|
|
23
|
+
if (req.state.ocookie != null) {
|
|
24
|
+
let sid = req.state.ocookie.sid;
|
|
25
|
+
|
|
26
|
+
await req.server.app.cache.del(sid);
|
|
27
|
+
} else {
|
|
28
|
+
console.log('Warning: No cookie returned by the browser');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return h.redirect(url).unstate('ocookie');
|
|
32
|
+
}
|
|
33
|
+
// eslint-disable-next-line no-unused-vars
|
|
34
|
+
async function ViyaLogout () {
|
|
35
|
+
let p = {
|
|
36
|
+
method: 'GET',
|
|
37
|
+
url : `${process.env.VIYA_SERVER}/SASLogon/logout`
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
let r = await axios(p);
|
|
41
|
+
debug(r);
|
|
42
|
+
}
|
|
43
|
+
export default logout;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
async function proxyMapUri (req) {
|
|
2
|
+
let credentials = req.auth.credentials;
|
|
3
|
+
|
|
4
|
+
if (credentials != null) {
|
|
5
|
+
let sid = credentials.sid;
|
|
6
|
+
console.log(credentials);
|
|
7
|
+
console.log('sid=', sid);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let path = process.env.PROXYSERVER;
|
|
11
|
+
console.log('-----------------------------------------------------------');
|
|
12
|
+
console.log('Proxying to ', path);
|
|
13
|
+
let params = req.params;
|
|
14
|
+
console.log('Incoming params ', params);
|
|
15
|
+
let search = req.url.search;
|
|
16
|
+
console.log('Incoming query ', search);
|
|
17
|
+
let uri = path + '/' + params.param;
|
|
18
|
+
if (search != null && search.trim().length > 0) {
|
|
19
|
+
uri = uri + search;
|
|
20
|
+
}
|
|
21
|
+
console.log('Final configuration ',uri);
|
|
22
|
+
console.log('-----------------------------------------------------------');
|
|
23
|
+
return {
|
|
24
|
+
uri: uri
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export default proxyMapUri;
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
let qsstring = req.raw.search;
|
|
31
|
+
console.log('qsstring=', qsstring);
|
|
32
|
+
let query = req.query;
|
|
33
|
+
let newQuery = null;
|
|
34
|
+
|
|
35
|
+
if (query != null) {
|
|
36
|
+
console.log('query=', query);
|
|
37
|
+
newQuery = {};
|
|
38
|
+
for (let key in query) {
|
|
39
|
+
let value = query[key];
|
|
40
|
+
if (value === 'true' || value === 'false') {
|
|
41
|
+
value = value === 'true';
|
|
42
|
+
}
|
|
43
|
+
newQuery[key] = value;
|
|
44
|
+
}
|
|
45
|
+
console.log('newQuery=', newQuery);
|
|
46
|
+
}
|
|
47
|
+
console.log(req.URLSearchParams);
|
|
48
|
+
let uri = path + '/' + params.param;
|
|
49
|
+
if (newQuery != null) {
|
|
50
|
+
uri = `${uri}?${new URLSearchParams(newQuery)}`;
|
|
51
|
+
}
|
|
52
|
+
console.log('req.url', req.url);
|
|
53
|
+
console.log('req.url', req.url.search);
|
|
54
|
+
console.log('uri=', req.uri);
|
|
55
|
+
console.log('path=', req.path);
|
|
56
|
+
*/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
async function proxyOnResponse (err, res, request, h, settings, ttl) {
|
|
3
|
+
/*
|
|
4
|
+
console.log('receiving the response from the upstream.');
|
|
5
|
+
const payload = await Wreck.read(res, { json: true });
|
|
6
|
+
console.log('some payload manipulation if you want to.');
|
|
7
|
+
const response = h.response(payload);
|
|
8
|
+
response.headers = res.headers;
|
|
9
|
+
return response;
|
|
10
|
+
*/
|
|
11
|
+
}
|
|
12
|
+
export default proxyOnResponse;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) SAS Institute Inc.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
* ---------------------------------------------------------------------------------------
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
let spawn = require('cross-spawn');
|
|
19
|
+
async function reactDev (req, h) {
|
|
20
|
+
console.log('Spawning the dev server');
|
|
21
|
+
spawn('yarn', ['start'], { stdio: 'inherit' });
|
|
22
|
+
let h2 = '<h2>Viya Server: ' + process.env.VIYA_SERVER + '<h2>';
|
|
23
|
+
return (
|
|
24
|
+
h2 +
|
|
25
|
+
'<h3>Your session is authenticated</h3>' +
|
|
26
|
+
'<h3>Your application is starting in another tab </h3>' +
|
|
27
|
+
'<h4> HMR is active</h4>'
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
export default reactDev;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
let uuid = require('uuid');
|
|
6
|
+
let debug = require('debug')('setcookies');
|
|
7
|
+
|
|
8
|
+
async function setCookies (req, h, options) {
|
|
9
|
+
let credentials = req.auth.credentials;
|
|
10
|
+
debug('setcookie', credentials);
|
|
11
|
+
// req.log('setcookie', credentials);
|
|
12
|
+
if (credentials != null && req.auth.error != null) {
|
|
13
|
+
debug('logon failed');
|
|
14
|
+
return { status: false, error: req.auth.error };
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// create a cookie(sid) and save credentials in cache
|
|
18
|
+
const sid = uuid.v4();
|
|
19
|
+
credentials.sid = sid;
|
|
20
|
+
if (options != null) {
|
|
21
|
+
options.allAppEnv.LOGONPAYLOAD.token = credentials.token;
|
|
22
|
+
options.allAppEnv.LOGONPAYLOAD.tokenType = 'bearer';
|
|
23
|
+
debug(options.allAppEnv.LOGONPAYLOAD);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
await req.server.app.cache.set(sid, credentials, 0);
|
|
28
|
+
if (process.env.COOKIES !== 'NO') {
|
|
29
|
+
debugger;
|
|
30
|
+
req.cookieAuth.set({ sid });
|
|
31
|
+
};
|
|
32
|
+
debug('credentials query', credentials.query);
|
|
33
|
+
let redirect = (credentials.query != null && credentials.query.next != null) ? credentials.query.next : null;
|
|
34
|
+
debug('setcookie-redirect', redirect);
|
|
35
|
+
return { status: true, error: null , redirect: redirect};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default setCookies;
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
save for future reference - not used at this time
|
|
42
|
+
async function getCredentials (req) {
|
|
43
|
+
let route = process.env.REDIRECT == null ? `/callback` : '/' + process.env.REDIRECT;
|
|
44
|
+
let info = req.server.info;
|
|
45
|
+
let location = info.uri + route;
|
|
46
|
+
if (info.host === '0.0.0.0') {
|
|
47
|
+
location = `${info.protocol}://${process.env.APPHOST}:${info.port}${route}`;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
let payload = {
|
|
51
|
+
url : `${process.env.VIYA_SERVER}/SASLogon/oauth/token`,
|
|
52
|
+
method: 'POST',
|
|
53
|
+
|
|
54
|
+
headers: {
|
|
55
|
+
// 'Authorization': 'Basic ' + Buffer.from(`${process.env.CLIENTID}:${process.env.CLIENTSECRET}`).toString('base64'),
|
|
56
|
+
'Accept' : 'application/json',
|
|
57
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
58
|
+
},
|
|
59
|
+
data: qs.stringify({
|
|
60
|
+
client_id : `${process.env.CLIENTID}`,
|
|
61
|
+
client_secret: `${process.env.CLIENTSECRET}`,
|
|
62
|
+
redirect_uri : `${location}`,
|
|
63
|
+
|
|
64
|
+
'grant_type': 'authorization_code',
|
|
65
|
+
code : req.query.code
|
|
66
|
+
})
|
|
67
|
+
};
|
|
68
|
+
try {
|
|
69
|
+
let r = await axios(payload);
|
|
70
|
+
return r.data;
|
|
71
|
+
} catch (err) {
|
|
72
|
+
console.log(err);
|
|
73
|
+
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
*/
|