2023-11-08 00:34:17 +01:00
|
|
|
|
using BeWo.Data.Access;
|
|
|
|
|
|
using BeWo.Data.Entities;
|
2023-02-28 15:04:34 +01:00
|
|
|
|
using BS.Shared;
|
2023-11-08 00:34:17 +01:00
|
|
|
|
using BS.Shared.DataContracts;
|
2023-02-28 15:04:34 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace BeWo.Data.Security
|
|
|
|
|
|
{
|
|
|
|
|
|
public class UserRightHelper
|
|
|
|
|
|
{
|
|
|
|
|
|
public static ApplicationUser GetLoggedInUser()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
if (LoggedInUserOperationContextExt.Current != null &&
|
|
|
|
|
|
LoggedInUserOperationContextExt.Current.User != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return LoggedInUserOperationContextExt.Current.User;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return SessionFacade.LoggedInUser;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static bool LoggedInUserHasRight(UserRightType right)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetGrantedRights(GetLoggedInUser()).Contains(right);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static bool UserHasRight(ApplicationUser user, UserRightType right)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetGrantedRights(user).Contains(right);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static List<UserRightType> GetGrantedRights(ApplicationUser user)
|
|
|
|
|
|
{
|
|
|
|
|
|
var rights = new List<UserRightType>();
|
|
|
|
|
|
foreach (var ug in user.UserGroups)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var rr in ug.Rights)
|
|
|
|
|
|
{
|
|
|
|
|
|
rights.Add(rr.RightType);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return rights;
|
|
|
|
|
|
}
|
2023-11-08 00:34:17 +01:00
|
|
|
|
|
|
|
|
|
|
public static String GetBeWoVersion()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetBeWoVersion(GetLoggedInUser().LoginName);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static String GetBeWoVersion(String loginName)
|
|
|
|
|
|
{
|
|
|
|
|
|
var lastLogins = DAOFactory.SearchDAO.FindLastLogins(loginName, 1).ToList();
|
|
|
|
|
|
if (lastLogins != null && lastLogins.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var login = lastLogins[0];
|
|
|
|
|
|
if (!String.IsNullOrEmpty(login.Referrer))
|
|
|
|
|
|
{
|
|
|
|
|
|
//var test = "MobilClient, Version: Unbekannt";
|
|
|
|
|
|
//var test2 = "BeWoClient, Version: Microsoft Windows NT 6.2.9200.0;CLRVersion=4.0.30319.42000;BeWoVersion=Version 3.16;IsNet45OrNewer=True";
|
|
|
|
|
|
|
|
|
|
|
|
var str = login.Referrer;
|
|
|
|
|
|
|
|
|
|
|
|
var start = str.IndexOf("BeWoVersion=");
|
|
|
|
|
|
if (start > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var stop = str.IndexOf(";", start);
|
|
|
|
|
|
if (stop > start)
|
|
|
|
|
|
{
|
|
|
|
|
|
var version = str.Substring(start + 12, stop - start - 12);
|
|
|
|
|
|
version = version.Replace("Version", "").Trim();
|
|
|
|
|
|
|
|
|
|
|
|
return version;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void CheckRightVersion(UserDC user)
|
|
|
|
|
|
{
|
|
|
|
|
|
var version = GetBeWoVersion(GetLoggedInUser().LoginName);
|
|
|
|
|
|
CheckRightVersion(version, user);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void CheckRightVersion(UserGroupDC groupDC)
|
|
|
|
|
|
{
|
|
|
|
|
|
var version = GetBeWoVersion(GetLoggedInUser().LoginName);
|
|
|
|
|
|
CheckRightVersion(version, groupDC);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void CheckRightVersion(String version, UserDC userDC)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var ug in userDC.UserGroups)
|
|
|
|
|
|
{
|
|
|
|
|
|
CheckRightVersion(version, ug);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void CheckRightVersion(String version, UserGroupDC ug)
|
|
|
|
|
|
{
|
|
|
|
|
|
var allrights = ug.Rights;
|
|
|
|
|
|
ug.Rights = new List<UserRightType>();
|
|
|
|
|
|
foreach (var r in allrights)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (IsCorrectVersion(r, version))
|
|
|
|
|
|
{
|
|
|
|
|
|
ug.Rights.Add(r);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static bool IsCorrectVersion(UserRightType r, string version)
|
|
|
|
|
|
{
|
|
|
|
|
|
var rightVersion = GetRightVersion(r);
|
|
|
|
|
|
|
2023-11-15 00:52:39 +01:00
|
|
|
|
if (!String.IsNullOrEmpty(version) && version.CompareTo(rightVersion) < 0)
|
2023-11-08 00:34:17 +01:00
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static String GetRightVersion(UserRightType r)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (r == UserRightType.Customer_ViewBetreuung || r == UserRightType.Customer_ViewAbsenceTimes)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "3.17";
|
|
|
|
|
|
}
|
2023-12-03 23:00:10 +01:00
|
|
|
|
if (r == UserRightType.AdditionalService_Edit)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "3.18";
|
|
|
|
|
|
}
|
2024-02-20 12:36:59 +01:00
|
|
|
|
if (r == UserRightType.Customer_EditMedication)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "3.19";
|
|
|
|
|
|
}
|
2024-06-12 16:58:10 +02:00
|
|
|
|
if (r == UserRightType.FinanzenRechnungenNachVersandBearbeiten)
|
|
|
|
|
|
{
|
|
|
|
|
|
return "3.21";
|
|
|
|
|
|
}
|
2023-11-08 00:34:17 +01:00
|
|
|
|
return "1.0";
|
|
|
|
|
|
}
|
2023-02-28 15:04:34 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|