using ConstructorApp.EntityLayer.Entities; using ConstructorAppUI.ViewModels; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; namespace ConstructorAppUI.Controllers { [AllowAnonymous] public class LoginController : Controller { private readonly SignInManager _signInManager; private readonly UserManager _userManager; public LoginController(SignInManager signInManager, UserManager userManager) { _signInManager = signInManager; _userManager = userManager; } public IActionResult Index() { return View(); } [HttpPost] public async Task Index(LoginViewModel loginViewModel) { if (!ModelState.IsValid) { return View(loginViewModel); } var result = await _signInManager.PasswordSignInAsync( loginViewModel.UserName, loginViewModel.Password, false, true); if (result.Succeeded) { var user = await _userManager.FindByNameAsync(loginViewModel.UserName); if (user.EmailConfirmed) { var roles = await _userManager.GetRolesAsync(user); if (roles.Contains("Admin")) { return RedirectToAction("Index", "Dashboard"); } } else { ModelState.AddModelError(string.Empty, "E-posta adresiniz henüz onaylanmamış."); } } else if (result.IsLockedOut) { ModelState.AddModelError(string.Empty, "Çok sayıda hatalı giriş yaptınız. Lütfen daha sonra tekrar deneyin."); } else { ModelState.AddModelError(string.Empty, "Kullanıcı adı veya şifre hatalı."); } return View(loginViewModel); } public async Task Logout() { await _signInManager.SignOutAsync(); return RedirectToAction("Index", "Login"); } } }