This commit is contained in:
2023-11-23 10:07:00 +01:00
parent df489932df
commit d5e084ac6b
12 changed files with 94 additions and 408 deletions

View File

@@ -531,7 +531,7 @@ Public Class ClassDOC_SEARCH
Return False
End Try
End Function
Public Shared Function SET_WD_RIGHTS(RESULT_DOCID As Integer, RESULT_DOC_PATH As String, DeleteRightsBefore As Boolean)
Public Shared Function SET_WD_RIGHTS(oWMObject As WINDREAMLib.WMObject, RESULT_DOCID As Integer, RESULT_DOC_PATH As String, DeleteRightsBefore As Boolean)
Try
If CURRENT_RECORD_ID = 0 Then
MsgBox("No Record selected - Please select one!", MsgBoxStyle.Exclamation)
@@ -539,7 +539,7 @@ Public Class ClassDOC_SEARCH
End If
LOGGER.Debug("#### SETTING RIGHTS FOR FILE ######")
If ClassWDRights.Init = True Then
If ClassWDRights.Doc_Renew_Rights(RESULT_DOCID, RESULT_DOC_PATH, DeleteRightsBefore) Then
If ClassWDRights.Doc_Renew_Rights(oWMObject, RESULT_DOCID, RESULT_DOC_PATH, DeleteRightsBefore) Then
If ClassWDRights.MSG_RESULT <> "" Then
Dim msg = "Achtung: einige Rechte konnten nicht gesetzt werden: " & vbNewLine & ClassWDRights.MSG_RESULT
If USER_LANGUAGE <> "de-DE" Then

View File

@@ -172,20 +172,27 @@ Public Class ClassHelper
Public Shared Function File_open(RESULT_DOC_PATH As Object, DocID As String)
Try
RESULT_DOC_PATH = FORMAT_WM_PATH(RESULT_DOC_PATH)
CURRENT_OFFICE_FILE_CHANGED = False
If SHARE_DRIVE_ACTIVE Then
If RESULT_DOC_PATH.ToString.StartsWith(constWMOBJECTS) Then
RESULT_DOC_PATH = RESULT_DOC_PATH.ToString.Replace(constWMOBJECTS, WMPATH_PREFIX)
End If
End If
CURRENT_OFFICE_FILE_CHANGED = False
If RESULT_DOC_PATH <> Nothing Then
Dim EXT = Path.GetExtension(RESULT_DOC_PATH)
EXT = EXT.Replace(".", "")
Dim sql = String.Format("SELECT VIEWER FROM TBPMO_DOC_USER_VIEW WHERE USER_ID = {0} AND FILE_EXTENSION = '{1}'", USER_GUID, EXT)
Dim DT As DataTable = MYDB_ECM.GetDatatable(sql)
If DT.Rows.Count = 1 Then
Select Case DT.Rows(0).Item("VIEWER")
Case "DOC_VIEW"
OPEN_DOCVIEW(RESULT_DOC_PATH, DocID)
End Select
Else
File_SYSOPEN(RESULT_DOC_PATH, DocID)
End If
'Dim EXT = Path.GetExtension(RESULT_DOC_PATH)
'EXT = EXT.Replace(".", "")
' Dim sql = String.Format("SELECT VIEWER FROM TBPMO_DOC_USER_VIEW WHERE USER_ID = {0} AND FILE_EXTENSION = '{1}'", USER_GUID, EXT)
' Dim DT As DataTable = MYDB_ECM.GetDatatable(sql)
' If DT.Rows.Count = 1 Then
' Select Case DT.Rows(0).Item("VIEWER")
' Case "DOC_VIEW"
' OPEN_DOCVIEW(RESULT_DOC_PATH, DocID)
' End Select
' Else
File_SYSOPEN(RESULT_DOC_PATH, DocID)
'End If
Return True
Else
MSGBOX_Handler("ERROR", "", "Sorry, but the docpath for doc-id: " & DocID & " is nothing!")
@@ -264,7 +271,6 @@ Public Class ClassHelper
If FILE_FORMATS_CHANGE_DURING_EDIT.Contains(oExtension) Then
oSql = $"SELECT dwVersionID FROM VWPMO_DOC_SEARCH WHERE DocID = {BW_DocID}"
Dim odwVersionId = MYDB_ECM.GetScalarValue(oSql)
Dim oInsert = $"INSERT INTO TBPMO_DOC_ID_CHANGED (USER_ID,PROCESS_ID,VERSION_ID,OLD_DOC_ID,DOC_PATH) VALUES ({USER_GUID},'{ProcID.ToString}',{odwVersionId},{BW_DocID},'{BW_DocPath}')"
MYDB_ECM.ExecuteNonQuery(oInsert)
End If
@@ -272,6 +278,7 @@ Public Class ClassHelper
'oMyProcess.WaitForExit()
Catch ex As Exception
LOGGER.Warn("Error in Process1.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
MsgBox("Error in OpenFile: " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID, MsgBoxStyle.Exclamation)
Exit Sub
End Try

View File

@@ -181,7 +181,9 @@ Public Class ClassInit
SQL_FULLTEXT = KONFIG_DT.Rows(0).Item("SQL_FULLTEXT")
WMDriveLetter = KONFIG_DT.Rows(0).Item("WM_LAUFWERKBUCHSTABE")
WMPATH_PREFIX = KONFIG_DT.Rows(0).Item("WMPATH_PREFIX")
If Not WMPATH_PREFIX.ToUpper.StartsWith("\\WINDREAM\OBJECTS") Then
If Not WMPATH_PREFIX.ToUpper.StartsWith(constWMOBJECTS) Then
SHARE_DRIVE_ACTIVE = True
LOGGER.Info($"WM SHARE_DRIVE [{WMPATH_PREFIX}] via TBPMO_KONFIGURATION is active")
End If
@@ -254,6 +256,20 @@ Public Class ClassInit
ClassHelper.InsertEssential_Log(0, "USER-ID", String.Format("User '{0}' not listed in Userconfiguration", USER_USERNAME))
Return False
Else
DTTBPMO_SERVICE_RIGHT_CONFIG = MYDB_ECM.GetDatatable("SELECT * FROM TBPMO_SERVICE_RIGHT_CONFIG WHERE GUID = 1")
WM_DOMAIN = DTTBPMO_SERVICE_RIGHT_CONFIG.Rows(0).Item("AD_DOMAIN")
WM_USER = DTTBPMO_SERVICE_RIGHT_CONFIG.Rows(0).Item("AD_USER")
WM_SERVER = DTTBPMO_SERVICE_RIGHT_CONFIG.Rows(0).Item("AD_SERVER")
Dim PWplainText As String
Dim wrapper As New ClassEncryption("!35452didalog=")
' DecryptData throws if the wrong password is used.
Try
PWplainText = wrapper.DecryptData(DTTBPMO_SERVICE_RIGHT_CONFIG.Rows(0).Item("AD_USER_PW"))
Catch ex As Exception
LOGGER.Warn("The Userpassword could not be decrypted")
PWplainText = ""
End Try
WM_USER_PW = PWplainText
USER_GUID = USER_DT.Rows(0).Item("USER_ID")
Try
@@ -261,6 +277,7 @@ Public Class ClassInit
Catch ex As Exception
USERID_FK_INT_ECM = 0
End Try
USER_IS_ADMIN = USER_DT.Rows(0).Item("IS_ADMIN")
USER_LANGUAGE = USER_DT.Rows(0).Item("USER_LANGUAGE")
clsCURRENT.USER_LANGUAGE = USER_LANGUAGE
USER_DATE_FORMAT = USER_DT.Rows(0).Item("USER_DATE_FORMAT")
@@ -276,13 +293,16 @@ Public Class ClassInit
If oMode.StartsWith("WMMODE") Then
WorkMode_WMMODE = oMode.Replace("WMMODE=", "")
LOGGER.Debug($"oWorkmode WMMODE = [{WorkMode_WMMODE}]")
If WorkMode_WMMODE = "READ" Then
WM_READ_ONLY = True
LOGGER.Info("WINDREAM IS CONFIGURED READ ONLY FOR USER!")
End If
ElseIf oMode.StartsWith("WM_PRAEFIX") Then
WMPATH_PREFIX = oMode.Replace("WM_PRAEFIX=", "")
If Not WMPATH_PREFIX.ToUpper.StartsWith("\\WINDREAM\OBJECTS") Then
WMPATH_via_WMA = True
LOGGER.Debug($"oWorkmode WM_PRAEFIX = [{WMPATH_PREFIX}]")
If Not WMPATH_PREFIX.ToUpper.StartsWith(constWMOBJECTS) Then
SHARE_DRIVE_ACTIVE = True
LOGGER.Info($"WM SHARE_DRIVE [{WMPATH_PREFIX}] via WORKING_MODE is active")
End If
@@ -297,6 +317,10 @@ Public Class ClassInit
LOGGER.Info("WINDREAM IS CONFIGURED READ ONLY AS No Workmode was configured and Sharedrive is active!")
WM_READ_ONLY = True
End If
If USER_IS_ADMIN And SHARE_DRIVE_ACTIVE = True Then
LOGGER.Info($"User configured as an admin, but SHAREDRIVE ACTIVE - So WM_READ_ONLY = False!")
WM_READ_ONLY = False
End If
End If
@@ -353,7 +377,7 @@ Public Class ClassInit
oFNSQL = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME,CONNECTION_STRING) VALUES ({0},{1},'Record-Organizer','{2}','{3}','{4}')", USER_GUID, CLIENT_SELECTED, My.Application.Info.Version.ToString, Environment.MachineName, ConStringMain)
MYDB_ECM.ExecuteNonQuery(oFNSQL)
USER_IS_ADMIN = USER_DT.Rows(0).Item("IS_ADMIN") 'vorher RECORD_ADMIN
If USER_IS_ADMIN = True Then
If ESC_Hidden = True Then
frmLoginUserSelect.ShowDialog()
@@ -364,12 +388,18 @@ Public Class ClassInit
End If
End If
Try
If WM_READ_ONLY = False Then
Try
WMMOD = New DigitalData.Modules.Windream.Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, "", "", "", "")
LOGGER.Debug($"Connecting to windream-Server via DigitalData.Modules.Windream.Windream...")
WMMOD = New DigitalData.Modules.Windream.Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, WM_SERVER, WM_USER, WM_USER_PW, WM_DOMAIN)
If IsNothing(WMMOD) Then
MsgBox("Could not connect to windream! Check Your configuration", MsgBoxStyle.Exclamation)
Else
LOGGER.Debug($"..Successfully connected to Modules.Windream!")
End If
Catch ex As Exception
LOGGER.Error(ex)

View File

@@ -67,13 +67,13 @@ Public Class ClassWDRights
Return False
End Try
End Function
Public Shared Function Doc_Renew_Rights(doc_id As Integer, reldocpath As String, deleterights As Boolean) As Boolean
Public Shared Function Doc_Renew_Rights(oWMObject As WMObject, doc_id As Integer, reldocpath As String, deleterights As Boolean) As Boolean
Try
LOGGER.Debug(String.Format("Working on rights for file: {0}", reldocpath))
Dim DT_USER_RIGHT As DataTable
Dim DT_GROUP_RIGHT As DataTable
Dim oSession
Dim oWMObject As WINDREAMLib.WMObject
' Dim oWMObject As WINDREAMLib.WMObject
Dim UserGroupRelation
Dim UserOrGroup
Dim oUSer
@@ -81,7 +81,7 @@ Public Class ClassWDRights
Try
'Dedizierte Session herstellen
oSession = GetWMSessionAsUser(AD_DOMAIN, AD_SERVER, AD_USER, AD_USER_PW)
oSession = GetWMSessionAsUser(WM_DOMAIN, WM_SERVER, WM_USER, WM_USER_PW)
Catch ex As Exception
Dim msg = "Error in Doc_Renew_Rights-GetWMSessionAsUser : " & ex.Message
LOGGER.Warn(msg)
@@ -102,16 +102,17 @@ Public Class ClassWDRights
LOGGER.Debug(String.Format("Amount of Userrights: {0}", DT_USER_RIGHT.Rows.Count))
End If
LOGGER.Debug(String.Format("Amount of Grouprights: {0}", DT_GROUP_RIGHT.Rows.Count))
Try
'Object definieren
oWMObject = oSession.GetWMObjectByPath(1, reldocpath)
LOGGER.Debug("Object created.")
Catch ex As Exception
Dim msg = "Error GetWMObjectByPath: " & reldocpath & vbNewLine & Err.Description
LOGGER.Warn(msg)
LOGGER.Error(ex)
Return False
End Try
'Try
' 'Object definieren
' oWMObject = WMCLASS.GetFileByPath(reldocpath) ' oSession.GetWMObjectByPath(1, reldocpath)
' LOGGER.Debug("oWMObject created.")
'Catch ex As Exception
' Dim msg = "ClassWDRights - Error GetWMObjectByPath: " & reldocpath & vbNewLine & Err.Description
' LOGGER.Warn(msg)
' LOGGER.Error(ex)
' Return False
'End Try
Dim lret
Try
' Objekt muss zur Rechteänderung gelockt werden