@page "/" @using VPNAuth.Server @using VPNAuth.Server.Database @{ Layout = null; string remoteIp = Request.HttpContext.GetRemoteIpAddress(); ConfigUser? configUser = Request.HttpContext.GetUser(); UserInformation? dbUser = null; if (configUser != null) { using var db = new Database(); dbUser = db.UserInformation.Where(user => user.Sub == configUser!.Username).ToList().FirstOrDefault(); } } <!DOCTYPE html> <html> <head> <title>VPNAuth - Dashboard</title> <link rel="stylesheet" href="/static/style.css"> </head> <body> @if (configUser == null) { <p>No user detected</p> } else { <div> <h1>User settings</h1> <form hx-post="/user-info-settings" hx-swap="none" hx-trigger="change"> <table> <tbody> <tr> <th>Username</th> <th class="normal">@dbUser?.Sub</th> </tr> <tr> <th><label for="given-name">Given name</label></th> <th><input name="given-name" id="given-name" type="text" value="@dbUser?.GivenName"/></th> </tr> <tr> <th><label for="family-name">Family name</label></th> <th><input name="family-name" id="family-name" type="text" value="@dbUser?.FamilyName"/></th> </tr> <tr> <th><label for="preferred-username">Preferred username</label></th> <th><input name="preferred-username" id="preferred-username" type="text" value="@dbUser?.PreferredUsername"/></th> </tr> <tr> <th><label for="email">Email</label></th> <th><input name="email" id="email" type="email" value="@dbUser?.Email"/></th> </tr> <tr> <th><label for="email">Picture URL</label></th> <th><input name="picture" id="picture" type="url" value="@dbUser?.Picture"/></th> </tr> <tr> <th>IPs</th> <th class="normal"> <ul> @foreach (var ip in configUser.Ips!) { <li>@ip</li> } </ul> </th> </tr> </tbody> </table> </form> </div> } <footer> <p style="margin-top: 5em;"><a target="_blank" href="https://bytim.eu/projects/VPNAuth/">VPNAuth</a> by Tim</p> </footer> <script src="/static/htmx.js"></script> </body> </html>