private void SyncUserManager(IActiveDirectoryContext adContext, Guid syncBatchGUID, User user, ManagerUser managerUser) { var managerUsers = _managerUserService.GetManagerUser(managerUser); if (managerUsers.Count() > 0) { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "NOACTION", ErrorMessage = "Manager already exists" }; _syncStatusService.Insert(syncStatus); } else { _managerUserService.Insert(managerUser); var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INSERT" }; _syncStatusService.Insert(syncStatus); } //TODO: If user has manager other than specified, may need to be deleted. }
public SchedulerController(IUserSyncService userSyncService, IADGroupSyncService groupSyncService, ISyncBatchService syncBatchService, IActiveDirectoryContext adContext) { _userSyncService = userSyncService; _groupSyncService = groupSyncService; _syncBatchService = syncBatchService; _adContext = adContext; }
public LoginController(IConfiguration configuration, IActiveDirectoryContext adContext, IUserService userService) { _configuration = configuration; _userService = userService; _adContext = adContext; _logger = LogManager.GetCurrentClassLogger(); }
public HangfireScheduler(IUserSyncService userSyncService, ISyncBatchService syncBatchService, IActiveDirectoryContext adContext, IImportService importService, IConfiguration configuration, IHttpContextAccessor context) { _userSyncService = userSyncService; _syncBatchService = syncBatchService; _adContext = adContext; _importService = importService; _configuration = configuration; _context = context; }
public User Authenticate(IActiveDirectoryContext adContext, string username, string password) { if (adContext.UserRepository.validateUser(username, password)) { var users = _userRepo.GetUsersByUsername(new List <string> { username }); foreach (User user in users) { return(user); } } return(null); }
public void SyncUsersFromActiveDirectory(IActiveDirectoryContext adContext, Guid syncBatchGUID) { var listOfUsers = adContext.UserRepository.GetUsers(); var listOfUsernames = listOfUsers.Select(x => x.Username).ToList(); var usersToUpdate = _userRepository.GetUsersByUsername(listOfUsernames); foreach (var user in listOfUsers) { if (usersToUpdate.FirstOrDefault(x => String.Equals(x.Username, user.Username, StringComparison.OrdinalIgnoreCase)) != null) { var userToUpdate = usersToUpdate.FirstOrDefault(x => String.Equals(x.Username, user.Username, StringComparison.OrdinalIgnoreCase)); UpdateUser(user, userToUpdate, syncBatchGUID); } else { InsertUser(user, syncBatchGUID); } if (user.ManagerUser != null) { var u = _userRepository.GetUsersByUsername(new List <string> { user.Username }); var m = _userRepository.GetUsersByUsername(new List <string> { user.ManagerUser.Username }); if (u.Count() > 0 && m.Count() > 0) { if (!_managerUserService.IsManagerExists(u.SingleOrDefault().UserGuid, m.SingleOrDefault().UserGuid)) { try { _managerUserService.Insert(new ManagerUser { ManagerGUID = m.SingleOrDefault().UserGuid, UserGUID = u.SingleOrDefault().UserGuid }); var syncStatus = new SyncStatus { ObjectGUID = u.SingleOrDefault().UserGuid, ObjectName = u.SingleOrDefault().Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INSERT" }; _syncStatusService.Insert(syncStatus); } catch (Exception ex) { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "User", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = ex.StackTrace }; _syncStatusService.Insert(syncStatus); } } else { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "User", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INVALID", ErrorMessage = "Unable to find manager to update" }; _syncStatusService.Insert(syncStatus); } } } else { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "User", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INVALID", ErrorMessage = "No Manager found for this user" }; _syncStatusService.Insert(syncStatus); } } }
public void SyncGroupUsersAndManagerFromActiveDirectory(IActiveDirectoryContext adContext, Guid syncBatchGUID) { var lstUsers = _userService.GetUsers(); foreach (var user in lstUsers) { try { var result = adContext.UserRepository.GetUserAdUserByUsername(user.Username); if (result != null) { string manager = result.Manager; List <string> lstGroupsCN = result.MemberOf.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList(); AdUserGroupAndManager adUser = adContext.UserRepository.GetUserAdUserByCN(manager); if (adUser != null && adUser.User != null) { try { var dbUsers = _userService.GetUsersByUsername(new List <string> { adUser.User.Username }); if (dbUsers.Count() > 0) { var managerUser = new ManagerUser { ManagerUserGUID = Guid.NewGuid(), UserGUID = user.UserGuid, ManagerGUID = dbUsers.FirstOrDefault().UserGuid }; SyncUserManager(adContext, syncBatchGUID, user, managerUser); } } catch (Exception ex) { throw ex; } } if (adUser.MemberOf != null) { SyncUserGroups(adContext, syncBatchGUID, user, adUser.MemberOf.Split(";").ToList()); } else { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = "Unable to find group" }; _syncStatusService.Insert(syncStatus); } } else { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = "Unable to find manager" }; _syncStatusService.Insert(syncStatus); } } catch (Exception ex) { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "ManagerUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = ex.StackTrace }; _syncStatusService.Insert(syncStatus); } } }
public void SyncGroupsFromActiveDirectory(IActiveDirectoryContext adContext, Guid syncBatchGUID) { IEnumerable <Group> adGroups = adContext.GroupRepository.GetGroups(); var dbGroups = _groupService.GetGroups(); foreach (var adGroup in adGroups) { var groups = dbGroups.Where(x => x.GroupGuid == adGroup.GroupGuid).ToList(); if (groups.Count == 0) { try { _groupService.Insert(adGroup); var syncStatus = new SyncStatus { ObjectGUID = adGroup.GroupGuid, ObjectName = adGroup.GroupName, ObjectType = "Group", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INSERT" }; _syncStatusService.Insert(syncStatus); } catch (Exception ex) { var syncStatus = new SyncStatus { ObjectGUID = adGroup.GroupGuid, ObjectName = adGroup.GroupName, ObjectType = "Group", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = ex.StackTrace }; _syncStatusService.Insert(syncStatus); } } else { try { _groupService.Update(adGroup); var syncStatus = new SyncStatus { ObjectGUID = adGroup.GroupGuid, ObjectName = adGroup.GroupName, ObjectType = "Group", SyncBatchGUID = syncBatchGUID, SyncStatusText = "UPDATE" }; _syncStatusService.Insert(syncStatus); } catch (Exception ex) { var syncStatus = new SyncStatus { ObjectGUID = adGroup.GroupGuid, ObjectName = adGroup.GroupName, ObjectType = "Group", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = ex.StackTrace }; _syncStatusService.Insert(syncStatus); } } } }
private void SyncUserGroups(IActiveDirectoryContext adContext, Guid syncBatchGUID, User user, List <string> groups) { foreach (string groupCN in groups) { var adGroups = adContext.GroupRepository.GetGroupByCN(groupCN); foreach (var adGroup in adGroups) { var dbGroup = _groupService.GetGroupByGUID(adGroup.GroupGuid); if (dbGroup != null) { try { var lstUserGroup = _groupUserService.GetGroupUserByUserGUIDAndGroupGUID(user.UserGuid, adGroup.GroupGuid); if (lstUserGroup.Count() == 0) { _groupUserService.Insert(new GroupUser { GroupGUID = adGroup.GroupGuid, UserGUID = user.UserGuid }); var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "GroupUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "INSERT" }; _syncStatusService.Insert(syncStatus); } else { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "GroupUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "NOACTION", ErrorMessage = "User already assigned to group " + adGroup.CN }; _syncStatusService.Insert(syncStatus); } } catch (Exception ex) { var syncStatus = new SyncStatus { ObjectGUID = user.UserGuid, ObjectName = user.Username, ObjectType = "GroupUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = ex.StackTrace }; _syncStatusService.Insert(syncStatus); } } else { var syncStatus = new SyncStatus { ObjectGUID = adGroup.GroupGuid, ObjectName = adGroup.GroupName, ObjectType = "GroupUser", SyncBatchGUID = syncBatchGUID, SyncStatusText = "ERROR", ErrorMessage = "Unable to find group" }; _syncStatusService.Insert(syncStatus); } } } }