236 lines
12 KiB
C#
236 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Web.Mvc;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Client.KGR;
|
|
using Kreta.Core;
|
|
using Kreta.Enums.ManualEnums;
|
|
using Kreta.Web.Helpers;
|
|
|
|
namespace Kreta.Web.Security
|
|
{
|
|
public class KretaAuthorization : IKretaAuthorization
|
|
{
|
|
public bool IsValidEvent(int eventId, CalendarOraTypeEnum calendarOraType, DateTime date)
|
|
{
|
|
switch (calendarOraType)
|
|
{
|
|
case CalendarOraTypeEnum.OrarendiOra:
|
|
return IsValidOrarendiOra(eventId, date);
|
|
|
|
case CalendarOraTypeEnum.TanitasiOra:
|
|
return IsValidTanitasiOra(eventId);
|
|
|
|
case CalendarOraTypeEnum.TanoranKivuliFoglalkozas:
|
|
case CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas:
|
|
case CalendarOraTypeEnum.TanoranKivuliTevekenyseg:
|
|
case CalendarOraTypeEnum.Egyeb:
|
|
case CalendarOraTypeEnum.UresOra:
|
|
case CalendarOraTypeEnum.TanevRendjeEsemeny:
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public bool IsValidOrarendiOra(int orarendiOraId, DateTime oraDatuma)
|
|
{
|
|
if (ClaimManager.HasPackage(KretaClaimPackages.Ellenorzo.ClaimValue))
|
|
{
|
|
return AuthorizationHelper.OrarendiOra.TanuloHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), orarendiOraId, oraDatuma);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool IsValidTanitasiOra(int tanitasiOraId)
|
|
{
|
|
if (ClaimManager.HasPackage(KretaClaimPackages.Ellenorzo.ClaimValue))
|
|
{
|
|
return AuthorizationHelper.TanitasiOra.TanuloHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), tanitasiOraId);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public bool IsValidNemKotottMunkaido(int nemKotottMunkaidoId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.NemKotottMunkaido.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), nemKotottMunkaidoId));
|
|
|
|
public bool IsValidOsztaly(int osztalyId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.OsztalyCsoport.OsztalyfonokHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), osztalyId));
|
|
|
|
public bool IsValidCsoport(int csoportId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.OsztalyCsoport.CsoportvezetoHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), csoportId));
|
|
|
|
public bool IsValidOsztalyCsoport(int osztalyCsoportId, bool lehetTTF = false)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.OsztalyCsoport.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), osztalyCsoportId, lehetTTF));
|
|
|
|
public bool IsValidOsztalyCsoport(int osztalyCsoportId, int tantargyId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.OsztalyCsoport.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), osztalyCsoportId, tantargyId));
|
|
|
|
public bool IsValidOsztalyfonokTanuloja(int tanuloId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Tanulo.OsztalyfonokHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), tanuloId));
|
|
|
|
public bool IsValidTanulo(int tanuloId, bool lehetTTF = false)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Tanulo.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), tanuloId, lehetTTF));
|
|
|
|
public bool IsValidTanulo(List<int> tanuloIdList, int osztalyCsoportId, bool lehetTTF = false)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Tanulo.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), tanuloIdList, osztalyCsoportId, lehetTTF));
|
|
|
|
public bool IsValidTanulo(int tanuloId, int tantargyId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Tanulo.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), tanuloId, tantargyId));
|
|
|
|
public bool IsValidErtekeles(int ertekelesId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Ertekeles.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), ertekelesId));
|
|
|
|
public bool IsValidMagatartasSzorgalom(int magatartasSzorgalomId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.MagatartasSzorgalom.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), magatartasSzorgalomId));
|
|
|
|
public bool IsValidMulasztas(int mulasztasId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Mulasztas.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), mulasztasId));
|
|
|
|
public bool IsValidIgazolas(int igazolasId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.Igazolas.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), igazolasId));
|
|
|
|
public bool IsValidKozossegiSzolgalat(int kozossegiSzolgalatId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.KozossegiSzolgalat.TanarHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), kozossegiSzolgalatId));
|
|
|
|
public bool IsValidErettsegiEredmeny(int erettsegiEredmenyId)
|
|
=> AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(()
|
|
=> AuthorizationHelper.ErettsegiEredmeny.OsztalyfonokHasAccess(ConnectionTypeExtensions.GetSessionConnectionType(), erettsegiEredmenyId));
|
|
|
|
#region Duális képzés
|
|
|
|
// TODO: Ezeket ki kell szedni, hogy és az IsValidDualisKepzes függvényt kell használni mindenhol!
|
|
// Ha esetleg előfordul, hogy egyedi autorizáció kell egyes felületeket, majd azoknak kell újat felvenni.
|
|
// Minden új esetében, ahol nincs egyedi autorizáció, ott a IsValidDualisKepzes függvényt használjuk!
|
|
public bool IsValidSzakkepzesiMunkaszerzodes() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisOktatoCsoporthozRendeles() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisTanulok() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisTanuloSorolas() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisAlkalmazottak() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisCsoportok() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisHelyszinek() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisErtekelesek() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisMulasztasok() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisFeljegyzesek() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidTanulasiElemImportExport() => IsValidDualisOktato();
|
|
|
|
public bool IsValidTanulasiElemek() => IsValidDualisOktato();
|
|
|
|
public bool IsValidDualisKepzes() => IsDualisKepzesIsEnabled &&
|
|
ClaimData.IsSzakkepzoIntezmeny &&
|
|
ClaimData.IsSelectedTanev21_22OrLater &&
|
|
!ClaimData.IsDefaultAdminUser &&
|
|
(ClaimData.FelhasznaloSzerepkor == Enums.SzerepkorTipusEnum.Dualis_Admin ||
|
|
ClaimData.FelhasznaloSzerepkor == Enums.SzerepkorTipusEnum.Adminisztrator ||
|
|
ClaimData.FelhasznaloSzerepCsomagok.Contains(KretaClaimPackages.IsSzakiranyuOktatasertFelelos.ClaimValue));
|
|
|
|
public bool IsValidDualisOktato()
|
|
{
|
|
if (!IsDualisKepzesIsEnabled || !ClaimData.IsSelectedTanev21_22OrLater || !ClaimData.IsSzakkepzoIntezmeny || ClaimData.FelhasznaloSzerepkor != Enums.SzerepkorTipusEnum.Naplo)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var szervezetId = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetAlkalmazottSzervezetId(ClaimData.FelhasznaloId);
|
|
|
|
return szervezetId.IsEntityId();
|
|
}
|
|
|
|
private bool IsDualisKepzesIsEnabled => new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType()).GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.DualisKepzes, IntezmenyConfigTipusEnum.IsEnabled);
|
|
|
|
public bool IsValidDualisAdminOrarend() => IsValidDualisKepzes();
|
|
|
|
public bool IsValidDualisElektronikusUzenetek() => IsValidDualisOktato();
|
|
|
|
public bool IsValidDualisBeirasok() => IsValidDualisOktato();
|
|
|
|
#endregion Duális képzés
|
|
|
|
public bool IsValidTanuloApaczai()
|
|
{
|
|
if (!ClaimData.IsSelectedTanev21_22OrLater)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var connection = ConnectionTypeExtensions.GetSessionConnectionType();
|
|
var tanuloHelper = new TanuloHelper(connection);
|
|
var tanuloApaczaiHelper = new TanuloApaczaiHelper(connection);
|
|
var apaczaiMenuVisibility = tanuloHelper.CheckApaczaiMenuVisibility(ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater);
|
|
try
|
|
{
|
|
var kgrClient = (IKGRClient)DependencyResolver.Current.GetService(typeof(IKGRClient));
|
|
var tanuloVanPalyazata = new TanuloApaczaiHelper(connection).GetPalyazat(kgrClient, ClaimData.FelhasznaloIdpEgyediAzonosito).Id > 0;
|
|
if (tanuloVanPalyazata)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var tanulonakVanElfogadottPalyazataMasikIntezmenyben = tanuloApaczaiHelper.HasElfogadottPalyazatMasikIntezmenyByOktatasiAzonosito(kgrClient, ClaimData.IntezmenyGuid.Value, ClaimData.FelhasznaloId);
|
|
var tanuloApaczaiSzerzodeses = tanuloHelper.GetTanuloiAdatok(ClaimData.FelhasznaloId, ClaimData.KovTanevID, ClaimData.IsSelectedTanev20_21OrLater, ClaimData.IsSelectedTanev21_22OrLater).IsApaczaiSzerzodeses;
|
|
return (tanuloApaczaiSzerzodeses && tanulonakVanElfogadottPalyazataMasikIntezmenyben) || apaczaiMenuVisibility;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var intezmenyConfigHelper = new IntezmenyConfigHelper(connection);
|
|
if (!intezmenyConfigHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Apaczai, IntezmenyConfigTipusEnum.IsEnabled))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return apaczaiMenuVisibility;
|
|
}
|
|
|
|
private bool AdminVagySzuperOsztalyfonokJogosultasagEllenorzes(Func<bool> action)
|
|
{
|
|
if (ClaimManager.HasPackage(KretaClaimPackages.Adminisztrator.ClaimValue))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if (ClaimManager.HasPackage(KretaClaimPackages.Naplo.ClaimValue))
|
|
{
|
|
if (ClaimManager.HasPackage(KretaClaimPackages.SzuperOsztalyfonok.ClaimValue))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return action();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|