675 lines
33 KiB
C#
675 lines
33 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Security.Claims;
|
|
using System.Security.Principal;
|
|
using System.Web;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Enums;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Framework.Security;
|
|
using Kreta.KretaServer.SystemSettings;
|
|
using Microsoft.AspNet.Identity;
|
|
using Microsoft.Owin.Security;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Kreta.Web.Security
|
|
{
|
|
public class ClaimManager
|
|
{
|
|
public static event ClaimSigninEventHandler ClaimSignin;
|
|
|
|
public static ClaimsIdentity SignIn(LoginInfo loginInfo, bool idpLoginEnabled = false)
|
|
{
|
|
var claims = new List<Claim>();
|
|
claims.Add(new Claim(KretaClaimTypes.BelepesiNev, loginInfo.BelepesiNev));
|
|
claims.Add(new Claim(KretaClaimTypes.FelhasznaloNev, loginInfo.NyomtatasiNev));
|
|
claims.Add(new Claim(KretaClaimTypes.FelhasznaloId, loginInfo.FelhasznaloId.ToString()));
|
|
claims.Add(new Claim(KretaClaimTypes.SessionId, loginInfo.SessionID));
|
|
claims.Add(new Claim(KretaClaimTypes.AntiForgeryToken, Guid.NewGuid().ToString()));
|
|
|
|
if (loginInfo.GondviseloId.HasValue)
|
|
{
|
|
claims.Add(new Claim(KretaClaimTypes.GondviseloId, loginInfo.GondviseloId.Value.ToString()));
|
|
if (loginInfo.UtolsoBelepesIdeje == null)
|
|
{
|
|
new JelszoLinkHelper(new OrganizationConnectionType(loginInfo.FelhasznaloId, loginInfo.IntezmenyId, loginInfo.IntezmenyAzonosito, loginInfo.AktivTanevId), loginInfo.GondviseloId.Value).DeleteLink();
|
|
}
|
|
}
|
|
|
|
claims.Add(new Claim(KretaClaimTypes.KretaFelhasznaloSzerepkor, nameof(SzerepkorTipusEnum.Nincs_beallitva)));
|
|
DoClaimSigninEvent(claims, loginInfo);
|
|
|
|
var identity = new ClaimsIdentity(new GenericIdentity($"{loginInfo.BelepesiNev ?? string.Empty}/{loginInfo.IntezmenyAzonosito ?? string.Empty}"), claims, DefaultAuthenticationTypes.ApplicationCookie, null, null);
|
|
|
|
if (!idpLoginEnabled)
|
|
{
|
|
var authmgr = HttpContext.Current.Request.GetOwinContext().Authentication;
|
|
authmgr.SignIn(identity);
|
|
}
|
|
|
|
return identity;
|
|
}
|
|
|
|
public static bool GetStatusClaimSigninEvent()
|
|
{
|
|
return ClaimSignin != null;
|
|
}
|
|
|
|
private static void DoClaimSigninEvent(List<Claim> claims, LoginInfo logininfo)
|
|
{
|
|
ClaimSignin?.Invoke(null, new ClaimSigninEventArgs(claims, logininfo));
|
|
}
|
|
|
|
public static void SignOut()
|
|
{
|
|
var authmgr = HttpContext.Current.Request.GetOwinContext().Authentication;
|
|
var identity = GetClaimIdentity();
|
|
RemoveClaim(identity, KretaClaimTypes.Package);
|
|
RemoveClaim(identity, KretaClaimTypes.PackageCacheHash);
|
|
authmgr.SignOut();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Belépett felhasználóhoz tartozó összes jogosultság (claimek) lekérdezése DB-ből. Pl: Osztályfőnök, Csoportvezető, stb.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private static List<string> GetUserClaims(FelhasznaloHelper helper)
|
|
{
|
|
var userclaims = new List<string>();
|
|
|
|
userclaims.AddRange(helper.GetFelhasznaloiJogosultsagok(ClaimData.FelhasznaloId, (int)ClaimData.FelhasznaloSzerepkor));
|
|
|
|
return userclaims;
|
|
}
|
|
|
|
private static List<string> GetFelhasznaloResources(SzerepkorTipusEnum szerepkor)
|
|
{
|
|
var resourceList = new List<string>();
|
|
|
|
if (szerepkor == SzerepkorTipusEnum.Ellenorzo)
|
|
{
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_felhasznalok_nem_valtoztathatjak_meg_a_jelszavukat_az_elektronikus_ellenorzoben, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Ellenorzo.Resources.A_felhasznalok_nem_valtoztathatjak_meg_a_jelszavukat_az_elektronikus_ellenorzoben);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.IsOsztalyfonok)
|
|
{
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_modosithatja_osztalyaba_jaro_tanulok_adatait, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_modosithatja_osztalyaba_jaro_tanulok_adatait);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_szocialis_tanugyi_es_SNI_BTM_adatait, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_szocialis_tanugyi_es_SNI_BTM_adatait);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_kezelheti_az_osztalyaba_jaro_tanulok_vallasi_adatait, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_megtekintheti_kezelheti_az_osztalyaba_jaro_tanulok_vallasi_adatait);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_sportoloi_adatait, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_megtekintheti_kezelheti_az_osztalyaba_jaro_tanulok_sportoloi_adatait);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_zaradekat, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_zaradekat);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_kiegeszitheti_osztalyaba_jaro_tanulok_ki_vagy_atsorolsasi_zaradekat, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Osztalyfonok.Resources.Osztalyfonok_kiegeszitheti_osztalyaba_jaro_tanulok_vegzaradekat);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.TanuloKezelese.ClaimValue))
|
|
{
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanulo_sajatos_nevelesi_igenyenek_szocialis_es_tanugyi_adatainak_kezelese, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.TanuloKezelese.Resources.Tanulo_sajatos_nevelesi_igenyenek_szocialis_es_tanugyi_adatainak_kezelese);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanulo_vallasi_adatainak_kezelese, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.TanuloKezelese.Resources.Tanulo_vallasi_adatainak_kezelese);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanulo_sportoloi_adatainak_kezelese, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.TanuloKezelese.Resources.Tanulo_sportoloi_adatainak_kezelese);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.Tanar.ClaimValue))
|
|
{
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Pedagogusok_sajat_orarendjeiket_modosithatjak_az_elektronikus_naploban, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Tanar.Resources.Pedagogusok_sajat_orarendjeiket_modosithatjak_az_elektronikus_naploban);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Pedagogusok_csak_az_eloirt_helyettesiteseiket_regisztralhatjak_a_haladasi_naploban, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Tanar.Resources.Pedagogusok_csak_az_eloirt_helyettesiteseiket_regisztralhatjak_a_haladasi_naploban);
|
|
}
|
|
if (SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_haladasi_naploba_orankent_csak_egy_tanora_rogzitheto, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
resourceList.Add(KretaClaimPackages.Tanar.Resources.A_haladasi_naploba_orankent_csak_egy_tanora_rogzitheto);
|
|
}
|
|
}
|
|
|
|
return resourceList;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Jogosultság beállítása.
|
|
/// </summary>
|
|
/// <param name="szerepkor"></param>
|
|
public static void SetFelhasznaloSzerepkorClaim(List<SzerepkorTipusEnum> szerepkorok, List<SzerepkorTipusEnum> eugyintezesESLSzerepkorok = null)
|
|
{
|
|
var connectionType = new SessionConnectionType(ClaimData.SessionId, ClaimData.FelhasznaloId, ClaimData.IntezmenyId, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value);
|
|
|
|
if (szerepkorok.Any())
|
|
{
|
|
AddClaim(KretaClaimTypes.KretaFelhasznaloSzerepkor, szerepkorok[0].ToString());
|
|
}
|
|
|
|
var felhasznaloHelper = new FelhasznaloHelper(connectionType);
|
|
|
|
List<string> claims = GetUserClaims(felhasznaloHelper);
|
|
|
|
if (ClaimData.IsDefaultAdminUser && SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Is_Csokkentett_Admin_Jog, ClaimData.IntezmenyAzonosito, ClaimData.SelectedTanevID.Value))
|
|
{
|
|
claims = new List<string> { KretaClaimPackages.IsCsokkentettAdminJog.ClaimValue };
|
|
string temp = JsonConvert.SerializeObject(claims);
|
|
|
|
AddClaim(KretaClaimTypes.Package, temp);
|
|
return;
|
|
}
|
|
|
|
if (ClaimData.GondviseloId.HasValue)
|
|
{
|
|
var isCsokkentettGondviselo = felhasznaloHelper.IsCsokkentettGondviselo(ClaimData.GondviseloId.Value);
|
|
|
|
if (isCsokkentettGondviselo)
|
|
{
|
|
// ha csökkentett gondviselő, akkor nem lehet semmilyen más joga!
|
|
claims = new List<string> { KretaClaimPackages.CsokkentettGondviselo.ClaimValue };
|
|
string temp = JsonConvert.SerializeObject(claims);
|
|
|
|
AddClaim(KretaClaimTypes.Package, temp);
|
|
return;
|
|
}
|
|
|
|
claims.Add(KretaClaimPackages.Gondviselo.ClaimValue);
|
|
|
|
//ToDo: bool-t adjon vissza!
|
|
DataSet SZMKOsztalyok = new OsztalyHelper(connectionType).GetSZMKOsztalyok(ClaimData.GondviseloId.Value);
|
|
|
|
if (SZMKOsztalyok.Tables[0].Rows.Count != 0)
|
|
{
|
|
claims.Add(KretaClaimPackages.SZMKKepviselo.ClaimValue);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.FeltarGondviseloEnabled)
|
|
{
|
|
AddIsFeltaGondviseloOrTanuloClaimPackegeIfNeeded(connectionType, claims);
|
|
|
|
}
|
|
|
|
//ToDo: átszervezni!
|
|
if (eugyintezesESLSzerepkorok?.Count > 0)
|
|
{
|
|
eugyintezesESLSzerepkorok.ForEach(x =>
|
|
{
|
|
if (nameof(SzerepkorTipusEnum.eUgyintezo) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.eUgyintezo.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.Alairo) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.Alairo.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.Penztaros) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.Penztaros.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.PenzugyiAdmin) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.PenzugyiAdmin.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.BelepokartyaAdmin) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.BelepokartyaAdmin.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.LeltarConcerned) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.LeltarConcerned.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.EtkezesiAdmin) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.EtkezesiAdmin.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.EtkezesiEllenorzo) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.EtkezesiEllenorzo.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.TeremberletJelenletEllenorzo) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.TeremberletJelenletEllenorzo.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.alkalmazott) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.Alkalmazott.ClaimValue);
|
|
}
|
|
|
|
if (nameof(SzerepkorTipusEnum.FokuszMonitoring) == x.ToString())
|
|
{
|
|
claims.Add(KretaClaimPackages.FokuszMonitoring.ClaimValue);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.GazdasagiUgyintezo))
|
|
{
|
|
claims.Add(KretaClaimPackages.GazdasagiUgyintezo.ClaimValue);
|
|
if (ClaimData.IsKlebelsberg)
|
|
{
|
|
claims.Add(KretaClaimPackages.KKGazdasagiUgyintezo.ClaimValue);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.IskolaEgeszsegugyiKoordinator))
|
|
{
|
|
claims.Add(KretaClaimPackages.IskolaEgeszsegugyiKoordinator.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Vedono))
|
|
{
|
|
claims.Add(KretaClaimPackages.Vedono.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Iskolaorvos))
|
|
{
|
|
claims.Add(KretaClaimPackages.Iskolaorvos.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Konyvtaros))
|
|
{
|
|
var helper = new IntezmenyConfigHelper(connectionType);
|
|
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled)
|
|
&& !ClaimData.GondviseloId.HasValue)
|
|
{
|
|
claims.Add(KretaClaimPackages.Konyvtaros.ClaimValue);
|
|
}
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.IskolaEgeszsegugyiAsszisztens))
|
|
{
|
|
claims.Add(KretaClaimPackages.IskolaEgeszsegugyiAsszisztens.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.IskolaEgeszsegugyiLekerdezo))
|
|
{
|
|
claims.Add(KretaClaimPackages.IskolaEgeszsegugyiLekerdezo.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.KerdoivKitolto_KerdoivKezelo))
|
|
{
|
|
claims.Add(KretaClaimPackages.KerdoivKitolto_KerdoivKezelo.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.IsSzakkepzoIntezmeny && ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Dualis_Admin))
|
|
{
|
|
claims.Add(KretaClaimPackages.Dualis_Admin.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.IsDefaultAdminUser)
|
|
{
|
|
claims.Add(KretaClaimPackages.IsDefaultAdminUser.ClaimValue);
|
|
}
|
|
|
|
List<string> isModosithatjaOsztfoMulasztasokatJogosultak = new List<string>
|
|
{
|
|
KretaClaimPackages.Osztalyfonok.ClaimValue,
|
|
KretaClaimPackages.SzuperOsztalyfonok.ClaimValue,
|
|
KretaClaimPackages.CsoportVezeto.ClaimValue,
|
|
KretaClaimPackages.Evfolyamfelelos.ClaimValue
|
|
};
|
|
if (claims.Intersect(isModosithatjaOsztfoMulasztasokatJogosultak).Any()
|
|
&& SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyfonok_Modosithatjae_Tanulok_Mulasztasi_Adatait, ClaimData.IntezmenyAzonosito, ClaimData.AktivTanevID.Value))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsModosithatjaOsztfoMulasztasokat.ClaimValue);
|
|
}
|
|
|
|
|
|
var systemSettingsHelper = new SystemSettingsHelper(connectionType);
|
|
|
|
AddTanarAdhatMagatartasSzorgalomJegyetClaimPackegeIfNeeded(systemSettingsHelper, claims);
|
|
|
|
var tanarHelper = new TanarHelper(connectionType);
|
|
|
|
AddFelhasznaloMunkakoreNemTiltoListasClaimPackegeIfNeeded(systemSettingsHelper, tanarHelper, claims);
|
|
|
|
AddEllenorzobenLathatoOsztalyatlagClaimPackegeIfNeeded(systemSettingsHelper, claims);
|
|
|
|
var alkalmazottHelper = new AlkalmazottHelper(connectionType);
|
|
AddLEPClaimPackegeIfNeeded(systemSettingsHelper, alkalmazottHelper, claims);
|
|
|
|
bool isVegzosEvfolyamTanuloja;
|
|
|
|
isVegzosEvfolyamTanuloja = felhasznaloHelper.GetVegzosEvfolyamTanulojaByUserId(ClaimData.FelhasznaloId);
|
|
|
|
var pedagogusok_sajat_orarendjeiket_modosithatjak_az_elektronikus_naploban = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Pedagogusok_sajat_orarendjeiket_modosithatjak_az_elektronikus_naploban);
|
|
|
|
if (pedagogusok_sajat_orarendjeiket_modosithatjak_az_elektronikus_naploban && claims.Contains(KretaClaimPackages.Naplo.ClaimValue))
|
|
{
|
|
claims.Add(KretaClaimPackages.TanarOrarendSzerkesztes.ClaimValue);
|
|
}
|
|
|
|
if (claims.Contains(KretaClaimPackages.Ellenorzo.ClaimValue))
|
|
{
|
|
|
|
var felevi_jegyek_megjelenesenek_datuma = systemSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Felevi_jegyek_megjelenesenek_datuma);
|
|
var ev_vegi_jegyek_megjelenesenek_datuma = systemSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma);
|
|
var ev_vegi_jegyek_megjelenesenek_datuma_vegzos = systemSettingsHelper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos);
|
|
|
|
if (felevi_jegyek_megjelenesenek_datuma <= DateTime.Now)
|
|
{
|
|
claims.Add(KretaClaimPackages.FeleviJegy.ClaimValue);
|
|
}
|
|
if (ev_vegi_jegyek_megjelenesenek_datuma <= DateTime.Now && !isVegzosEvfolyamTanuloja)
|
|
{
|
|
claims.Add(KretaClaimPackages.EvvegiJegy.ClaimValue);
|
|
}
|
|
if (ev_vegi_jegyek_megjelenesenek_datuma_vegzos <= DateTime.Now && isVegzosEvfolyamTanuloja)
|
|
{
|
|
claims.Add(KretaClaimPackages.EvvegiVegzosJegy.ClaimValue);
|
|
}
|
|
}
|
|
|
|
var ds = alkalmazottHelper.GetInfoForLoginAlkalmazott();
|
|
|
|
if (ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
claims.Add(KretaClaimPackages.Alkalmazott.ClaimValue);
|
|
|
|
if (SDAConvert.ToBooleanFromTF(ds.Tables[0].Rows[0]["C_DIAKOLIMPIA"]))
|
|
{
|
|
claims.Add(KretaClaimPackages.DiakolimpiaKezelo.ClaimValue);
|
|
}
|
|
|
|
var fokuszEnabled = new List<int> { (int)VezetoiOraszamokTipusEnum.Intezmenyvezeto, (int)VezetoiOraszamokTipusEnum.IntezmenyvezetoHelyettes };
|
|
if (fokuszEnabled.Contains(SDAConvert.ToInt32(ds.Tables[0].Rows[0]["C_VEZETOIORASZAMOK"])))
|
|
{
|
|
claims.Add(KretaClaimPackages.FokuszMonitoring.ClaimValue);
|
|
}
|
|
|
|
var iskolaorEnabled = new List<int> { (int)MunkakorTipusEnum.iskolaor };
|
|
if (iskolaorEnabled.Contains(SDAConvert.ToInt32(ds.Tables[0].Rows[0]["C_MUNKAKORTIPUSA"])))
|
|
{
|
|
claims.Add(KretaClaimPackages.IskolaOr.ClaimValue);
|
|
}
|
|
|
|
if (SDAConvert.ToInt32(ds.Tables[0].Rows[0]["C_MUNKAKORTIPUSA"]) == (int)MunkakorTipusEnum.portas)
|
|
{
|
|
claims.Add(KretaClaimPackages.IsPortas.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.IsSelectedTanev20_21OrLater && ClaimData.IsSzakkepzoIntezmeny && SDAConvert.ToBooleanFromTF(ds.Tables[0].Rows[0]["C_ISSZAKOKTATASERTFELELOS"]))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsSzakiranyuOktatasertFelelos.ClaimValue);
|
|
}
|
|
|
|
if (ClaimData.IsSelectedTanev20_21OrLater && ClaimData.IsSzakkepzoIntezmeny && SDAConvert.ToBooleanFromTF(ds.Tables[0].Rows[0]["C_ISDUALISKEPZOHELYIOKTATO"]))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsDualisKepzohelyiOktato.ClaimValue);
|
|
}
|
|
|
|
var naploSzerepkoros = ClaimData.FelhasznaloSzerepkorok.Any(x => x.Key == SzerepkorTipusEnum.Naplo);
|
|
var adminSzerepkoros = ClaimData.FelhasznaloSzerepkorok.Any(x => x.Key == SzerepkorTipusEnum.Adminisztrator);
|
|
var feltarEszkozMenedzserSzerepkoros = ClaimData.FelhasznaloSzerepkorok.Any(x => x.Key == SzerepkorTipusEnum.FELTAR_EszkozMenedzser);
|
|
if (ClaimData.FeltarAlkalmazottEnabled && (naploSzerepkoros || (adminSzerepkoros && feltarEszkozMenedzserSzerepkoros)))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsFeltarAlkalmazott.ClaimValue);
|
|
}
|
|
}
|
|
|
|
var feladatKategoriaList = new FeladatEllatasiHelyHelper(connectionType).GetFeladatKategoriakForLogin(ClaimData.AktivTanevID.Value, ClaimData.KovTanevID);
|
|
|
|
if (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) && feladatKategoriaList.Contains(OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas))
|
|
{
|
|
claims.Add(KretaClaimPackages.AMImodul.ClaimValue);
|
|
}
|
|
|
|
if (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) && feladatKategoriaList.Contains(OktNevelesiKategoriaEnum.Kollegium))
|
|
{
|
|
claims.Add(KretaClaimPackages.KollegiumModul.ClaimValue);
|
|
}
|
|
|
|
if (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) && feladatKategoriaList.Contains(OktNevelesiKategoriaEnum.Felnottkepzes))
|
|
{
|
|
claims.Add(KretaClaimPackages.FelnottkepzesModul.ClaimValue);
|
|
}
|
|
|
|
if (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue) && feladatKategoriaList.Contains(OktNevelesiKategoriaEnum.EGYMI))
|
|
{
|
|
claims.Add(KretaClaimPackages.EGYMIModul.ClaimValue);
|
|
}
|
|
|
|
claims.Add(KretaClaimPackages.TanuloKezelese.ClaimValue); //Egyelőre alapból megkapja mindenki a "TanuloKezelese" package-et
|
|
string claimsString = JsonConvert.SerializeObject(claims);
|
|
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
AddClaim(KretaClaimTypes.PackageCacheHash, claimsString.GetHashCode().ToString());
|
|
var resources = szerepkorok.Any() ? GetFelhasznaloResources(szerepkorok[0]) : new List<string>();
|
|
AddClaim(KretaClaimTypes.Resource, JsonConvert.SerializeObject(resources));
|
|
|
|
if (!ClaimData.IsNaploAdministrator && alkalmazottHelper.IsKozossegiSzolgalatKezelo())
|
|
{
|
|
claims.Add(KretaClaimPackages.IsKozossegiSzolgalatKezelo.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
|
|
if (!claims.Contains(KretaClaimPackages.Tanulo.ClaimValue) && !claims.Contains(KretaClaimPackages.Gondviselo.ClaimValue) && !claims.Contains(KretaClaimPackages.CsokkentettGondviselo.ClaimValue))
|
|
{
|
|
claims.Add(KretaClaimPackages.TavolletIgenylo.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
|
|
IntezmenyCO intezmenyiAdatok = new IntezmenyHelper(connectionType).GetIntezmenyiAdatok();
|
|
if (intezmenyiAdatok.IsCsakLepKezelo)
|
|
{
|
|
if (!claims.Contains(KretaClaimPackages.IsLEPKezelo.ClaimValue))
|
|
{ claims.Add(KretaClaimPackages.IsLEPKezelo.ClaimValue); }
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
|
|
AddClaim(KretaClaimTypes.CsokkentettTanuloLEP, System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(@"~\Configuration\CsokkentettTanuloLEPJson.json")));
|
|
}
|
|
|
|
if (ClaimData.IsOnlyAlkalmazott)
|
|
{
|
|
claims.Add(KretaClaimPackages.IsOnlyAlkalmozott.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
|
|
if (ClaimData.IsSzirIntezmeny)
|
|
{
|
|
claims.Add(KretaClaimPackages.IsSzirIntezmeny.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
|
|
if (ClaimData.IsSzakkepzoIntezmeny)
|
|
{
|
|
claims.Add(KretaClaimPackages.IsSzakkepzoIntezmeny.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
|
|
if (ClaimData.IsArchivIntezmeny)
|
|
{
|
|
if (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue))
|
|
{
|
|
ClaimData.IsArchivAdminUser = true;
|
|
}
|
|
|
|
//Semmilyen másik Claim-je nem lehet ilyenkor
|
|
claims.Clear();
|
|
|
|
claims.Add(KretaClaimPackages.IsArchivIntezmeny.ClaimValue);
|
|
claimsString = JsonConvert.SerializeObject(claims);
|
|
AddClaim(KretaClaimTypes.Package, claimsString);
|
|
}
|
|
}
|
|
|
|
public static void AddClaim(string claimType, string claimValue)
|
|
{
|
|
var identity = GetClaimIdentity();
|
|
AddClaimToIdentity(identity, claimType, claimValue);
|
|
}
|
|
|
|
public static void AddClaim(ClaimsIdentity identity, string claimType, string claimValue)
|
|
{
|
|
AddClaimToIdentity(identity, claimType, claimValue);
|
|
}
|
|
|
|
private static void AddClaimToIdentity(ClaimsIdentity identity, string claimType, string claimValue)
|
|
{
|
|
if (!identity.IsAuthenticated)
|
|
return;
|
|
RemoveClaim(identity, claimType);
|
|
if (claimValue == null)
|
|
return;
|
|
|
|
identity.AddClaim(new Claim(claimType, claimValue));
|
|
|
|
var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
|
|
authenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(new ClaimsPrincipal(identity), new AuthenticationProperties() { IsPersistent = false }); // ha IsPersistent true akkor belépve marad a felhasználó
|
|
}
|
|
|
|
private static void RemoveClaim(ClaimsIdentity identity, string claimType)
|
|
{
|
|
var claims = identity.FindClaims(claimType);
|
|
|
|
foreach (var tipus in claims)
|
|
{
|
|
identity.RemoveClaim(tipus);
|
|
}
|
|
}
|
|
|
|
public static ClaimsIdentity GetClaimIdentity()
|
|
{
|
|
return HttpContext.Current.User.Identity as ClaimsIdentity;
|
|
}
|
|
|
|
public static bool HasPackage(params string[] values)
|
|
{
|
|
var packages = ClaimData.FelhasznaloSzerepCsomagok;
|
|
bool result = false;
|
|
foreach (string value in values)
|
|
{
|
|
if (packages.Contains(value))
|
|
{
|
|
result = true;
|
|
break;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private static void AddTanarAdhatMagatartasSzorgalomJegyetClaimPackegeIfNeeded(SystemSettingsHelper systemSettingsHelper, List<string> claims)
|
|
{
|
|
var tanarAdhatMagatartasSzorgalomJegyet = !systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Magatartas_Szorgalom_Ertekeles_Csak_Ofokent);
|
|
if (tanarAdhatMagatartasSzorgalomJegyet && claims.Contains(KretaClaimPackages.Tanar.ClaimValue) && !claims.Contains(KretaClaimPackages.Osztalyfonok.ClaimValue) && !claims.Contains(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)) //Ofőknek másképp
|
|
{
|
|
claims.Add(KretaClaimPackages.TanarAdhatMagatartasSzorgalomJegyet.ClaimValue);
|
|
}
|
|
|
|
}
|
|
|
|
private static void AddLEPClaimPackegeIfNeeded(SystemSettingsHelper systemSettingsHelper, AlkalmazottHelper helper, List<string> claims)
|
|
{
|
|
var IsLEPKezelo = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Lazar_Ervin_Program_kezelese);
|
|
|
|
if (IsLEPKezelo && (claims.Contains(KretaClaimPackages.Adminisztrator.ClaimValue)
|
|
|| claims.Contains(KretaClaimPackages.Szuperadmin.ClaimValue)
|
|
|| claims.Contains(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)
|
|
|| claims.Contains(KretaClaimPackages.Osztalyfonok.ClaimValue)
|
|
|| helper.IsLEPKezelo()))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsLEPKezelo.ClaimValue);
|
|
}
|
|
}
|
|
|
|
private static void AddFelhasznaloMunkakoreNemTiltoListasClaimPackegeIfNeeded(SystemSettingsHelper systemSettingsHelper, TanarHelper tanarHelper, List<string> claims)
|
|
{
|
|
var tiltottMunkakorok = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Alkalmazottak_lathatjak_a_diakok_adatait);
|
|
|
|
if (claims.Contains(KretaClaimPackages.Tanar.ClaimValue))
|
|
{
|
|
var tanarAdatok = tanarHelper.GetTanarAdatok(ClaimData.FelhasznaloId);
|
|
if (!tanarAdatok.MunkaKor.HasValue || tiltottMunkakorok.Count == 0 || !tiltottMunkakorok.Contains(tanarAdatok.MunkaKor.Value))
|
|
{
|
|
claims.Add(KretaClaimPackages.FelhasznaloMunkakoreNemTiltoListas.ClaimValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void AddEllenorzobenLathatoOsztalyatlagClaimPackegeIfNeeded(SystemSettingsHelper systemSettingsHelper, List<string> claims)
|
|
{
|
|
var ellenorzobenLathatoOsztalyatlag = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyatlag_megjelenitese_az_ellenorzo_feluleten);
|
|
|
|
if (ellenorzobenLathatoOsztalyatlag && claims.Contains(KretaClaimPackages.Ellenorzo.ClaimValue))
|
|
{
|
|
claims.Add(KretaClaimPackages.EllenorzobenLathatoOsztalyatlag.ClaimValue);
|
|
}
|
|
|
|
}
|
|
|
|
private static void AddIsFeltaGondviseloOrTanuloClaimPackegeIfNeeded(SessionConnectionType connectionType, List<string> claims)
|
|
{
|
|
if (claims.Contains(KretaClaimPackages.Gondviselo.ClaimValue) && ClaimData.GondviseloId.HasValue
|
|
&& new GondviseloHelper(connectionType).IsGondviseloTanuloinakEvfolyamTipusaLetezik(ClaimData.GondviseloId.Value, Core.Constants.FeltarEvfolyamList))
|
|
{
|
|
claims.Add(KretaClaimPackages.IsFeltarGondviselo.ClaimValue);
|
|
}
|
|
else if (claims.Contains(KretaClaimPackages.Tanulo.ClaimValue) && new TanuloHelper(connectionType).IsTanuloFeltarEvfolyamos())
|
|
{
|
|
claims.Add(KretaClaimPackages.IsFeltarTanulo.ClaimValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
public delegate void ClaimSigninEventHandler(object sender, ClaimSigninEventArgs e);
|
|
|
|
public class ClaimSigninEventArgs : EventArgs
|
|
{
|
|
public ClaimSigninEventArgs(List<Claim> claims, LoginInfo loginInfo)
|
|
{
|
|
Claims = claims;
|
|
LoginInfo = loginInfo;
|
|
}
|
|
|
|
public List<Claim> Claims { get; set; }
|
|
|
|
public LoginInfo LoginInfo { get; set; }
|
|
}
|
|
}
|