@sassoftware/viya-serverjs
Version:
Easy to use app server for SAS Viya applications
53 lines (45 loc) • 2.01 kB
JavaScript
/*
* Copyright © 2019, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import codeAuth from './codeAuth';
let debug = require('debug')('getapp');
async function getApp (options, req, h) {
if (process.env.AUTHFLOW === 'implicit') {
let x = `${process.env.VIYA_SERVER}/SASLogon/oauth/authorize?response_type=token&client_id=${process.env.CLIENTID}`;
let redirect = `${process.env.APPNAME}/callback`;
let redirectUri;
if (process.env.REDIRECT != null) {
redirect = process.env.REDIRECT.trim();
if (redirect.indexOf('http') === -1) {
redirect = `${process.env.APPNAME}/${redirect}`;
let protocol = process.env.HTTPS === 'true' ? 'https://' : 'http://';
redirectUri = `${protocol}${process.env.APPHOST}:${process.env.APPPORT}/${redirect}?host=${process.env.VIYA_SERVER}`;
} else {
redirectUri = `${redirect}?host=${process.env.VIYA_SERVER}`;
}
}
debug(process.env.REDIRECT);
let url = `${x}&redirect_uri=${redirectUri}`;
debug(url);
return h.redirect(url);
} else if (process.env.AUTHFLOW === 'server') {
debug('calling codeauth');
return codeAuth(req, h, options);
} else {
debug('default processing in getapp');
console.log('Processing non authenticated use case');
let indexHTML = process.env.APPENTRY == null ? 'index.html' : process.env.APPENTRY;
if (process.env.REDIRECT != null) {
indexHTML = process.env.REDIRECT;
}
console.log('redirecting to ', indexHTML);
if (indexHTML.startsWith('/')) {
indexHTML = `/${process.env.APPNAME}${indexHTML}`;
return h.redirect(indexHTML);
} else {
return h.file(indexHTML);
}
}
}
export default getApp;