Skip to content
This repository was archived by the owner on Jul 12, 2023. It is now read-only.

Commit 201d171

Browse files
whaughtsethvargo
andauthored
Load realm for system admin pages (#603)
* Load realm for system admin pages * select realm * Differentiate admin * remove duplication * comment * and * better if * remove the and * Update cmd/server/assets/admin/_nav.html Co-authored-by: Seth Vargo <[email protected]> Co-authored-by: Seth Vargo <[email protected]>
1 parent 4678bc0 commit 201d171

File tree

8 files changed

+85
-54
lines changed

8 files changed

+85
-54
lines changed

cmd/server/assets/admin/_nav.html

+23
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,27 @@
11
{{define "admin/navbar"}}
2+
<header class="mb-3">
3+
<div href="/" class="d-block px-3 py-2 text-center text-bold text-white admin-header">
4+
System admin
5+
</div>
6+
7+
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
8+
<div class="container">
9+
{{template "navtoggle" .}}
10+
<div class="collapse navbar-collapse" id="navbar">
11+
{{if .currentRealm}}
12+
<ul class="navbar-nav mr-auto">
13+
<li class="nav-item">
14+
<a class="nav-link" href="/home">&larr; Back to {{.currentRealm.Name}} </a>
15+
</li>
16+
</ul>
17+
{{end}}
18+
{{template "navdropdown" .}}
19+
</div>
20+
</div>
21+
</nav>
22+
</header>
23+
24+
225
<ul class="nav nav-pills justify-content-center mb-3">
326
<li class="nav-item">
427
<a class="nav-link{{if stringContains .currentPath "/admin/realms"}} active{{end}}" href="/admin/realms">Realms</a>

cmd/server/assets/admin/info.html

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
</head>
88

99
<body class="bg-light">
10-
{{template "navbar" .}}
1110
{{template "admin/navbar" .}}
1211

1312
<main role="main" class="container">

cmd/server/assets/admin/realms/index.html

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
</head>
1010

1111
<body class="bg-light">
12-
{{template "navbar" .}}
1312
{{template "admin/navbar" .}}
1413

1514
<main role="main" class="container">

cmd/server/assets/admin/realms/new.html

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
</head>
1111

1212
<body class="bg-light">
13-
{{template "navbar" .}}
1413
{{template "admin/navbar" .}}
1514

1615
<main role="main" class="container">

cmd/server/assets/admin/users/index.html

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
</head>
1111

1212
<body class="bg-light">
13-
{{template "navbar" .}}
1413
{{template "admin/navbar" .}}
1514

1615
<main role="main" class="container">

cmd/server/assets/admin/users/new.html

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
</head>
1212

1313
<body class="bg-light">
14-
{{template "navbar" .}}
1514
{{template "admin/navbar" .}}
1615

1716
<main role="main" class="container">

cmd/server/assets/header.html

+61-49
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
background-color: #0055b1;
3434
}
3535

36+
div.admin-header {
37+
background-color:#D66402
38+
}
39+
3640
a.input-group-text:hover {
3741
cursor: pointer;
3842
text-decoration: none;
@@ -179,6 +183,7 @@
179183
</style>
180184
{{end}}
181185

186+
{{/* defines the top navigation bar */}}
182187
{{define "navbar"}}
183188
<header class="mb-3">
184189
{{if .currentRealm}}
@@ -189,72 +194,79 @@
189194

190195
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
191196
<div class="container">
192-
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
193-
aria-expanded="false" aria-label="Toggle navigation">
194-
<span class="navbar-toggler-icon"></span>
195-
</button>
197+
{{template "navtoggle" .}}
196198

197199
<div class="collapse navbar-collapse" id="navbar">
198-
{{if .currentUser}}
200+
{{if .currentRealm}}
199201
<ul class="navbar-nav mr-auto">
200-
{{if .currentRealm}}
201202
<li class="nav-item">
202203
<a class="nav-link" href="/home">Issue code</a>
203204
</li>
204205
<li class="nav-item">
205206
<a class="nav-link" href="/code/status">Check code status</a>
206207
</li>
207-
{{end}}
208-
</ul>
209-
210-
<ul class="navbar-nav ml-auto">
211-
<li class="nav-item dropdown">
212-
<a class="nav-link dropdown-toggle" href="#" id="profile-menu" data-toggle="dropdown" aria-haspopup="true"
213-
aria-expanded="false">
214-
{{.currentUser.Name}}
215-
</a>
216-
217-
<div class="dropdown-menu" aria-labelledby="profile-menu">
218-
{{if .currentRealm }}
219-
{{if .currentUser.CanAdminRealm .currentRealm.ID}}
220-
<h6 class="dropdown-header">Manage realm</h6>
221-
<a class="dropdown-item" href="/apikeys">API keys</a>
222-
<a class="dropdown-item" href="/realm/keys">Signing keys</a>
223-
<a class="dropdown-item" href="/realm/stats">Statistics</a>
224-
<a class="dropdown-item" href="/users">Users</a>
225-
<a class="dropdown-item" href="/realm/settings#general">Settings</a>
226-
<div class="dropdown-divider"></div>
227-
{{end}}
228-
{{end}}
229-
230-
{{if .currentUser.Admin}}
231-
<h6 class="dropdown-header">System admin</h6>
232-
<a class="dropdown-item" href="/admin/realms">Realms</a>
233-
<a class="dropdown-item" href="/admin/users">Admins</a>
234-
<div class="dropdown-divider"></div>
235-
{{end}}
236-
237-
<h6 class="dropdown-header">Actions</h6>
238-
{{if gt (len .currentUser.Realms) 1}}
239-
<a class="dropdown-item" href="/login/select-realm">Change realm</a>
240-
{{end}}
241-
<a class="dropdown-item" href="/signout">Sign out</a>
242-
</div>
243-
</li>
244-
</ul>
245-
{{else}}
246-
<ul class="navbar-nav ml-auto">
247-
<li class="nav-item">
248-
<a class="nav-link" href="/">Sign in</a>
249-
</li>
250208
</ul>
251209
{{end}}
210+
{{template "navdropdown" .}}
252211
</div>
253212
</div>
254213
</nav>
255214
</header>
256215
{{end}}
257216

217+
{{/* defines the hamburger menu toggle for mobile */}}
218+
{{define "navtoggle"}}
219+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
220+
aria-expanded="false" aria-label="Toggle navigation">
221+
<span class="navbar-toggler-icon"></span>
222+
</button>
223+
{{end}}
224+
225+
{{/* defines the user dropdown menu */}}
226+
{{define "navdropdown"}}
227+
<ul class="navbar-nav ml-auto">
228+
{{if .currentUser}}
229+
<li class="nav-item dropdown">
230+
<a class="nav-link dropdown-toggle" href="#" id="profile-menu" data-toggle="dropdown" aria-haspopup="true"
231+
aria-expanded="false">
232+
{{.currentUser.Name}}
233+
</a>
234+
235+
<div class="dropdown-menu" aria-labelledby="profile-menu">
236+
{{if .currentRealm }}
237+
{{if .currentUser.CanAdminRealm .currentRealm.ID}}
238+
<h6 class="dropdown-header">Manage realm</h6>
239+
<a class="dropdown-item" href="/apikeys">API keys</a>
240+
<a class="dropdown-item" href="/realm/keys">Signing keys</a>
241+
<a class="dropdown-item" href="/realm/stats">Statistics</a>
242+
<a class="dropdown-item" href="/users">Users</a>
243+
<a class="dropdown-item" href="/realm/settings#general">Settings</a>
244+
<div class="dropdown-divider"></div>
245+
{{end}}
246+
{{end}}
247+
248+
{{if .currentUser.Admin}}
249+
<h6 class="dropdown-header">System admin</h6>
250+
<a class="dropdown-item" href="/admin/realms">Realms</a>
251+
<a class="dropdown-item" href="/admin/users">Admins</a>
252+
<div class="dropdown-divider"></div>
253+
{{end}}
254+
255+
<h6 class="dropdown-header">Actions</h6>
256+
{{if gt (len .currentUser.Realms) 1}}
257+
<a class="dropdown-item" href="/login/select-realm">{{if .currentRealm}}Change realm{{else}}Select realm{{end}}</a>
258+
{{end}}
259+
<a class="dropdown-item" href="/signout">Sign out</a>
260+
</div>
261+
</li>
262+
{{else}}
263+
<li class="nav-item">
264+
<a class="nav-link" href="/">Sign in</a>
265+
</li>
266+
{{end}}
267+
</ul>
268+
{{end}}
269+
258270
{{define "scripts"}}
259271
<script type="text/javascript">
260272
$(function() {

cmd/server/main.go

+1
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,7 @@ func realMain(ctx context.Context) error {
365365
{
366366
adminSub := r.PathPrefix("/admin").Subrouter()
367367
adminSub.Use(requireAuth)
368+
adminSub.Use(loadCurrentRealm)
368369
adminSub.Use(requireVerified)
369370
adminSub.Use(requireSystemAdmin)
370371
adminSub.Use(rateLimit)

0 commit comments

Comments
 (0)