Newer
Older
wg-portal / cmd / wg-portal / assets / tpl / prt_nav.gohtml
@Christoph Haas Christoph Haas on 3 Feb 2022 4 KB wip: interface import and creation
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
    <div class="container-fluid">
        <a class="navbar-brand" href="/"><img src="{{$.Static.WebsiteLogo}}" alt="{{$.Static.CompanyName}}"/></a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#topNavbar" aria-controls="topNavbar" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <div id="topNavbar" class="collapse navbar-collapse">
            <ul class="navbar-nav me-auto">
                <li class="nav-spacer"></li>
                {{with eq $.Session.LoggedIn true}}{{with eq $.Session.IsAdmin true}}
                {{with eq $.Route "/admin/"}}
                <form class="d-flex" method="get">
                    <input class="form-control me-sm-2" name="search" type="search" placeholder="Search" value="{{index $.Session.Search "peers"}}">
                    <button class="btn btn-outline-success my-2 my-sm-0" type="submit"><i class="fa fa-search"></i></button>
                </form>
                {{end}}
                {{with eq $.Route "/admin/users"}}
                <form class="d-flex" method="get">
                    <input class="form-control me-sm-2" name="search" type="search" placeholder="Search" value="{{index $.Session.Search "users"}}">
                    <button class="btn btn-outline-success my-2 my-sm-0" type="submit"><i class="fa fa-search"></i></button>
                </form>
                {{end}}
                {{end}}{{end}}
            </ul>

            <div class="navbar-nav d-flex justify-content-end">
                {{with eq $.Session.LoggedIn true}}{{with eq $.Session.IsAdmin true}}
                {{with startsWith $.Route "/admin/"}}
                <a class="nav-link" href="/admin/interface/new" title="Add new interface"><i class="fas fa-plus-square text-large"></i></a>
                {{with $.Interfaces}}
                <form class="d-flex" method="get">
                    <select name="device" id="inputDevice" class="form-select device-selector me-4">
                        {{range $cnt, $i := $.Interfaces}}
                        <option value="{{$i.Identifier}}" {{if eq $i.Identifier $.Session.InterfaceIdentifier}}selected{{end}}>{{$i.Identifier}} {{if and (ne $i.DisplayName "") (ne $i.Identifier $i.DisplayName)}}({{$i.DisplayName}}){{end}}</option>
                        {{end}}
                    </select>
                </form>
                {{end}}
                {{end}}
                {{end}}{{end}}
                {{if eq $.Session.LoggedIn true}}
                <div class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">{{$.Session.Firstname}} {{$.Session.Lastname}}</a>
                    <div class="dropdown-menu">
                        {{with eq $.Session.LoggedIn true}}{{with eq $.Session.IsAdmin true}}
                            <a class="dropdown-item" href="/admin/"><i class="fas fa-cogs"></i> Administration</a>
                            <a class="dropdown-item" href="/admin/users/"><i class="fas fa-users-cog"></i> User Management</a>
                            <div class="dropdown-divider"></div>
                        {{end}}{{end}}
                        <a class="dropdown-item" href="/user/profile"><i class="fas fa-user"></i> Profile</a>
                        <div class="dropdown-divider"></div>
                        <a class="dropdown-item" href="/auth/logout"><i class="fas fa-sign-out-alt"></i> Logout</a>
                    </div>
                </div>
                {{else}}
                <div class="nav-item">
                    <a href="/auth/login" class="nav-link"><i class="fas fa-sign-in-alt fa-sm fa-fw me-2"></i>Login</a></li>
                </div>
                {{end}}
            </div><!--/.justify-content-end-->
        </div><!--/.navbar-collapse -->
    </div><!--/.container-fluid -->
</nav>
{{if $.Interface}}{{if not (isConfigValid $.Interface)}}
<div class="container">
    <div class="alert alert-danger">Warning: WireGuard Interface {{$.Interface.Identifier}} is not fully configured! Configurations may be incomplete and non functional!</div>
</div>
{{end}}{{end}}