using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; using System.Security.Claims; namespace BinaryDad.Notes.Controllers { public class LoginController : Controller { private readonly IConfiguration configuration; public LoginController(IConfiguration configuration) { this.configuration = configuration; } [Route("login")] public IActionResult Login() { return View(); } [ActionName(nameof(Login))] [Route("login")] [HttpPost] public async Task LoginPost([Required] string passphrase, string returnUrl) { if (ModelState.IsValid) { var appPassphrase = configuration["APP_PASSPHRASE"]; if (passphrase == appPassphrase) { var claims = new List { new Claim(ClaimTypes.GivenName, "Ryan") }; var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); await HttpContext.SignInAsync(new ClaimsPrincipal(claimsIdentity)); return Redirect(returnUrl); } ModelState.AddModelError("", "Invalid login"); } return View(); } [Route("logout")] public async Task Logout() { await HttpContext.SignOutAsync(); return Redirect("/"); } } }