diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 8600b21557138a2b3a782d18c53d1f8942c2c73e..49ffb0214dc6e3d450048e81ae8dfbca0db4d555 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -13,10 +13,9 @@ import ( ) func handleIndex(ctx *fiber.Ctx) error { - binding := map[string]interface{}{ - templating.MustacheKeyLoggedIn: false, - templating.MustacheKeyCookieLifetime: cookies.CookieLifetime, - } + binding := homeBindingData() + binding[templating.MustacheKeyLoggedIn] = false + binding[templating.MustacheKeyCookieLifetime] = cookies.CookieLifetime providers := []map[string]string{} for _, p := range config.Get().Providers { pp := make(map[string]string, 2) @@ -25,11 +24,11 @@ func handleIndex(ctx *fiber.Ctx) error { providers = append(providers, pp) } binding["providers"] = providers - return ctx.Render("sites/index", binding, templating.LayoutMain) + return ctx.Render("sites/home", binding, templating.LayoutMain) } -func handleHome(ctx *fiber.Ctx) error { - binding := map[string]interface{}{ +func homeBindingData() map[string]interface{} { + return map[string]interface{}{ templating.MustacheKeyLoggedIn: true, templating.MustacheKeyRestrictionsGUI: true, templating.MustacheKeyHome: true, @@ -46,7 +45,10 @@ func handleHome(ctx *fiber.Ctx) error { templating.MustacheKeyPrefix: "createMT-", }, } - return ctx.Render("sites/home", binding, templating.LayoutMain) +} + +func handleHome(ctx *fiber.Ctx) error { + return ctx.Render("sites/home", homeBindingData(), templating.LayoutMain) } func handleSettings(ctx *fiber.Ctx) error { diff --git a/internal/server/web/partials/scripts.mustache b/internal/server/web/partials/scripts.mustache index 36638bfc474eda7e5e9380c9f53c8e74d5ddddb0..d241fb39dc1fdce48f8827232131181723ce6a29 100644 --- a/internal/server/web/partials/scripts.mustache +++ b/internal/server/web/partials/scripts.mustache @@ -1,3 +1,4 @@ +<script src="{{instance-url}}/static/js/lib/clipboard.min.js"></script> <script src="{{instance-url}}/static/js/utils.js"></script> <script src="{{instance-url}}/static/js/storage.js"></script> <script src="{{instance-url}}/static/js/discovery.js"></script> @@ -5,14 +6,14 @@ <script src="{{instance-url}}/static/js/login-check.js"></script> {{^logged-in}} <script src="{{instance-url}}/static/js/login.js"></script> + <script src="{{instance-url}}/static/js/home-not-logged-in.js"></script> {{/logged-in}} {{#logged-in}} - <script src="{{instance-url}}/static/js/lib/clipboard.min.js"></script> - <script src="{{instance-url}}/static/js/logged-in-utils.js"></script> - <script src="{{instance-url}}/static/js/lib/bootstrap4-toggle.min.js"></script> <script src="{{instance-url}}/static/js/logout.js"></script> + <script src="{{instance-url}}/static/js/home-logged-in.js"></script> {{/logged-in}} {{#home}} + <script src="{{instance-url}}/static/js/lib/bootstrap4-toggle.min.js"></script> <script src="{{instance-url}}/static/js/lib/user-agent.min.js"></script> <script src="{{instance-url}}/static/js/mt-helper.js"></script> <script src="{{instance-url}}/static/js/home.js"></script> diff --git a/internal/server/web/partials/style.mustache b/internal/server/web/partials/style.mustache index 086c622f74bc622f5a8b89207816ada7b5f0e1f5..b31ca6f139e3a9fcf6e6f29e0f126660868eb515 100644 --- a/internal/server/web/partials/style.mustache +++ b/internal/server/web/partials/style.mustache @@ -1,10 +1,6 @@ <link rel="stylesheet" href="{{instance-url}}/static/css/colors.css"> -{{#logged-in}} - <link rel="stylesheet" href="{{instance-url}}/static/css/mytoken-loggedin.css"> - <link rel="stylesheet" href="{{instance-url}}/static/css/lib/bootstrap4-toggle.min.css"> -{{/logged-in}} +<link rel="stylesheet" href="{{instance-url}}/static/css/lib/bootstrap4-toggle.min.css"> {{#consent}} - <link rel="stylesheet" href="{{instance-url}}/static/css/lib/bootstrap4-toggle.min.css"> <link rel="stylesheet" href="{{instance-url}}/static/css/capabilities.css"> {{/consent}} {{#settings-ssh}} diff --git a/internal/server/web/sites/home.mustache b/internal/server/web/sites/home.mustache index 1b54e2b0c7db104a871df5ce77249cb196e19b1a..1b9a1b158f709372aca939f674827b6cfdf23d5e 100644 --- a/internal/server/web/sites/home.mustache +++ b/internal/server/web/sites/home.mustache @@ -1,33 +1,40 @@ <div class="card"> <div class="card-header"> <ul class="nav nav-tabs card-header-tabs"> + {{#logged-in}} + <li class="nav-item"> + <a class="nav-link active" id="at-tab" data-toggle="tab" href="#at" role="tab" aria-controls="at" + aria-selected="true">Access Token</a> + </li> + {{/logged-in}} <li class="nav-item"> - <a class="nav-link active" id="at-tab" data-toggle="tab" href="#at" role="tab" aria-controls="at" - aria-selected="true">Access Token</a> - </li> - <li class="nav-item"> - <a class="nav-link" id="mt-tab" data-toggle="tab" href="#mt" role="tab" aria-controls="mt" - aria-selected="false">Create Mytoken</a> + <a class="nav-link{{^logged-in}} active{{/logged-in}}" id="mt-tab" data-toggle="tab" href="#mt" + role="tab" aria-controls="mt" aria-selected="false">Create Mytoken</a> </li> <li class="nav-item"> <a class="nav-link" id="info-tab" data-toggle="tab" href="#info" role="tab" aria-controls="info" aria-selected="false">Tokeninfo</a> </li> - <li class="nav-item"> - <a class="nav-link" id="list-mts-tab" data-toggle="tab" href="#list-mts" role="tab" - aria-controls="list-mts" aria-selected="false">My Mytokens</a> - </li> <li class="nav-item"> <a class="nav-link" id="tc-tab" data-toggle="tab" href="#transfer" role="tab" aria-controls="transfer" aria-selected="false">Exchange Transfercode</a> </li> + {{#logged-in}} + <li class="nav-item"> + <a class="nav-link" id="list-mts-tab" data-toggle="tab" href="#list-mts" role="tab" + aria-controls="list-mts" aria-selected="false">My Mytokens</a> + </li> + {{/logged-in}} </ul> </div> <div class="card-body tab-content"> - <div class="tab-pane show active" id="at" role="tabpanel" aria-labelledby="at-tab"> - {{> create-at}} - </div> - <div class="tab-pane bg-secondary break-out" id="mt" role="tabpanel" aria-labelledby="mt-tab"> + {{#logged-in}} + <div class="tab-pane show active" id="at" role="tabpanel" aria-labelledby="at-tab"> + {{> create-at}} + </div> + {{/logged-in}} + <div class="tab-pane bg-secondary break-out{{^logged-in}} active{{/logged-in}}" id="mt" role="tabpanel" + aria-labelledby="mt-tab"> <div class="bg-secondary "> {{> create-mt}} </div> @@ -35,11 +42,19 @@ <div class="tab-pane" id="info" role="tabpanel" aria-labelledby="info-tab"> {{> tokeninfo}} </div> - <div class="tab-pane" id="list-mts" role="tabpanel" aria-labelledby="list-mts-tab"> - {{> list-mts}} - </div> <div class="tab-pane" id="transfer" role="tabpanel" aria-labelledby="tc-tab"> {{> transfercode}} </div> + {{#logged-in}} + <div class="tab-pane" id="list-mts" role="tabpanel" aria-labelledby="list-mts-tab"> + {{> list-mts}} + </div> + {{/logged-in}} </div> -</div> \ No newline at end of file +</div> + +{{^logged-in}} + <script> + let cookieLifetime = {{cookie-lifetime}}; + </script> +{{/logged-in}} diff --git a/internal/server/web/sites/index.mustache b/internal/server/web/sites/index.mustache deleted file mode 100644 index 731309b621b442a92baf3b7e2aab18fe0ceb0211..0000000000000000000000000000000000000000 --- a/internal/server/web/sites/index.mustache +++ /dev/null @@ -1,15 +0,0 @@ -<h1>Welcome to the mytoken service</h1> - -<p> - This is a demo instance of the mytoken service. This service is currently under active development.<br> - For more information refer to: <a href="https://github.com/oidc-mytoken/server">https://github.com/oidc-mytoken/server</a> -</p> -<p> - On this web page you can easily obtain OpenID Connect access tokens. You can do the same on the command line with - our - <a href="https://github.com/oidc-mytoken/client">command line client</a>. -</p> - -<script> - let cookieLifetime = {{cookie-lifetime}}; -</script> \ No newline at end of file diff --git a/internal/server/web/static/css/mytoken-loggedin.css b/internal/server/web/static/css/mytoken-loggedin.css deleted file mode 100644 index 628ca4fa1b5d78406dd30efa7b5ee427d83d3077..0000000000000000000000000000000000000000 --- a/internal/server/web/static/css/mytoken-loggedin.css +++ /dev/null @@ -1,56 +0,0 @@ -.hover-text { - display: none; -} - -.hover-item:hover .hover-text { - display: inline-block; -} - -.hover-item:hover .non-hover-text { - display: none; -} - -span.user-agent i + i { - padding-left: 1em; -} - -@media (min-width: 1440px) { - .break-out { - margin: -1.25rem -125px; - padding: 1.25rem; - } -} - -@media (min-width: 1600px) { - .break-out { - margin: -1.25rem -225px; - padding: 1.25rem; - } -} - -.btn-copy { - position: absolute; - margin-top: -28px; - right: -8px; -} - -.btn-copy-inline { - position: absolute; - right: 8px; -} - -#sshHostConfigCopy { - margin-top: 0; - right: 15px; -} - -.btn-reload { - position: absolute; - margin-top: -28px; - right: 14px; -} - -.token-fold { - cursor: pointer; - user-select: none; -} \ No newline at end of file diff --git a/internal/server/web/static/css/mytoken.css b/internal/server/web/static/css/mytoken.css index 71720f64ccc9754c36297947ddfbf0af9309f1cb..9e409844c2b37707ea435194668a74ce4f1241bf 100644 --- a/internal/server/web/static/css/mytoken.css +++ b/internal/server/web/static/css/mytoken.css @@ -74,4 +74,61 @@ hr { .svg-icon { width: 1em; height: 1em; -} \ No newline at end of file +} + +.hover-text { + display: none; +} + +.hover-item:hover .hover-text { + display: inline-block; +} + +.hover-item:hover .non-hover-text { + display: none; +} + +span.user-agent i + i { + padding-left: 1em; +} + +@media (min-width: 1440px) { + .break-out { + margin: -1.25rem -125px; + padding: 1.25rem; + } +} + +@media (min-width: 1600px) { + .break-out { + margin: -1.25rem -225px; + padding: 1.25rem; + } +} + +.btn-copy { + position: absolute; + margin-top: -28px; + right: -8px; +} + +.btn-copy-inline { + position: absolute; + right: 8px; +} + +#sshHostConfigCopy { + margin-top: 0; + right: 15px; +} + +.btn-reload { + position: absolute; + margin-top: -28px; + right: 14px; +} + +.token-fold { + cursor: pointer; + user-select: none; +} diff --git a/internal/server/web/static/js/home-logged-in.js b/internal/server/web/static/js/home-logged-in.js new file mode 100644 index 0000000000000000000000000000000000000000..1e35b3fde0ccaaa37a1249fb75fd5a66214a0e99 --- /dev/null +++ b/internal/server/web/static/js/home-logged-in.js @@ -0,0 +1,9 @@ +$(function () { + chainFunctions( + checkIfLoggedIn, + initAT, + initCreateMT, + initTokeninfo, + ); + openCorrectTab(); +}) diff --git a/internal/server/web/static/js/home-not-logged-in.js b/internal/server/web/static/js/home-not-logged-in.js new file mode 100644 index 0000000000000000000000000000000000000000..76b08b28dde888d3effd40c2f097a8a0c9bd4f86 --- /dev/null +++ b/internal/server/web/static/js/home-not-logged-in.js @@ -0,0 +1,7 @@ +$(function () { + chainFunctions( + initCreateMT, + initTokeninfo, + ); + openCorrectTab(); +}) diff --git a/internal/server/web/static/js/home.js b/internal/server/web/static/js/home.js index 7dc685c79624a6fa06779da10806ad9754c7f158..203feb71704a988b68e89ca053545c616a7cb057 100644 --- a/internal/server/web/static/js/home.js +++ b/internal/server/web/static/js/home.js @@ -1,10 +1,4 @@ -$(function () { - chainFunctions( - checkIfLoggedIn, - initAT, - initCreateMT, - initTokeninfo, - ); +function openCorrectTab() { // https://stackoverflow.com/a/17552459 // Javascript to enable link to tab let url = document.location.toString(); @@ -15,7 +9,7 @@ $(function () { } $('.nav-tabs a[href="#' + hash + '"]').tab('show'); } -}) +} // With HTML5 history API, we can easily prevent scrolling! diff --git a/internal/server/web/static/js/logged-in-utils.js b/internal/server/web/static/js/logged-in-utils.js deleted file mode 100644 index 60582dd34560372ed1642fd91322d61525eb37b6..0000000000000000000000000000000000000000 --- a/internal/server/web/static/js/logged-in-utils.js +++ /dev/null @@ -1,8 +0,0 @@ -let clipboard = new ClipboardJS('.copier'); -clipboard.on('success', function (e) { - e.clearSelection(); - let el = $(e.trigger); - let originalText = el.attr('data-original-title'); - el.attr('data-original-title', 'Copied!').tooltip('show'); - el.attr('data-original-title', originalText); -}); diff --git a/internal/server/web/static/js/utils.js b/internal/server/web/static/js/utils.js index 2f53d7725b1bdae3283330ce34f2870216a46d78..63d7b6437df5e8e395dbbe4c9f90c31d548eb1e2 100644 --- a/internal/server/web/static/js/utils.js +++ b/internal/server/web/static/js/utils.js @@ -109,4 +109,11 @@ function prefixId(id, prefix = "") { return '#' + prefix + escapeSelector(id); } - +let clipboard = new ClipboardJS('.copier'); +clipboard.on('success', function (e) { + e.clearSelection(); + let el = $(e.trigger); + let originalText = el.attr('data-original-title'); + el.attr('data-original-title', 'Copied!').tooltip('show'); + el.attr('data-original-title', originalText); +});