public static void SetTechUserSessionInfo(EsamSession ses) { ses.UserAuthName = "IsoNotifyTechUser"; ses.UserId = "00000000-0000-0000-0000-000000000002"; ses.UserAuthId = "00000000-0000-0000-0000-000000000002"; ses.FirstName = "Technicky"; ses.LastName = "Ucet"; ses.Email = "*****@*****.**"; ses.DisplayName = "DATALAN, a.s. Vilo"; ses.FullName = ses.DisplayName; ses.EvidCisloZam = "007"; }
public static void SetUserTenantSession(EsamSession ses, System.Data.IDbConnection db, ServiceStack.Caching.ICacheClient cache) { var userId = Guid.Parse(ses.UserId); var tenants = db.Select <Guid>("SELECT D_Tenant_Id FROM cfe.D_UserTenant WHERE (DatumPlatnosti is null or DatumPlatnosti > getdate()) AND D_User_Id = @userid ORDER BY D_UserTenant_Id", new { userid = userId }); if (!tenants.Any()) { throw new WebEasValidationException(null, $"User {ses.DisplayName} doesn't have access to any company !"); } if (string.IsNullOrEmpty(ses.TenantId)) { var lastUsedTenant = cache.Get <string>($"LastUsedTenant:{ses.UserId}"); if (!string.IsNullOrEmpty(lastUsedTenant) && tenants.Contains(Guid.Parse(lastUsedTenant))) { ses.TenantId = lastUsedTenant; } else { ses.TenantId = tenants.First().ToString(); } } else { if (!tenants.Contains(ses.TenantIdGuid.Value)) { throw new WebEasValidationException(null, $"User {ses.DisplayName} doesn't have access to login!"); } } cache.Set($"LastUsedTenant:{ses.UserId}", ses.TenantId); ses.TenantIds = tenants; if (!string.IsNullOrEmpty(ses.TenantId)) { ses.TenantId = ses.TenantId.ToUpper(); var isoId = db.Single <string>("SELECT IsoId FROM cfe.D_Tenant WHERE D_Tenant_Id = @tenantId", new { tenantId = ses.TenantId }); ses.IsoId = isoId; byte[] tenant = Guid.Parse(ses.TenantId).ToByteArray(); byte[] endpoint = new byte[] { (byte)Context.EndpointType.Office }; byte[] dcomId = userId.ToByteArray(); byte[] rola = "U".ToAsciiBytes(); byte[] context = tenant.Concat(endpoint).Concat(dcomId).Concat(rola).ToArray(); var cmd = db.CreateCommand(); cmd.CommandText = "SET CONTEXT_INFO @context"; cmd.AddParam("context", context, System.Data.ParameterDirection.Input, System.Data.DbType.Binary); cmd.ExecuteNonQuery(); var permissions = db.Select <string>(@"SELECT DISTINCT CONCAT(UPPER(r.ModulKod), '_', r.kod) as ModulePermissionCode FROM cfe.V_RightUser r WHERE HasRight = 1 AND D_User_Id = @userid", new { userid = userId }); ses.Roles = permissions; // SysAdmin budeme nastavovat tu, treba zabezpecit aby sa nedal nastavit z aplikacie ? ses.AdminLevel = ses.Roles.Any(x => x.Contains(AdminLevel.SysAdmin.ToDescription())) ? AdminLevel.SysAdmin : ses.Roles.Any(x => x.Contains("CFE_" + AdminLevel.CfeAdmin.ToDescription())) ? AdminLevel.CfeAdmin : AdminLevel.User; var(D_Tenant_Id_Externe, Nazov) = db.Single <(Guid?D_Tenant_Id_Externe, string Nazov)>("SELECT D_Tenant_Id_Externe, Nazov FROM cfe.D_Tenant WHERE D_Tenant_Id = @tenantId", new { tenantId = ses.TenantId }); ses.D_Tenant_Id_Externe = D_Tenant_Id_Externe; ses.TenantName = Nazov; ses.OrsPermissions = db.Query <string>("EXEC [cfe].[PR_GetOrsReadPermissions]").Join(""); ses.OrsElementPermisions = new Dictionary <string, string>(); var elPrava = db.Query <Tuple <int, int, byte> >($@"SELECT C_OrsElementType_Id as Item1, IdValue as Item2, PravoReal as Item3 FROM [cfe].V_OrsElementUser WHERE IsElementPravo = 1 AND PravoReal > 0 AND D_User_Id = '{userId}'"); foreach (var elPravo in elPrava) { string dKey = $"ORS_{elPravo.Item1}_"; // {((elPravo.Item3 == 3)? "F" : ((elPravo.Item3 == 2)? "W" : "R"))}"; string oldString = ""; if (elPravo.Item3 == 3) { ses.OrsElementPermisions.TryGetValue(dKey + "F", out oldString); if (string.IsNullOrEmpty(oldString)) { oldString = ","; } ses.OrsElementPermisions[dKey + "F"] = oldString + elPravo.Item2 + ","; } if (elPravo.Item3 >= 2) { ses.OrsElementPermisions.TryGetValue(dKey + "W", out oldString); if (string.IsNullOrEmpty(oldString)) { oldString = ","; } ses.OrsElementPermisions[dKey + "W"] = oldString + elPravo.Item2 + ","; } if (elPravo.Item3 >= 1) { ses.OrsElementPermisions.TryGetValue(dKey + "R", out oldString); if (string.IsNullOrEmpty(oldString)) { oldString = ","; } ses.OrsElementPermisions[dKey + "R"] = oldString + elPravo.Item2 + ","; } } } }