Пример #1
0
        private void OnPrintClicked(object sender, UserEventArg e)
        {
            if (e?.Person == null)
            {
                return;
            }

            if (this.TempFileManager == null)
            {
                this.TempFileManager = new TempFilemanager();
                this.TempFileManager.Init();
            }

            bool success = false;

            try
            {
                var    report     = new NewUserReport(this.TempFileManager);
                string reportName = report.Create(e.Person);

                Process.Start(reportName);
                success = true;
            }
            catch (Exception exception)
            {
                MessageBox.Show("Bei der Erstellung des Formulars ist ein Fehler aufgetreten:" + Environment.NewLine + Environment.NewLine + exception.ToString(), "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (success && this.chkSetDate.Checked)
            {
                var optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);
                optigem.SetPrintDate(e.Person.Nr);
            }
        }
Пример #2
0
        public SyncEngine(ISyncConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            this.configuration = configuration;

            this.optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);
            this.logDir  = new DirectoryInfo(Path.Combine(this.configuration.OptigemDatabasePath, "syncLogs"));

            if (!this.logDir.Exists)
            {
                this.logDir.Create();
            }

            string ldapConnection = this.optigem.GetLdapConnectionString();

            if (string.IsNullOrEmpty(ldapConnection))
            {
                throw new InvalidOperationException("No LDAP connection configured.");
            }

            var parser = new LdapConnectionStringParser {
                ConnectionString = ldapConnection
            };

            this.ldap = new LdapConnector(parser.Server, parser.Port, AuthType.Basic, parser.User, parser.Password, 100, this.configuration.WhatIf);

            this.groups = new GroupWorker(this.configuration, this.ldap, this.optigem);
        }
Пример #3
0
        private void OnSettingsClick(object sender, EventArgs e)
        {
            OptigemConnector optigem;

            try
            {
                optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);
            }
            catch (ArgumentException)
            {
                optigem = null;
            }

            string connectionString = optigem?.GetLdapConnectionString();
            LdapConnectionStringParser ldapSettings = string.IsNullOrWhiteSpace(connectionString) ? null : new LdapConnectionStringParser()
            {
                ConnectionString = connectionString
            };

            var settingsForm = new SettingsForm
            {
                OptigemPath  = this.configuration.OptigemDatabasePath,
                LdapServer   = ldapSettings?.Server,
                LdapPort     = ldapSettings?.Port ?? 636,
                LdapUser     = ldapSettings?.User,
                LdapPassword = ldapSettings?.Password
            };

            settingsForm.FormClosing += (s, args) =>
            {
                var form = s as SettingsForm ?? settingsForm;
                if (form.DialogResult == DialogResult.OK)
                {
                    ldapSettings = new LdapConnectionStringParser
                    {
                        Server   = settingsForm.LdapServer,
                        Port     = settingsForm.LdapPort,
                        User     = settingsForm.LdapUser,
                        Password = settingsForm.LdapPassword,
                    };

                    try
                    {
                        optigem = new OptigemConnector(settingsForm.OptigemPath);
                    }
                    catch (ArgumentException exception)
                    {
                        MessageBox.Show("Die Optigem-Datenbank konnte nicht geöffnet werden: " + Environment.NewLine + Environment.NewLine + exception.ToString(), "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        args.Cancel = true;
                        return;
                    }

                    optigem.SetLdapConnectionString(ldapSettings.ToString());
                }
            };

            settingsForm.ShowDialog();
        }
Пример #4
0
        private void OnLoaded(object sender, EventArgs e)
        {
            var optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);

            foreach (var person in optigem.GetAllPersonsForPasswordMail())
            {
                this.userSelector.Add(person);
            }
        }
Пример #5
0
        public void SetOptigemConnection(ISyncConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            this.optigem = new OptigemConnector(configuration.OptigemDatabasePath);
        }
Пример #6
0
        private void OnPasswordSetClicked(object sender, EventArgs e)
        {
            var optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);

            IList <PersonModel> persons = optigem.GetAllPersons(this.txbAddUsername.Text?.Trim())
                                          .ToList();

            if (!persons.Any())
            {
                MessageBox.Show("Es konnte kein Benutzer mit dem angegebenen Benutzernamen gefunden werden.", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else if (persons.Count() > 1)
            {
                MessageBox.Show("Es wurde mehr als ein Benutzer mit dem angegebenen Benutzernamen gefunden.", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                var person = persons.First();

                var parser = new LdapConnectionStringParser {
                    ConnectionString = optigem.GetLdapConnectionString()
                };
                var ldap = new LdapConnector(parser.Server, parser.Port, AuthType.Basic, parser.User, parser.Password, 100, this.configuration.WhatIf);

                SearchResultEntry[] searchResult = ldap
                                                   .PagedSearch($"(&(objectClass=inetOrgPerson)(syncUserId={person.SyncUserId}))", this.configuration.LdapDirectoryBaseDn, LdapBuilder.AllAttributes)
                                                   .SelectMany(s => s.OfType <SearchResultEntry>())
                                                   .ToArray();

                if (searchResult.Length == 0)
                {
                    MessageBox.Show("Der ausgewählte Benutzer ist in LDAP nicht vorhanden." + Environment.NewLine + "Das Passwort kann nicht gesetzt werden.", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (searchResult.Length > 1)
                {
                    MessageBox.Show("Für den Benutzer ist mehr als ein Eintrag in LDAP vorhanden." + Environment.NewLine + "Das Passwort kann nicht gesetzt werden.", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    var entry = searchResult.First();

                    var  password = new DirectoryAttribute("userpassword", LdapBuilder.GenerateSaltedSha1(person.Password));
                    bool result   = ldap.ModifyEntry(entry.DistinguishedName, new DirectoryAttributeModification[] { password.CreateModification(DirectoryAttributeOperation.Replace) });

                    if (result)
                    {
                        MessageBox.Show("Das Passwort für den Benutzer wurde zurück gesetzt (siehe Feld in OPTIGEM).", "Passwort zurückgesetzt...", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Beim Zurücksetzen des Passworts is ein Fehler aufgetreten.", "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
Пример #7
0
        private void OnPrintClicked(object sender, UserEventArg e)
        {
            if (e?.Person == null)
            {
                return;
            }

            if (this.TempFileManager == null)
            {
                this.TempFileManager = new TempFilemanager();
                this.TempFileManager.Init();
            }

            bool success = false;

            try
            {
                var body = new StringBuilder();
                body
                .AppendLine(e.Person.Briefanrede + ",")
                .AppendLine()
                .AppendLine("hier kommt der zweite Teil der Zugangsdaten, das Passwort, das zum Login fürs FeG-Intranet benötigt wird.")
                .AppendLine()
                .AppendLine("Das Passwort (bitte vertraulich behandeln) lautet: " + e.Person.Password)
                .AppendLine("In ein paar Stunden ist der Zugang freigeschaltet.")
                .AppendLine()
                .AppendLine("Auf der Startseite im Intranet, rechts unten, kann unter \"Mein Benutzerkonto\" das Passwort geändert werden.")
                .AppendLine()
                .AppendLine("Viel Freude beim Lesen der internen Seiten.");

                string mailto = "mailto:" + e.Person.EMail + "?subject=FeG Intranet&body=" + Uri.EscapeUriString(body.ToString());
                Process.Start(mailto);
                success = true;
            }
            catch (Exception exception)
            {
                MessageBox.Show("Bei der Erstellung des Formulars ist ein Fehler aufgetreten:" + Environment.NewLine + Environment.NewLine + exception.ToString(), "Fehler...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            if (success && this.chkSetDate.Checked)
            {
                var optigem = new OptigemConnector(this.configuration.OptigemDatabasePath);
                optigem.SetPasswordMailDate(e.Person.Nr);
            }
        }
Пример #8
0
        public GroupWorker(ISyncConfiguration configuration, LdapConnector ldap, OptigemConnector optigem)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (ldap == null)
            {
                throw new ArgumentNullException(nameof(ldap));
            }
            if (optigem == null)
            {
                throw new ArgumentNullException(nameof(optigem));
            }

            this.configuration = configuration;
            this.ldap          = ldap;
            this.optigem       = optigem;
        }