Commit 55f56418 authored by Niall Sheridan's avatar Niall Sheridan
Browse files

Use bootstrap

Move templates and static under server/
parent a6e42d89
......@@ -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.
This diff is collapsed.
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>
`
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment