using Data; using Logic; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Models; using System.Security.Claims; namespace WebApp.Pages { public class LoginModel : PageModel { [BindProperty] public User MyUser { get; set; } public void OnGet() { } public IActionResult OnPost(string? returnUrl) { var userManager = new UserManager(new UserRepository()); User? user = userManager.AuthenticatedUser(MyUser.Name, MyUser.Password); if (user != null) { List claims = new List(); claims.Add(new Claim(ClaimTypes.Name, user.Name)); claims.Add(new Claim("id", user.ID.ToString())); claims.Add(new Claim(ClaimTypes.Role, user.Role.ToString())); var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); HttpContext.SignInAsync(new ClaimsPrincipal(claimsIdentity)); // ViewData["confirm"] = $"Welcome, {MyUser.Name}! {MyUser.ID}, {MyUser.Password}, {MyUser.Role}"; if (!String.IsNullOrWhiteSpace(returnUrl) && Url.IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToPage("Announcements"); } } else { ModelState.AddModelError("InvalidCredentials", "The supplied username and/or password is invalid"); return Page(); } } } }