From a3d87f3f8c1b4ed876d47b4e0c4d287e5d220a42 Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Fri, 18 May 2018 14:39:15 +0200 Subject: [PATCH] Gruppen_UserStruktur --- .../DD_PM_WINDREAM/DesignTimeBuild/.dtbcache | Bin 0 -> 218 bytes app/DD_PM_WINDREAM/ClassInit.vb | 89 +++++++++++++----- app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb | 2 + app/DD_PM_WINDREAM/frmMain.vb | 7 +- 4 files changed, 74 insertions(+), 24 deletions(-) create mode 100644 app/.vs/DD_PM_WINDREAM/DesignTimeBuild/.dtbcache diff --git a/app/.vs/DD_PM_WINDREAM/DesignTimeBuild/.dtbcache b/app/.vs/DD_PM_WINDREAM/DesignTimeBuild/.dtbcache new file mode 100644 index 0000000000000000000000000000000000000000..715c91bb439b5d68c69962a8f4a3c4d0343f04fc GIT binary patch literal 218 zcmaKm$qB*$5Jlh3GPHt#pa|YXMLZ~O=p`s|K_ilc#N}p(c3=Z`;WGuu@Mrlme`YE` zohAV-(ctlU?bdRA+Jwy6aU$nH%vPT>l3iLA+=#ePbLMKkmrLyp7_u-98pM literal 0 HcmV?d00001 diff --git a/app/DD_PM_WINDREAM/ClassInit.vb b/app/DD_PM_WINDREAM/ClassInit.vb index fe8725a..f9965d6 100644 --- a/app/DD_PM_WINDREAM/ClassInit.vb +++ b/app/DD_PM_WINDREAM/ClassInit.vb @@ -84,43 +84,31 @@ Public Class ClassInit ClassLogger.Add(">> Username: " & USER_USERNAME, False) CURRENT_USERID = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) - Dim userexists As Boolean = True + If IsDBNull(CURRENT_USERID) Or IsNothing(CURRENT_USERID) Then - userexists = False + USER_EXISTS = False + Else + USER_EXISTS = True End If - If userexists = False Then + If USER_EXISTS = False Then ClassLogger.Add("User '" & USER_USERNAME & "' not configured in Useradministration! (DBNull)", True) 'MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") 'Me.Close() ERROR_STATE = "NO USER" ' Throw New Exception("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!") - MsgBox("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!",MsgBoxStyle.Exclamation) + MsgBox("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation) Else If LogErrorsOnly = False Then ClassLogger.Add(" >> User exists....", False) 'Am System anmelden Refresh_Licence() - - Dim sql1 = "SELECT COUNT(GUID) FROM TBPM_PROFILE" - Dim anz = ClassDatabase.Execute_Scalar(sql1, MyConnectionString, True) - If anz > LICENSE_PROFILES Then - MsgBox("Your amount of configurable profiles is limited to " & LICENSE_PROFILES.ToString & " profiles. You can not add more profiles!" & vbNewLine & "Please contact Digital Data for further licensedetails", MsgBoxStyle.Information) - End If + Check_User_Exists_in_PMGroups() ClassAllgemeineFunktionen.LoginOut("LOGIN") + sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Process-Manager') AND CLIENT_ID = {0}", 1) + USERCOUNT_LOGGED_IN = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) - sql = String.Format("SELECT * FROM TBDD_USER_MODULES T, TBDD_MODULES T1 WHERE T.MODULE_ID = T1.GUID AND UPPER(T1.SHORT_NAME) = UPPER('PM') AND T.USER_ID = {0}", CURRENT_USERID) - DT_USER2MODULE = ClassDatabase.Return_Datatable(sql) - If Not IsNothing(DT_USER2MODULE) Then - If DT_USER2MODULE.Rows.Count = 1 Then - USER_IS_ADMIN = DT_USER2MODULE.Rows(0).Item("IS_ADMIN") - End If - End If - - sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Process-Manager') AND CLIENT_ID = {0}", 1) - USERCOUNT_LOGGED_IN = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True) - - If LogErrorsOnly = False Then ClassLogger.Add(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False) + If LogErrorsOnly = False Then ClassLogger.Add(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False) If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then MsgBox("Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Process Manager!", False) @@ -133,7 +121,10 @@ Public Class ClassInit 'Alles OK bis hierhin...nun die FolderwatchKonfig laden If LogErrorsOnly = False Then ClassLogger.Add(" >> Init Userlogin successfull completed....", False) - End If + + End If + + Catch ex As Exception ClassLogger.Add("Unexpected Error in InitUserLogin: " & ex.Message, True) ERROR_STATE = "START INCOMPLETE" @@ -149,4 +140,56 @@ Public Class ClassInit ERROR_STATE = "Basics not initialized" End Try End Sub + Private Function Check_User_Exists_in_Group(ByVal Groupname As String) + Try + Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = '{1}'", CURRENT_USERID, Groupname) + Dim DT As DataTable = ClassDatabase.Return_Datatable(sel) + If Not IsNothing(DT) Then + If DT.Rows.Count = 1 Then + Return True + Else + Return False + End If + Else + Return False + End If + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in CheckUserExistsinGroup:") + Return False + End Try + End Function + Private Function Check_User_Exists_in_PMGroups() + Try + Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_USER'", CURRENT_USERID) + Dim DT As DataTable = ClassDatabase.Return_Datatable(sel) + If Not IsNothing(DT) Then + If DT.Rows.Count = 1 Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_USER-Group....", False) + USER_IN_MODULE = True + Else + sel = String.Format("select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = {0} AND T.MODULE_ID = 3", CURRENT_USERID) + DT = ClassDatabase.Return_Datatable(sel) + If Not IsNothing(DT) Then + If DT.Rows.Count = 1 Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> Singe User-relation defined for user....", False) + USER_IN_MODULE = True + End If + End If + End If + End If + sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_ADMINS'", CURRENT_USERID) + DT = ClassDatabase.Return_Datatable(sel) + + If Not IsNothing(DT) Then + If DT.Rows.Count = 1 Then + If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_ADMINS-Group....", False) + USER_IS_ADMIN = True + USER_IN_MODULE = True + End If + End If + + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Check_User_Exists_in_PMGroups:") + End Try + End Function End Class diff --git a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb index 23df3eb..fd42427 100644 --- a/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb +++ b/app/DD_PM_WINDREAM/ModuleRuntimeVariables.vb @@ -16,6 +16,8 @@ Public DT_USER2MODULE As DataTable Public CURRENT_USERID + Public USER_EXISTS = False + Public USER_IN_MODULE = False Public LICENSE_COUNT As Integer = 0 Public LICENSE_EXPIRED As Boolean = False Public LICENSE_PROFILES As Integer = 0 diff --git a/app/DD_PM_WINDREAM/frmMain.vb b/app/DD_PM_WINDREAM/frmMain.vb index 36012b9..874cf9c 100644 --- a/app/DD_PM_WINDREAM/frmMain.vb +++ b/app/DD_PM_WINDREAM/frmMain.vb @@ -91,8 +91,13 @@ Public Class frmMain tslblLicenses.Text = "Anzahl Lizenzen: " & LICENSE_COUNT If LogErrorsOnly = False Then ClassLogger.Add(" >> Initializing MainForm....", False) If ERROR_STATE = "NO USER" Then - MsgBox("Achtung: Sie sind nicht für die Nutzung von ProcessManager freigegeben!" & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") + MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt!" & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") Me.Close() + ElseIf USER_IN_MODULE = False Then + If USER_IS_ADMIN = False Then + MsgBox("Achtung: Sie sind nicht für die Nutzung von ProcessManager freigegeben!" & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") + Me.Close() + End If Else ClassLogger.Add(">> Username: " & Environment.UserName, False) 'Wenn license abgelaufen und der User nicht admin ist!