Skip to content
Snippets Groups Projects
Commit 55f56418 authored by Niall Sheridan's avatar Niall Sheridan
Browse files

Use bootstrap

Move templates and static under server/
parent a6e42d89
Branches
Tags
No related merge requests found
Showing
with 16691 additions and 1 deletion
......@@ -29,8 +29,9 @@ import (
"github.com/nsheridan/cashier/server/config"
"github.com/nsheridan/cashier/server/fs"
"github.com/nsheridan/cashier/server/signer"
"github.com/nsheridan/cashier/server/static"
"github.com/nsheridan/cashier/server/store"
"github.com/nsheridan/cashier/templates"
"github.com/nsheridan/cashier/server/templates"
)
var (
......@@ -359,6 +360,7 @@ func main() {
r.Methods("GET").Path("/revoked").Handler(appHandler{ctx, listRevokedCertsHandler})
r.Methods("POST").Path("/admin/revoke").Handler(CSRF(appHandler{ctx, revokeCertHandler}))
r.Methods("GET").Path("/admin/certs").Handler(CSRF(appHandler{ctx, listAllCertsHandler}))
r.PathPrefix("/").Handler(http.FileServer(static.FS(true)))
logfile := os.Stderr
if config.Server.HTTPLogFile != "" {
logfile, err = os.OpenFile(config.Server.HTTPLogFile, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0660)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File added
This diff is collapsed.
File added
File added
File added
This diff is collapsed.
This diff is collapsed.
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')
\ No newline at end of file
This diff is collapsed.
package templates
// Certs lists all unexpired issued certificates.
const Certs = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Issued Certificates</title>
<!-- Bootstrap -->
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="page-header">
<h1>Issued SSH Certificates</h1>
</div>
<form action="/admin/revoke" method="post" id="form_revoke">
{{ .CSRF }}
<table class="table table-hover table-condensed">
<tr>
<th>ID</th>
<th>Created</th>
<th>Expires</th>
<th>Principals</th>
<th>Revoked</th>
<th>Revoke</th>
</tr>
{{range .Certs}}
<div class="checkbox">
<tr>
<td>{{.KeyID}}</td>
<td>{{.CreatedAt}}</td>
<td>{{.Expires}}</td>
<td>{{.Principals}}</td>
<td>{{.Revoked}}</td>
<td>
{{if not .Revoked}}
<input type="checkbox" value="{{.KeyID}}" name="cert_id" id="cert_id" />
{{end}}
</td>
</tr>
</div>
{{ end }}
</table>
</form>
<button class="btn btn-primary" type="submit" form="form_revoke" value="Submit">Submit</button>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="/static/js/bootstrap.min.js"></script>
</body>
</html>
`
package templates
// Token is the page users see when authenticated.
const Token = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Token</title>
<!-- Bootstrap -->
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
<!--
.code {
border: none;
font-family: monospace;
font-weight: bold;
height: auto;
margin: 12px 12px 12px 12px;
padding: 24px 12px 12px 12px;
resize: none;
text-align: center;
}
-->
</style>
</head>
<body>
<div class="container">
<div class="page-header">
<h1>Access Token</h1>
</div>
<div>
<textarea style="font-size: 15pt" class="form-control code" readonly spellcheck="false" onclick="this.focus();this.select();">{{.Token}}</textarea>
<h2>
The token will expire in &lt; 1 hour.
</h2>
</div>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="/static/js/bootstrap.min.js"></script>
</body>
</html>
`
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment