Files
BeWoPlaner/BeWoPlanerMobil/Controllers/LoginController.cs
Lyndon Jetten 659ec6b3eb Kalender:
Die Abfrage nach der Ressourcenbelegung kommt nur ein mal und das Abbrechen des Speicherns hat keinen "kaputten" Reload zur Folge
    Das Löschen eines Serientermins mit veränderten oder gelöschten Elementen führt zu keiner Exception mehr, da ich den Service-Aufruf auf synchron geändert habe.
    Es gibt allerdings noch Bugs! -> Serientermin erstellen und ein Element davon ändern führt zu einer doppelten Abfrage, ausgelöst durch die Überlappungsprüfung, die eine    Überlappung mit der Serie selbst feststellt!
2020-11-20 23:28:09 +01:00

122 lines
4.1 KiB
C#

using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using BeWoPlanerMobil.Models;
using BeWoPlanerMobil.Service;
using BeWoPlanerMobil.Util;
using BS.Shared;
using BS.Shared.DataContracts;
using HttpCookie = System.Web.HttpCookie;
namespace BeWoPlanerMobil.Controllers
{
public class LoginController : AbstractBaseController
{
public static string LoginErrorIndex => "LoginErrorIndex";
[HttpPost]
public ActionResult Index()
{
ViewData[LoginErrorIndex] = string.Empty;
TempData[LoginErrorIndex] = string.Empty;
if (MobileSessionFacade.IsUserLoggedIn() && !Request.Browser.Browser.Equals("InternetExplorer"))
{
var loginState = MobileUtils.GetLoginState(MobileSessionFacade.Tenant);
#if DEBUG
loginState = new BeWoLoginState(1, "Das ist nur ein Test");
#endif
if (loginState.Message != null && loginState.State > -1)
{
TempData[MobileUtils.TempDataLoginStateKey] = loginState;
}
Log.Info($"LoginController.Index(): Loggedin User: {MobileSessionFacade.LoggedInUser.LoginName}");
if (!MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ServiceRecordView_View))) &&
!MobileSessionFacade.LoggedInUser.UserGroups.Any(a => a.Rights.Any(f => f.RightType.Equals(UserRightType.ViewAll))))
{
ViewData[LoginErrorIndex] = HttpUtility.HtmlDecode("Sie haben keine ausreichenden Berechtigungen, um die Zeiterfassung anzeigen zu lassen.");
MobileSessionFacade.LogUserOut();
FormsAuthentication.SignOut();
return View("Index");
}
FormsAuthentication.SetAuthCookie(MobileSessionFacade.LoggedInUser.LoginName, true);
ViewData[LoginErrorIndex] = string.Empty;
var keks = new HttpCookie("tenantKeks") { Value = MobileSessionFacade.Tenant, Expires = DateTime.Now.AddDays(1) };
HttpContext.Response.SetCookie(keks);
var brauser = Request.Browser;
var brauserInfoDC = new BeWoMobilBrowserInfoDC
{
Type = brauser.Type,
Name = brauser.Browser,
BrowserVersion = brauser.Version,
Platform = brauser.Platform,
Tenant = MobileSessionFacade.Tenant
};
//OperationsService.InsertBeWoMobilBrowserInfo(brauserInfoDC);
AbstractModel.TimeOfLastAction = $"{DateTime.Now:yyyy-MM-dd}T{DateTime.Now:HH:mm:ss}";
return RedirectToActionPermanent("Main", "Main");
}
if(MobileSessionFacade.IsUserLoggedIn() && Request.Browser.Browser.Equals("InternetExplorer"))
{
MobileSessionFacade.LogUserOut();
FormsAuthentication.SignOut();
}
Log.Info($"LoginController.Index(): Login failed! Tenant = {MobileSessionFacade.Tenant}");
ViewData[LoginErrorIndex] = Request.Browser.Browser.Equals("InternetExplorer") ?
"Dieser Browser ist nicht mit dem mobilen BeWoPlaner kompatibel. Bitte benutzen Sie einen anderen Browser als den Internet Explorer." :
"Die Anmeldung ist fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort.";
return View("Index");
}
public ActionResult Index(string tenant, string returnUrl)
{
if (returnUrl != null)
{
return RedirectToAction("Index", new {tenant = MobileSessionFacade.Tenant});
}
var queryString = HttpContext.Request.QueryString;
if(queryString != null && queryString.HasKeys() && queryString.AllKeys.Contains("isSessionTimedOut"))
{
ViewData[IsSessionTimedOut] = "Sie wurden automatisch abgemeldet, da Ihre Session abgelaufen ist.";
}
if (tenant == null)
{
var keks = HttpContext.Request.Cookies.Get("tenantKeks");
if(keks != null)
{
tenant = keks.Value;
}
}
if (MobileSessionFacade.IsUserLoggedIn())
{
return RedirectToActionPermanent("Main", "Main");
}
MobileSessionFacade.Tenant = tenant;
return View("Index");
}
}
}