diff --git a/app/authenticated/route.js b/app/authenticated/route.js index 358873b0bb..c769029f9d 100644 --- a/app/authenticated/route.js +++ b/app/authenticated/route.js @@ -352,6 +352,18 @@ export default Route.extend(Preload, { }, testAuthToken() { + // If not embedded and not dev mode, then direct access is disabled + const isDev = get(this, 'app.environment') === 'development'; + const noDirectAccess = !isDev && !isEmbedded(); + + if (noDirectAccess) { + return Promise.reject({ + status: 410, + useVueDashboard: true, + dashboardLink: get(this, 'scope.dashboardBase') + }); + } + return this.access.testAuth() .catch(() => { set(this, `session.${ C.SESSION.BACK_TO }`, window.location.href); diff --git a/app/fail-whale/controller.js b/app/fail-whale/controller.js new file mode 100644 index 0000000000..66c200417d --- /dev/null +++ b/app/fail-whale/controller.js @@ -0,0 +1,11 @@ +import Controller from '@ember/controller'; + +export default Controller.extend({ + actions: { + gotoDashboard() { + const url = this.get('model.dashboardLink') || '/'; + + window.location.href = url; + }, + }, +}); diff --git a/app/fail-whale/template.hbs b/app/fail-whale/template.hbs index 3e4029bfbd..67887c9e95 100644 --- a/app/fail-whale/template.hbs +++ b/app/fail-whale/template.hbs @@ -1,15 +1,27 @@
-
-

{{t 'failWhalePage.header'}}

-
-

{{model.code}} {{#if model.status}}({{model.status}}){{/if}}

-

{{model.message}}

-

{{model.detail}}

-
- {{t 'failWhalePage.reloadButton' htmlSafe=true}} {{t 'failWhalePage.logoutButton'}} + {{#if model.useVueDashboard }} +
+

{{t 'legacyRemoved.title'}}

+
+

{{t 'legacyRemoved.message'}}

+
-
+ {{else}} +
+

{{t 'failWhalePage.header'}}

+
+

{{model.code}} {{#if model.status}}({{model.status}}){{/if}}

+

{{model.message}}

+

{{model.detail}}

+
+ {{t 'failWhalePage.reloadButton' htmlSafe=true}} {{t 'failWhalePage.logoutButton'}} +
+
+
+ {{/if}} {{#if settings.isRancher}}
diff --git a/scripts/patch-docker b/scripts/patch-docker new file mode 100755 index 0000000000..887cf53dba --- /dev/null +++ b/scripts/patch-docker @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +DIR=$(cd $(dirname $0)/..; pwd) + +CYAN="\033[96m" +YELLOW="\033[93m" +RESET="\033[0m" +BOLD="\033[1m" + +echo -e "${CYAN}${BOLD}==================================================${RESET}" +echo -e "${CYAN}${BOLD}Patch running Rancher Docker container with dev UI${RESET}" +echo -e "${CYAN}${BOLD}==================================================${RESET}" +echo "" +echo "This script will build the UI and copy the built UI into the specified running Rancher container" +echo "" + +if [ -z "$1" ]; then + echo -e "${YELLOW}Need ID of Rancher container to patch${RESET}" + exit 1 +fi + +DOCKER=$(docker version > /dev/null) +if [ $? -ne 0 ]; then + echo -e "${YELLOW}Can not run Docker commands - is Docker running?${RESET}" + exit 1 +fi + +CONTAINER=$1 + +SKIP_BUILD="false" + +if [ "$2" == "-s" ]; then + echo "Skipping build" + SKIP_BUILD="true" +fi + +# Check container exists and looks like a Rancher container +VERSION=$(docker exec ${CONTAINER} /bin/bash -c "printenv CATTLE_UI_VERSION") + +if [ $? -ne 0 ]; then + echo -e "${YELLOW}Could not get version env var from container - check the container ID${RESET}" + exit 1 +fi + +echo "UI version from existing container: ${VERSION}" + +# Check we have node and yarn installed + +node --version > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo -e "${YELLOW}node does not appear to be installed - this is required to build the UI${RESET}" + exit 1 +fi + +yarn --version > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo -e "${YELLOW}yarn does not appear to be installed - this is required to build the UI${RESET}" + exit 1 +fi + +if [ ! -d node_modules ]; then + echo -e "${YELLOW}node_modules folder does not exist - running yarn install${RESET}" + yarn install + echo -e "${CYAN}Building production build of the UI${RESET}" +fi + +rm -rf ${DIR}/dist +mkdir -p ${DIR}/dist + +UI_MODE="" RANCHER="" CATALOG="" ${DIR}/node_modules/.bin/ember build --environment=production --output-path=${DIR}/dist + +rm -f dist.tar +tar -cvf dist.tar dist/ + +docker exec -it ${CONTAINER} bash -c "cd /usr/share/rancher/ui; rm -rf *" +docker cp dist.tar ${CONTAINER}:/usr/share/rancher/ui +rm -f dist.tar + +docker exec -it ${CONTAINER} bash -c "cd /usr/share/rancher/ui; tar -xvf dist.tar --strip-components=1" + +echo "" +echo "All done" +echo -e "${YELLOW}Note: It is recommended to set the Rancher 'ui-offline-preferred' setting to 'Local' to ensure the embedded UI is always used${RESET}" +echo "" diff --git a/translations/en-us.yaml b/translations/en-us.yaml index ad3ef2d55c..1930925199 100644 --- a/translations/en-us.yaml +++ b/translations/en-us.yaml @@ -169,6 +169,13 @@ realmNames: euWest: EU West euEast: EU East + +## Error page for UI access removed ## +legacyRemoved: + title: The Legacy UI has been removed + message: Please use the new Rancher Dashboard UI + action: Goto Dashboard + ############################## # Routes ##############################