75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
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");
|
||
}
|
||
}
|
||
}
|