@{
Layout = null;
var title = ViewBag.Title as string ?? "管理后台";
var currentController = (ViewContext.RouteData.Values["controller"] as string) ?? string.Empty;
string IsActive(string ctrl) => string.Equals(currentController, ctrl, StringComparison.OrdinalIgnoreCase) ? "active" : string.Empty;
}
<!DOCTYPE html>
<html lang="zh-CN" data-bs-theme="auto">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>@title - Dpz Admin</title>
<link rel="icon" type="image/png" href="~/favicon.png"/>
<link rel="stylesheet" href="https://dpangzi.com/library/bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://dpangzi.com/library/bootstrap-icons/bootstrap-icons.min.css"/>
<link href="https://dpangzi.com/core/lib/layui/css/layui.css" rel="stylesheet">
<link rel="stylesheet" href="~/css/admin.css" asp-append-version="true"/>
<link id="layui_theme_css" rel="stylesheet">
@await RenderSectionAsync("Styles", required: false)
<!--[if IE]>
<script>document.documentElement.setAttribute('data-bs-theme', 'light');</script><![endif]-->
</head>
<body>
<header class="border-bottom">
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand fw-semibold" href="@Url.Content("~/")">Dpz.Auth</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#adminNavbar"
aria-controls="adminNavbar" aria-expanded="false" aria-label="切换导航">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="adminNavbar">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link @IsActive("Application")" href="@Url.Action("Index", "Application")"
@(IsActive("Application") == "active" ? "aria-current=\"page\"" : null)>
<i class="bi bi-grid me-1"></i> 客户端管理
</a>
</li>
<li class="nav-item">
<a class="nav-link @IsActive("Authorization")"
href="@Url.Action("Index", "AuthorizationManage")"
@(IsActive("Authorization") == "active" ? "aria-current=\"page\"" : null)>
<i class="bi bi-shield-check me-1"></i> 授权管理
</a>
</li>
<li class="nav-item">
<a class="nav-link @IsActive("Token")" href="@Url.Action("Index", "Token")"
@(IsActive("Token") == "active" ? "aria-current=\"page\"" : null)>
<i class="bi bi-key me-1"></i> Token管理
</a>
</li>
<li class="nav-item">
<a class="nav-link @IsActive("AccessRequest")" href="@Url.Action("Index", "AccessRequest")"
@(IsActive("AccessRequest") == "active" ? "aria-current=\"page\"" : null)>
<i class="bi bi-person-check me-1"></i> 申请审核
</a>
</li>
<li class="nav-item">
<a class="nav-link @IsActive("Grant")" href="@Url.Action("Index", "Grant")"
@(IsActive("Grant") == "active" ? "aria-current=\"page\"" : null)>
<i class="bi bi-person-plus me-1"></i> 主动授权
</a>
</li>
</ul>
<div class="d-flex gap-2">
<a class="btn btn-secondary btn-sm" href="@Url.Action("Index", "Home")">首页</a>
<a class="btn btn-primary btn-sm" href="#">退出</a>
</div>
</div>
</div>
</nav>
</header>
<main class="container-fluid py-4">
@RenderBody()
</main>
<footer class="border-top py-3">
<div class="container-xxl text-body-secondary small">
© @DateTime.Now.Year by Dpz.Auth
</div>
</footer>
<script src="https://dpangzi.com/library/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="https://dpangzi.com/core/lib/layui/layui.js"></script>
<script src="~/js/layout.js" asp-append-version="true"></script>
<template id="dpzActionDialogTemplate">
<div class="dpz-modal-overlay">
<div class="dpz-modal-card" role="dialog" aria-modal="true">
<div class="dpz-modal-header">
<h2 class="dpz-modal-title"></h2>
<p class="dpz-modal-desc"></p>
</div>
<div class="dpz-modal-body"></div>
<div class="dpz-modal-footer">
<button type="button" class="dpz-modal-btn dpz-btn-cancel">取消</button>
<button type="button" class="dpz-modal-btn dpz-btn-confirm">确认</button>
</div>
</div>
</div>
</template>
<script>
</script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>