diff --git a/Interfaces/ActiveDirectoryInterface.vb b/Interfaces/ActiveDirectoryInterface.vb index 5da2f55a..a3c1ca37 100644 --- a/Interfaces/ActiveDirectoryInterface.vb +++ b/Interfaces/ActiveDirectoryInterface.vb @@ -37,23 +37,22 @@ Public Class ActiveDirectoryInterface _logger.Info("Using RootPath {0}", _rootPath) End Sub - Public Function SyncUsersForGroup(GroupName As String, Firebird As Firebird, MSSQL As MSSQLServer) As List(Of ADUser) + Public Function SyncUsersForGroup(GroupName As String, MSSQL As MSSQLServer) As List(Of ADUser) Try - Return SyncUsersForGroup(GroupName, New List(Of AttributeMapping), Firebird, MSSQL) + Return SyncUsersForGroup(GroupName, New List(Of AttributeMapping), MSSQL) Catch ex As Exception _logger.Error(ex) Return Nothing End Try End Function - Public Function SyncUsersForGroup(GroupName As String, AttributeMappings As List(Of AttributeMapping), Firebird As Firebird, MSSQL As MSSQLServer, Optional Filter As String = DEFAULT_USER_FILTER) As List(Of ADUser) + Public Function SyncUsersForGroup(GroupName As String, AttributeMappings As List(Of AttributeMapping), MSSQL As MSSQLServer, Optional Filter As String = DEFAULT_USER_FILTER) As List(Of ADUser) Dim oUsers As New List(Of ADUser) Dim oSyncedUsers As New List(Of ADUser) Dim oGroupId As Int64 = Nothing - Dim oFirebirdSync As New SyncUsers.SyncUsersFirebird(_logConfig, Firebird) Dim oSQLSync As New SyncUsers.SyncUsersMSSQL(_logConfig, MSSQL) - Dim oSyncedUsersFirebird, oSyncedUsersMSSQL As List(Of ADUser) + Dim oSyncedUsersMSSQL As List(Of ADUser) Try _logger.Debug("Fetching users from ActiveDirectory") @@ -64,16 +63,6 @@ Public Class ActiveDirectoryInterface Return Nothing End Try - ' Do the actual sync into firebird - If Firebird IsNot Nothing Then - oSyncedUsersFirebird = oFirebirdSync.SyncUsers(GroupName, oUsers, AttributeMappings) - If oSyncedUsersFirebird.Count > 0 Then - _logger.Debug("Synced {0} users to Firebird", oSyncedUsersFirebird.Count) - End If - Else - _logger.Debug("SyncUsersForGroup: _firebird is nothing. ") - End If - ' Do the actual sync into MSSQL If MSSQL IsNot Nothing Then oSyncedUsersMSSQL = oSQLSync.SyncUsers(GroupName, oUsers, AttributeMappings) diff --git a/Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb b/Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb deleted file mode 100644 index 182e2718..00000000 --- a/Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb +++ /dev/null @@ -1,145 +0,0 @@ -Imports DigitalData.Modules.Database -Imports DigitalData.Modules.Interfaces -Imports DigitalData.Modules.Logging - -Namespace SyncUsers - Public Class SyncUsersFirebird - Implements ISyncUsers - - Private ReadOnly _logConfig As LogConfig - Private ReadOnly _logger As Logger - Private ReadOnly _firebird As Database.Firebird - - Public Sub New(LogConfig As LogConfig, Firebird As Database.Firebird) - _logConfig = LogConfig - _logger = LogConfig.GetLogger() - _firebird = Firebird - End Sub - - Public Function SyncUsers(GroupName As String, Users As List(Of ADUser), PropertyMapping As List(Of AttributeMapping)) As List(Of ADUser) Implements ISyncUsers.SyncUsers - Dim oGroupId As Integer - Dim oSyncedUsers As New List(Of ADUser) - - Try - _logger.Debug("Getting group Id for group [{0}]", GroupName) - oGroupId = GetGroupId(GroupName) - - If oGroupId = 0 Then - _logger.Debug("Group [{0}] does not exist in database or is not enabled for sync.", GroupName) - Return oSyncedUsers - End If - - _logger.Debug("Using group Id [{0}]", oGroupId) - Catch ex As Exception - _logger.Error(ex) - Return oSyncedUsers - End Try - - For Each oUser In Users - Dim oUserId As Int64 - Dim oUserExists As Boolean = False - - ' Check if user already exists - Try - _logger.Debug("Checking if user [{0}] exists", oUser) - oUserId = GetUserId(oUser.samAccountName) - oUserExists = Not IsNothing(oUserId) - _logger.Debug("User [{0}] exists in database: ", oUser, oUserExists) - Catch ex As Exception - _logger.Error(ex) - _logger.Warn("Could not get UserId for user. Skipping") - Continue For - End Try - - ' I user does not exist, create a new user - Try - If Not oUserExists Then - _logger.Debug("Creating new user for [{0}]", oUser) - oUserId = CreateUser(oUser) - _logger.Debug("User created with Id [{0}]", oUserId) - End If - Catch ex As Exception - _logger.Error(ex) - _logger.Warn("Could not create user. Skipping") - Continue For - End Try - - ' Add the user to group - Try - AddUserToGroup(oUserId, oGroupId) - Catch ex As Exception - _logger.Error(ex) - _logger.Warn("Could not add user to group. Skipping") - Continue For - End Try - - oSyncedUsers.Add(oUser) - Next - - Return oSyncedUsers - End Function - - Private Function AddUserToGroup(UserId As Integer, GroupId As Integer) As Boolean Implements ISyncUsers.AddUserToGroup - Try - Dim oSQL = $"SELECT FNICM_RADM_NEW_USER2GROUP({UserId}, {GroupId}, 'AD-Sync') from RDB$DATABASE" - Dim oRecordId = _firebird.GetScalarValue(oSQL) - - If IsDBNull(oRecordId) Then - _logger.Warn("UserId {0} - GroupId {1} relation already exists.", UserId, GroupId) - Return False - End If - - Return True - Catch ex As Exception - _logger.Error(ex) - Throw ex - End Try - End Function - Private Function GetGroupId(GroupName As String) As Integer Implements ISyncUsers.GetGroupId - Try - Dim oSQL As String = $"SELECT FNICM_GET_RECORD4SYSKEY('{GroupName}','002-NAME') from RDB$DATABASE" - Dim oGroupId = _firebird.GetScalarValue(oSQL) - - If IsDBNull(oGroupId) OrElse oGroupId = 0 Then - _logger.Debug("Group {0} not found in database", GroupName) - Return Nothing - End If - - Return oGroupId - Catch ex As Exception - _logger.Error(ex) - Throw ex - End Try - End Function - Private Function GetUserId(UserName As String) As Integer Implements ISyncUsers.GetUserId - Try - Dim oSQL As String = $"SELECT FNICM_GET_RECORD4SYSKEY('{UserName}','001-USRNAME') from RDB$DATABASE" - Dim oResult = _firebird.GetScalarValue(oSQL) - - If IsDBNull(oResult) Then - Return Nothing - End If - - Return oResult - Catch ex As Exception - _logger.Error(ex) - Throw ex - End Try - End Function - Private Function CreateUser(User As ADUser) As Integer Implements ISyncUsers.CreateUser - Try - Dim oSQL = $"SELECT FNICM_RADM_NEW_USER('{User?.GivenName}', '{User?.Surname}', '{User?.samAccountName}', 'AD-Sync') from RDB$DATABASE" - Dim oUserId As Integer = _firebird.GetScalarValue(oSQL) - - Return oUserId - Catch ex As Exception - _logger.Error(ex) - Throw ex - End Try - End Function - - Public Sub AddCustomAttributesToUser(User As ADUser, UserId As Integer) Implements ISyncUsers.AddCustomAttributesToUser - Throw New NotImplementedException() - End Sub - End Class -End Namespace diff --git a/Interfaces/Interfaces.vbproj b/Interfaces/Interfaces.vbproj index e8652081..e29ad049 100644 --- a/Interfaces/Interfaces.vbproj +++ b/Interfaces/Interfaces.vbproj @@ -86,7 +86,6 @@ -