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

Load realm for system admin pages #603

Merged
merged 9 commits into from
Sep 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions cmd/server/assets/admin/_nav.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
{{define "admin/navbar"}}
<header class="mb-3">
<div href="/" class="d-block px-3 py-2 text-center text-bold text-white admin-header">
System admin
</div>

<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<div class="container">
{{template "navtoggle" .}}
<div class="collapse navbar-collapse" id="navbar">
{{if .currentRealm}}
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/home">&larr; Back to {{.currentRealm.Name}} </a>
</li>
</ul>
{{end}}
{{template "navdropdown" .}}
</div>
</div>
</nav>
</header>


<ul class="nav nav-pills justify-content-center mb-3">
<li class="nav-item">
<a class="nav-link{{if stringContains .currentPath "/admin/realms"}} active{{end}}" href="/admin/realms">Realms</a>
Expand Down
1 change: 0 additions & 1 deletion cmd/server/assets/admin/info.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
</head>

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

<main role="main" class="container">
Expand Down
1 change: 0 additions & 1 deletion cmd/server/assets/admin/realms/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
</head>

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

<main role="main" class="container">
Expand Down
1 change: 0 additions & 1 deletion cmd/server/assets/admin/realms/new.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
</head>

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

<main role="main" class="container">
Expand Down
1 change: 0 additions & 1 deletion cmd/server/assets/admin/users/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
</head>

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

<main role="main" class="container">
Expand Down
1 change: 0 additions & 1 deletion cmd/server/assets/admin/users/new.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
</head>

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

<main role="main" class="container">
Expand Down
110 changes: 61 additions & 49 deletions cmd/server/assets/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
background-color: #0055b1;
}

div.admin-header {
background-color:#D66402
}

a.input-group-text:hover {
cursor: pointer;
text-decoration: none;
Expand Down Expand Up @@ -179,6 +183,7 @@
</style>
{{end}}

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

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

<div class="collapse navbar-collapse" id="navbar">
{{if .currentUser}}
{{if .currentRealm}}
<ul class="navbar-nav mr-auto">
{{if .currentRealm}}
<li class="nav-item">
<a class="nav-link" href="/home">Issue code</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/code/status">Check code status</a>
</li>
{{end}}
</ul>

<ul class="navbar-nav ml-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="profile-menu" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
{{.currentUser.Name}}
</a>

<div class="dropdown-menu" aria-labelledby="profile-menu">
{{if .currentRealm }}
{{if .currentUser.CanAdminRealm .currentRealm.ID}}
<h6 class="dropdown-header">Manage realm</h6>
<a class="dropdown-item" href="/apikeys">API keys</a>
<a class="dropdown-item" href="/realm/keys">Signing keys</a>
<a class="dropdown-item" href="/realm/stats">Statistics</a>
<a class="dropdown-item" href="/users">Users</a>
<a class="dropdown-item" href="/realm/settings#general">Settings</a>
<div class="dropdown-divider"></div>
{{end}}
{{end}}

{{if .currentUser.Admin}}
<h6 class="dropdown-header">System admin</h6>
<a class="dropdown-item" href="/admin/realms">Realms</a>
<a class="dropdown-item" href="/admin/users">Admins</a>
<div class="dropdown-divider"></div>
{{end}}

<h6 class="dropdown-header">Actions</h6>
{{if gt (len .currentUser.Realms) 1}}
<a class="dropdown-item" href="/login/select-realm">Change realm</a>
{{end}}
<a class="dropdown-item" href="/signout">Sign out</a>
</div>
</li>
</ul>
{{else}}
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="/">Sign in</a>
</li>
</ul>
{{end}}
{{template "navdropdown" .}}
</div>
</div>
</nav>
</header>
{{end}}

{{/* defines the hamburger menu toggle for mobile */}}
{{define "navtoggle"}}
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
{{end}}

{{/* defines the user dropdown menu */}}
{{define "navdropdown"}}
<ul class="navbar-nav ml-auto">
{{if .currentUser}}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="profile-menu" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
{{.currentUser.Name}}
</a>

<div class="dropdown-menu" aria-labelledby="profile-menu">
{{if .currentRealm }}
{{if .currentUser.CanAdminRealm .currentRealm.ID}}
<h6 class="dropdown-header">Manage realm</h6>
<a class="dropdown-item" href="/apikeys">API keys</a>
<a class="dropdown-item" href="/realm/keys">Signing keys</a>
<a class="dropdown-item" href="/realm/stats">Statistics</a>
<a class="dropdown-item" href="/users">Users</a>
<a class="dropdown-item" href="/realm/settings#general">Settings</a>
<div class="dropdown-divider"></div>
{{end}}
{{end}}

{{if .currentUser.Admin}}
<h6 class="dropdown-header">System admin</h6>
<a class="dropdown-item" href="/admin/realms">Realms</a>
<a class="dropdown-item" href="/admin/users">Admins</a>
<div class="dropdown-divider"></div>
{{end}}

<h6 class="dropdown-header">Actions</h6>
{{if gt (len .currentUser.Realms) 1}}
<a class="dropdown-item" href="/login/select-realm">{{if .currentRealm}}Change realm{{else}}Select realm{{end}}</a>
{{end}}
<a class="dropdown-item" href="/signout">Sign out</a>
</div>
</li>
{{else}}
<li class="nav-item">
<a class="nav-link" href="/">Sign in</a>
</li>
{{end}}
</ul>
{{end}}

{{define "scripts"}}
<script type="text/javascript">
$(function() {
Expand Down
1 change: 1 addition & 0 deletions cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ func realMain(ctx context.Context) error {
{
adminSub := r.PathPrefix("/admin").Subrouter()
adminSub.Use(requireAuth)
adminSub.Use(loadCurrentRealm)
adminSub.Use(requireVerified)
adminSub.Use(requireSystemAdmin)
adminSub.Use(rateLimit)
Expand Down