Public Class cBerechtignunen Shared BER_LIST As New cBerechtigungsObjekte_List 'NEW = Laden ' Sub initBER() ' BER_LIST = New cBerechtigungsObjekte_List ' End Sub Public Shared Function CHECK_BERECHTIGUNG(Form_Berechtigung As System.Windows.Forms.Form) As Integer ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Return CHECK_BERECHTIGUNG(Form_Berechtigung.Name, Form_Berechtigung.GetType.Module.Name.Replace(".exe", "")) End Function Public Shared Function CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung As String, ME_Form As System.Windows.Forms.Form) As Integer ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Return CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung, ME_Form.GetType.Module.Name.Replace(".exe", "")) End Function Public Shared Function CHECK_BERECHTIGUNG_bool(Berechtigung_Bezeichnung As String, ME_Form As System.Windows.Forms.Form) As Boolean ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Try If ME_Form Is Nothing Then Return False Dim prog = ME_Form.GetType.Module.Name.Replace(".exe", "") 'FEHLER Return (CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung, prog) = 0) Catch ex As Exception MsgBox("BERECHTIGUNGSERR: " & Berechtigung_Bezeichnung & vbNewLine & vbNewLine & ex.Message & vbNewLine & ex.StackTrace) Return False End Try End Function Public Shared Function CHECK_BERECHTIGUNG_bool(Berechtigung_Bezeichnung As String, prog_Name As String) As Boolean ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Try Return (CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung, prog_Name) = 0) Catch ex As Exception MsgBox(ex.Message & vbNewLine & ex.StackTrace) Return False End Try End Function Public Shared Function CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung As String, prog_Name As String) As Integer ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Dim SQL As New SQL Dim prog_id = -1 Select Case prog_Name Case "AVISO" 'If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then ' prog_id = 13 ' Else prog_id = 5 'End If Case "SDL" prog_id = 7 Case Else ' MsgBox("SELECT isnull([prog_id],0) FROM [tblProgramme] WHERe [prog_codename]='" & prog_Name & "'") prog_id = SQL.getValueTxtBySql("SELECT isnull([prog_id],0) FROM [tblProgramme] WHERe [prog_codename]='" & prog_Name & "'", "ADMIN") End Select Return CHECK_BERECHTIGUNG(Berechtigung_Bezeichnung, prog_id) End Function Public Shared Function CHECK_BERECHTIGUNG(ber_bez As String, prog_Id As Integer) As Integer ' Klärt die Berechtigungs-Zugriffs-Stufe des Mitarbeiters für das Object Try If VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME = "" Then Return 0 Dim berechtigungsstufe As Integer = 99 Dim benutzerBer As cBerechtigungenBenutzerGruppenZuordnung_List = VERAG_PROG_ALLGEMEIN.cAllgemein.BENUTZER_BERECHTIGUNGS_GRUPPEN If benutzerBer Is Nothing Then MsgBox("Ihrem Benutzerkonto wurden keine Berechtigungen zugeordnet!") Return 0 End If Dim found = False For Each lber In BER_LIST.LIST If lber.bero_bezeichnung.ToUpper = ber_bez.ToUpper And lber.bero_progId = prog_Id Then found = True : Exit For End If Next If Not found Then 'Die Berechtigungszuorgnung ist nicht gegeben --> Zugriff verwehrt MsgBox("Die Berechtigung '" & ber_bez & "' existiert nicht.") Return 99 End If For Each lber In BER_LIST.LIST If lber.bero_bezeichnung.ToUpper = ber_bez.ToUpper And lber.bero_progId = prog_Id Then For Each ll In lber.BER_OBJ_ZUORD 'Liste der BerechtignungGruppen im Berechtigungsonjekt For Each bb In benutzerBer.LIST If bb.berbgz_progId = prog_Id Then 'BenutzerProg = Prog If ll.beroz_berechtigungsstufe >= 100 Then Return ll.beroz_berechtigungsstufe 'Größer als 3 stellen --> immer priorität If ll.beroz_art = "G" And ll.beroz_bergrId = bb.berbgz_bergrId Then 'GruppenBerchtigung 'gefunden! If ll.beroz_berechtigungsstufe < berechtigungsstufe Then berechtigungsstufe = ll.beroz_berechtigungsstufe ElseIf ll.beroz_art = "F" And ll.Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Then If ll.beroz_berechtigungsstufe < berechtigungsstufe Then berechtigungsstufe = ll.beroz_berechtigungsstufe ElseIf ll.beroz_art = "N" And ll.Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG Then If ll.beroz_berechtigungsstufe < berechtigungsstufe Then berechtigungsstufe = ll.beroz_berechtigungsstufe ElseIf ll.beroz_art = "A" And ll.Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG Then If ll.beroz_berechtigungsstufe < berechtigungsstufe Then berechtigungsstufe = ll.beroz_berechtigungsstufe ElseIf ll.beroz_art = "B" And ll.beroz_bergrId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID Then Return ll.beroz_berechtigungsstufe 'Definitiv dem Benutzer zugeordnete Berechtigung!!!! End If End If Next Next End If Next Return berechtigungsstufe Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try Return 99 End Function End Class