@using System.Reflection
@using Dpz.Core.EnumLibrary
@model Dpz.Core.Public.ViewModel.VmUserInfo?
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="zh-Hans">
<head>
<title>首页 - 认证中心</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="@Url.Content("~/css/global.css")" asp-append-version="true" />
<link rel="stylesheet" href="https://dpangzi.com/library/bootstrap-icons/bootstrap-icons.min.css"/>
</head>
<body class="landing-page">
<header class="hero">
<div class="content-container">
<h1 class="hero-title">
统一身份认证 <span class="gradient-text">更安全</span> 更简单
</h1>
<p class="hero-subtitle">支持 OpenID Connect / OAuth2,提供可靠的登录、授权与令牌管理能力</p>
<div class="hero-actions">
@if (Model is null)
{
<a class="btn btn-primary btn-lg" href="@Url.Action("Login", "Account")">
<i class="bi bi-box-arrow-in-right" aria-hidden="true"></i>
立即登录
</a>
}
else
{
<span class="badge" style="height:48px;display:inline-flex;align-items:center;font-size:14px;gap:10px;">
@if (!string.IsNullOrWhiteSpace(Model.Avatar))
{
<img src="@Model.Avatar" alt="@Model.Name" style="width:28px;height:28px;border-radius:50%;object-fit:cover;border:1px solid var(--border-color);" />
}
<span style="display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1.2;">
<span style="white-space:nowrap;">@Model.Name</span>
<span style="white-space:nowrap;font-size:12px;color:var(--text-muted);">@Model.Id</span>
</span>
</span>
@if (Model.Permissions != null && (Model.Permissions & Permissions.System) == Permissions.System)
{
<a class="btn btn-secondary btn-lg" href="@Url.Action("Index", "Application")">
<i class="bi bi-kanban" aria-hidden="true"></i>
管理客户端
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("Index", "AuthorizationManage")">
<i class="bi bi-shield-lock" aria-hidden="true"></i>
管理授权
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("Index", "Token")">
<i class="bi bi-key-fill" aria-hidden="true"></i>
Token管理
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("Index", "AccessRequest")">
<i class="bi bi-person-check-fill" aria-hidden="true"></i>
申请审核
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("Index", "Grant")">
<i class="bi bi-person-plus-fill" aria-hidden="true"></i>
主动授权
</a>
}
<a class="btn btn-secondary btn-lg" href="@Url.Action("ChangePassword", "Account")">
<i class="bi bi-key" aria-hidden="true"></i>
修改密码
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("BindTwoFactor", "TwoFactor")">
<i class="bi bi-house-lock" aria-hidden="true"></i>
绑定2FA
</a>
<a class="btn btn-secondary btn-lg" href="@Url.Action("UnbindTwoFactor", "TwoFactor")">
<i class="bi bi-shield-x" aria-hidden="true"></i>
解绑2FA
</a>
<a class="btn btn-logout btn-lg" href="@Url.Action("Logout", "Account")">
<i class="bi bi-box-arrow-right" aria-hidden="true"></i>
登出
</a>
}
</div>
<div class="stats">
<div class="stat">
<strong>OIDC</strong>
<span>标准协议兼容</span>
</div>
<div class="stat">
<strong>2FA</strong>
<span>双因素认证支持</span>
</div>
<div class="stat">
<strong>SSO</strong>
<span>单点登录能力</span>
</div>
</div>
</div>
</header>
<main class="section">
<div class="content-container">
<div class="features-grid">
<div class="card">
<svg class="feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12l2-2 4 4 8-8 4 4"></path><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2z"></path></svg>
<h3>安全合规</h3>
<p>内置权限模型、作用域与令牌控制,支持最小权限原则与安全审计。</p>
</div>
<div class="card">
<svg class="feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h7v7H3z"></path><path d="M14 3h7v7h-7z"></path><path d="M14 14h7v7h-7z"></path><path d="M3 14h7v7H3z"></path></svg>
<h3>灵活扩展</h3>
<p>可按业务定制登录策略、声明映射、客户端类型与回调策略。</p>
</div>
<div class="card">
<svg class="feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z"></path></svg>
<h3>管理便捷</h3>
<p>客户端可视化管理、权限选择器与 2FA 防护,运维更高效。</p>
</div>
</div>
</div>
</main>
<footer class="section" style="padding-top: 24px;">
<div class="content-container" style="text-align:center;color:var(--text-muted);font-size:12px;">
<div>© @DateTime.Now.Year Dpz.Core 认证中心 · Version:@Assembly.GetEntryAssembly()?.GetName().Version?.ToString()</div>
</div>
</footer>
</body>
</html>