Add project files.

This commit is contained in:
2025-05-01 15:18:30 +03:00
parent e058ab8015
commit 774d695414
3094 changed files with 1336814 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
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<AppUser> _signInManager;
private readonly UserManager<AppUser> _userManager;
public LoginController(SignInManager<AppUser> signInManager, UserManager<AppUser> userManager)
{
_signInManager = signInManager;
_userManager = userManager;
}
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task<IActionResult> 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<IActionResult> Logout()
{
await _signInManager.SignOutAsync();
return RedirectToAction("Index", "Login");
}
}
}