Add project files.
This commit is contained in:
74
ConstructorAppUI/Controllers/LoginController.cs
Normal file
74
ConstructorAppUI/Controllers/LoginController.cs
Normal 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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user