using GreenTree.Nachtragsmanagement.Core; using GreenTree.Nachtragsmanagement.Core.Authentication; using GreenTree.Nachtragsmanagement.Services.User; using GreenTree.Nachtragsmanagement.Web.Models.Login; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace GreenTree.Nachtragsmanagement.Web.Controllers { public class LoginController : Controller { private readonly IUserService _userService; private readonly IUserHelper _userHelper; public LoginController( IUserService userService, IUserHelper userHelper) { _userService = userService; _userHelper = userHelper; } // GET: Login public ActionResult Index() { var user = _userHelper.FromCookies(); if (user != null) return RedirectToAction("Index", "Home"); return View("~/Views/Login/Index.cshtml"); } [HttpPost] public ActionResult Index(LoginModel model) { var user = _userService.GetUserByCustomNumber(model.Username); if (user == null) return Index(); var password = StaticHelper.GetMD5Hash(model.Password); if (!String.Equals(user.Password, password, StringComparison.InvariantCulture)) return Index(); user.CurrentRole = user.Roles.First(r1 => r1.Level == user.Roles.Max(r2 => r2.Level)); if (model.IsPermanent.HasValue && model.IsPermanent.Value) _userHelper.ToCookies(user, DateTime.MaxValue); else _userHelper.ToCookies(user, DateTime.Now.AddHours(2)); return RedirectToAction("Index", "Home"); } public ActionResult Logout() { _userHelper.ClearCookie(); return RedirectToAction("Index", "Login"); } } }