first working version

This commit is contained in:
ston1th 2022-07-10 15:51:31 +02:00
commit c9dfecc519
21 changed files with 296 additions and 178 deletions

View file

@ -1,15 +1,19 @@
{{define "body"}}
{{if .Data}}
<div class="row">
<div class="col-xs-4 offset-4">
<div class="col-xs-4 offset-3">
<div class="card border-primary mx-auto">
<div class="card-header">
<strong>{{.BodyTitle}}</strong>
<strong>{{.BodyTitle}} - {{.Data.Info.Client.ClientName}}</strong>
</div>
<div class="card-body">
<pre>
{{.Data.Info}}
</pre>
The client <code>{{.Data.Info.Client.ClientName}}</code> is requesting access to your data.<br>
Requested Scopes:
<ul>
{{range $item := .Data.Info.RequestedScope}}
<li>{{$item}}</li>
{{end}}
</ul>
<form class="form-horizontal" action="/consent" method="post">
<input type="hidden" name="token" value="{{.Token}}">
<input type="hidden" name="consent_challenge" value="{{.Data.ConsentChallenge}}">

View file

@ -0,0 +1,17 @@
{{define "body"}}
<div class="page-header">
<div class="row">
<div class="col-xs-4 offset-4">
<div class="card border-danger mx-auto">
<div class="card-header">
<strong>403 - Forbidden</strong>
</div>
<div class="card-body">
<h5>Access to this page is restricted</h5>
<a href="/" class="btn btn-sm btn-primary">Back</a>
</div>
</div>
</div>
</div>
</div>
{{end}}

View file

@ -9,7 +9,9 @@
<div class="card-body">
<form class="form-horizontal" action="/login" method="post">
<input type="hidden" name="token" value="{{.Token}}">
{{if .Data}}
<input type="hidden" name="login_challenge" value="{{.Data.LoginChallenge}}">
{{end}}
<div class="form-group">
<label class="col-form-label" for="user">Username</label>
<input class="form-control input-sm" type="text" id="user" name="user" value="{{.Data.User}}" autofocus required>

View file

@ -9,7 +9,9 @@
<div class="card-body">
<form class="form-horizontal" action="/totp" method="post">
<input type="hidden" name="token" value="{{.Token}}">
{{if .Data}}
<input type="hidden" name="login_challenge" value="{{.Data.LoginChallenge}}">
{{end}}
<div class="form-group">
<label class="col-form-label" for="pin">PIN</label>
<input class="form-control input-sm" type="text" id="pin" name="pin" autocomplete="off" autofocus required>

View file

@ -1,11 +1,13 @@
{{define "menu"}}
{{if .Admin}}
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" href="/users">Users</a></li>
</ul>
{{end}}
<ul class="nav navbar-nav ml-auto">
{{if .Login}}
{{if .Admin}}
<li class="nav-item"><a class="nav-link" href="/users">Users</a></li>
{{else}}
<li class="nav-item"><a class="nav-link" href="/user/sessions/{{.User}}">Sessions</a></li>
<li class="nav-item"><a class="nav-link" href="/user/edit/{{.User}}">Profile</a></li>
{{end}}
<li class="nav-item"><a class="nav-link" href="/logout">Logout</a></li>
{{else}}
<li class="nav-item"><a class="nav-link" href="/login">Login</a></li>

View file

@ -8,7 +8,7 @@
<strong>Delete {{.Data.Username}}?</strong>
</div>
<div class="card-body">
<p>You are about to delete user <a href="/{{.Data.Username}}">{{.Data.Username}}</a>.</p>
<p>You are about to delete user <a href="/user/edit/{{.Data.Username}}">{{.Data.Username}}</a>.</p>
<form class="form-horizontal" action="/user/del/{{.Data.Username}}" method="post">
<input type="hidden" name="token" value="{{.Token}}">
<button class="btn btn-sm btn-danger" type="submit">Delete</button>

View file

@ -41,6 +41,16 @@
<label class="custom-control-label" for="admin">Admin Privileges</label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
{{if .Data.Disabled}}
<input type="checkbox" class="custom-control-input" id="disabled" name="disabled" value="0" checked>
{{else}}
<input type="checkbox" class="custom-control-input" id="disabled" name="disabled" value="0">
{{end}}
<label class="custom-control-label" for="disabled">Disabled</label>
</div>
</div>
{{end}}
<button class="btn btn-sm btn-primary" type="submit">Update</button>
{{if .Admin}}

View file

@ -30,6 +30,12 @@
<label class="custom-control-label" for="admin">Admin Privileges</label>
</div>
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="disabled" name="disabled" value="0">
<label class="custom-control-label" for="disabled">Disabled</label>
</div>
</div>
<button class="btn btn-sm btn-primary" type="submit">Create</button>
<a href="/users" class="btn btn-sm btn-primary">Back</a>
</form>

View file

@ -0,0 +1,50 @@
{{define "body"}}
<div class="page-header">
<div class="row">
<h2>{{.BodyTitle}}</h2>
</div>
</div>
{{$user := .User}}
{{$token := .Token}}
{{if .Data}}
<div class="row mb-3">
<div class="col-xs-5">
<form class="form-horizontal" action="/user/sessions/{{$user}}" method="post">
<input type="hidden" name="token" value="{{$token}}">
<input type="hidden" name="all" value="all">
<button class="btn btn-sm btn-danger" type="submit">Revoke All</button>
</form>
</div>
</div>
{{end}}
<div class="row">
<div class="col">
{{if .Data}}
<table class="table table-hover">
<thead><tr>
<th scope="col">Client Name</th>
<th scope="col">Created</th>
<th scope="col">Options</th>
</tr></thead>
<tbody>
{{range $name, $s := .Data}}
<tr>
<th scope="row">{{$name}}</th>
<td>{{$s.Time}}</td>
<td>
<form class="form-horizontal" action="/user/sessions/{{$user}}" method="post">
<input type="hidden" name="token" value="{{$token}}">
<input type="hidden" name="client" value="{{$s.ID}}">
<button class="btn btn-sm btn-warning" type="submit">Revoke</button>
</form>
</td>
</tr>
{{end}}
</tbody>
</table>
{{else}}
No active sessions found.
{{end}}
</div>
</div>
{{end}}

View file

@ -31,13 +31,15 @@
<td>{{$item.Username}}</td>
<td>{{$item.Email}}</td>
<td>
{{if $item.Admin}}<span class="badge badge-danger">admin</span>{{end}}
{{if $item.Secret}}<span class="badge badge-success">totp</span>{{end}}
{{if eq $item.Locked 3}}<span class="badge badge-warning">locked</span>{{end}}
{{if $item.Admin}}<span class="badge badge-danger">admin</span>{{end}}
{{if $item.Disabled}}<span class="badge badge-warning">disabled</span>{{end}}
</td>
<td>
<div class="btn-group">
{{if $admin}}
<a class="btn btn-sm btn-primary" href="/user/sessions/{{$item.Username}}">Sessions</a>
<a class="btn btn-sm btn-primary" href="/user/edit/{{$item.Username}}">Edit</a>
<a class="btn btn-sm btn-danger" href="/user/del/{{$item.Username}}">Delete</a>
{{else}}