/** * @param IFormInterface $Form * @param null|string $TicketSubject * @param null|string $TicketMessage * * @return IMessageInterface|IFormInterface */ public function executeCreateTicket(IFormInterface &$Form, $TicketSubject, $TicketMessage) { $Error = false; if (empty($TicketSubject) && null !== $TicketSubject) { $Form->setError('TicketSubject', 'Bitte geben Sie ein Thema ein'); $Error = true; } elseif (null === $TicketSubject) { $Error = true; } else { $Form->setSuccess('TicketSubject', ''); } if (empty($TicketMessage) && null !== $TicketMessage) { $Form->setError('TicketMessage', 'Bitte geben Sie ein Mitteilung ein'); $Error = true; } elseif (null === $TicketMessage) { $Error = true; } else { $Form->setSuccess('TicketMessage', ''); } if ($Error) { /** * Nothing to do */ try { $Youtrack = (new Support(new YouTrack()))->getSupport(); $Form->prependGridGroup($Youtrack->ticketCurrent()); return $Form; } catch (\Exception $E) { return new Danger('Das Support-System konnte nicht geladen werden'); } } else { /** * Submit Ticket */ try { $Youtrack = (new Support(new YouTrack()))->getSupport(); $Youtrack->createTicket(urldecode($TicketSubject), urldecode($TicketMessage)); return new Success('Das Problem wurde erfolgreich dem Support mitgeteilt'); } catch (\Exception $E) { return new Danger('Das Problem konnte nicht übertragen werden'); } } }
/** * @param IFormInterface $Form * @param TblAccount $tblAccount * @param string $CredentialLock * @param string $CredentialLockSafety * * @return IFormInterface|Redirect */ public function updatePassword(IFormInterface &$Form, TblAccount $tblAccount, $CredentialLock, $CredentialLockSafety) { if (null === $CredentialLock && null === $CredentialLockSafety) { return $Form; } $Error = false; if (empty($CredentialLock)) { $Form->setError('CredentialLock', 'Bitte geben Sie ein Passwort an'); $Error = true; } else { if (strlen($CredentialLock) >= 8) { $Form->setSuccess('CredentialLock', ''); } else { $Form->setError('CredentialLock', 'Das Passwort muss mindestens 8 Zeichen lang sein'); $Error = true; } } if (empty($CredentialLockSafety)) { $Form->setError('CredentialLockSafety', 'Bitte geben Sie ein Passwort an'); $Error = true; } if ($CredentialLock != $CredentialLockSafety) { $Form->setError('CredentialLock', ''); $Form->setError('CredentialLockSafety', 'Die beiden Passworte stimmen nicht überein'); $Error = true; } else { if (!empty($CredentialLock) && !empty($CredentialLockSafety)) { $Form->setSuccess('CredentialLockSafety', ''); } else { $Form->setError('CredentialLockSafety', ''); } } if ($Error) { return $Form; } else { if (Account::useService()->changePassword($CredentialLock, $tblAccount)) { return new Success('Das Passwort wurde erfolgreich geändert') . new Redirect('/Setting/MyAccount', 1); } else { return new Danger('Das Passwort konnte nicht geändert werden') . new Redirect('/Setting/MyAccount', 10); } } }
/** * @param IFormInterface $Form * @param null|string $Name * * @return IFormInterface|Redirect */ public function createRole(IFormInterface $Form, $Name) { if (null !== $Name && empty($Name)) { $Form->setError('Name', 'Bitte geben Sie einen Namen ein'); } if (!empty($Name)) { $Form->setSuccess('Name', 'Die Rolle wurde hinzugefügt'); (new Data($this->Binding))->createRole($Name); return new Redirect('/Platform/Gatekeeper/Authorization/Access/Role', 0); } return $Form; }
/** * @param IFormInterface $Form * @param string $CredentialName * @param string $CredentialLock * @param string $CredentialKey * @param TblIdentification $tblIdentification * * @return IFormInterface|Redirect */ public function createSessionCredentialToken(IFormInterface &$Form, $CredentialName, $CredentialLock, $CredentialKey, TblIdentification $tblIdentification) { switch ($this->isCredentialValid($CredentialName, $CredentialLock, $CredentialKey, $tblIdentification)) { case false: if (null !== $CredentialName && empty($CredentialName)) { $Form->setError('CredentialName', 'Bitte geben Sie einen gültigen Benutzernamen ein'); } if (null !== $CredentialName && !empty($CredentialName)) { $Form->setError('CredentialName', 'Bitte geben Sie einen gültigen Benutzernamen ein'); } if (null !== $CredentialLock && empty($CredentialLock)) { $Form->setError('CredentialLock', 'Bitte geben Sie ein gültiges Passwort ein'); } if (null !== $CredentialLock && !empty($CredentialLock)) { $Form->setError('CredentialLock', 'Bitte geben Sie ein gültiges Passwort ein'); } break; case null: $Form->setSuccess('CredentialName', ''); $Form->setSuccess('CredentialLock', ''); $Form->setError('CredentialKey', 'Der von Ihnen angegebene YubiKey ist nicht gültig.' . '<br/>Bitte verwenden Sie Ihren YubiKey um dieses Feld zu befüllen'); break; case true: return new Redirect('/', 0); break; } return $Form; }
/** * @param IFormInterface $Form * @param array $Account * * @return IFormInterface */ public function createAccount(IFormInterface $Form, $Account) { if (null === $Account) { return $Form; } $Error = false; $Username = trim($Account['Name']); $Password = trim($Account['Password']); $PasswordSafety = trim($Account['PasswordSafety']); $tblConsumer = GatekeeperConsumer::useService()->getConsumerBySession(); if (!($tblToken = GatekeeperToken::useService()->getTokenById((int) $Account['Token']))) { $tblToken = null; } if (empty($Username)) { $Form->setError('Account[Name]', 'Bitte geben Sie einen Benutzernamen an'); $Error = true; } else { if (preg_match('!^[a-z0-9]{5,}$!is', $Username)) { $Username = $tblConsumer->getAcronym() . '-' . $Username; if (!GatekeeperAccount::useService()->getAccountByUsername($Username)) { $Form->setSuccess('Account[Name]', ''); } else { $Form->setError('Account[Name]', 'Der angegebene Benutzername ist bereits vergeben'); $Error = true; } } else { $Form->setError('Account[Name]', 'Der Benutzername darf nur Buchstaben und Zahlen enthalten und muss mindestens 5 Zeichen lang sein'); $Error = true; } } if (empty($Password)) { $Form->setError('Account[Password]', 'Bitte geben Sie ein Passwort an'); $Error = true; } else { if (strlen($Password) >= 8) { $Form->setSuccess('Account[Password]', ''); } else { $Form->setError('Account[Password]', 'Das Passwort muss mindestens 8 Zeichen lang sein'); $Error = true; } } if (empty($PasswordSafety)) { $Form->setError('Account[PasswordSafety]', 'Bitte geben Sie das Passwort erneut an'); $Error = true; } if ($Password != $PasswordSafety) { $Form->setError('Account[Password]', ''); $Form->setError('Account[PasswordSafety]', 'Die beiden Passworte stimmen nicht überein'); $Error = true; } else { if (!empty($Password) && !empty($PasswordSafety)) { $Form->setSuccess('Account[PasswordSafety]', ''); } else { $Form->setError('Account[PasswordSafety]', ''); } } if (!$Error) { $tblAccount = GatekeeperAccount::useService()->insertAccount($Username, $Password, $tblToken, $tblConsumer); if ($tblAccount) { $tblIdentification = GatekeeperAccount::useService()->getIdentificationById($Account['Identification']); GatekeeperAccount::useService()->addAccountAuthentication($tblAccount, $tblIdentification); if (isset($Account['Role'])) { foreach ((array) $Account['Role'] as $Role) { $tblRole = GatekeeperAccess::useService()->getRoleById($Role); GatekeeperAccount::useService()->addAccountAuthorization($tblAccount, $tblRole); } } if (isset($Account['User'])) { $tblPerson = Person::useService()->getPersonById($Account['User']); GatekeeperAccount::useService()->addAccountPerson($tblAccount, $tblPerson); } return new Success('Das Benutzerkonnto wurde erstellt') . new Redirect('/Setting/Authorization/Account', 3); } else { return new Danger('Das Benutzerkonnto konnte nicht erstellt werden') . new Redirect('/Setting/Authorization/Account', 3); } } return $Form; }
/** * @param IFormInterface $Form * @param TblCompany $tblCompany * @param array $Street * @param array $City * @param integer $State * @param array $Type * * @return IFormInterface|string */ public function createAddressToCompany(IFormInterface $Form, TblCompany $tblCompany, $Street, $City, $State, $Type) { /** * Skip to Frontend */ if (null === $Street && null === $City && null === $State) { return $Form; } $Error = false; if (isset($Street['Name']) && empty($Street['Name'])) { $Form->setError('Street[Name]', 'Bitte geben Sie eine Strasse an'); $Error = true; } else { $Form->setSuccess('Street[Number]'); } if (isset($Street['Number']) && empty($Street['Number'])) { $Form->setError('Street[Number]', 'Bitte geben Sie eine Hausnummer an'); $Error = true; } else { $Form->setSuccess('Street[Number]'); } if (isset($City['Code']) && !preg_match('!^[0-9]{5}$!is', $City['Code'])) { $Form->setError('City[Code]', 'Bitte geben Sie eine fünfstellige Postleitzahl ein'); $Error = true; } else { $Form->setSuccess('City[Code]'); } if (isset($City['Name']) && empty($City['Name'])) { $Form->setError('City[Name]', 'Bitte geben Sie einen Namen ein'); $Error = true; } else { $Form->setSuccess('City[Name]'); } if (!$Error) { $tblType = $this->getTypeById($Type['Type']); $tblState = $this->getStateById($State); $tblCity = (new Data($this->Binding))->createCity($City['Code'], $City['Name'], $City['District']); $tblAddress = (new Data($this->Binding))->createAddress($tblState, $tblCity, $Street['Name'], $Street['Number'], ''); if ((new Data($this->Binding))->addAddressToCompany($tblCompany, $tblAddress, $tblType, $Type['Remark'])) { return new Success('Die Adresse wurde erfolgreich hinzugefügt') . new Redirect('/Corporation/Company', 1, array('Id' => $tblCompany->getId())); } else { return new Danger('Die Adresse konnte nicht hinzugefügt werden') . new Redirect('/Corporation/Company', 10, array('Id' => $tblCompany->getId())); } } return $Form; }
/** * @param IFormInterface $Form * @param string $CredentialKey * @param TblConsumer $tblConsumer * * @return bool|TblToken */ public function createToken(IFormInterface $Form, $CredentialKey, TblConsumer $tblConsumer = null) { try { if (null !== $CredentialKey && !empty($CredentialKey)) { $this->isTokenValid($CredentialKey); if (false === $this->getTokenByIdentifier(substr($CredentialKey, 0, 12))) { if ((new Data($this->Binding))->createToken(substr($CredentialKey, 0, 12), $tblConsumer)) { $Form->setSuccess('CredentialKey', 'Der YubiKey wurde hinzugefügt' . new Redirect('/Sphere/Management/Token', 3)); } } else { $Form->setError('CredentialKey', 'Der von Ihnen angegebene YubiKey wurde bereits registriert'); } } elseif (null !== $CredentialKey && empty($CredentialKey)) { $Form->setError('CredentialKey', 'Bitte verwenden Sie Ihren YubiKey um dieses Feld zu befüllen'); } return $Form; } catch (BadOTPException $E) { $Form->setError('CredentialKey', 'Der von Ihnen angegebene YubiKey ist nicht gültig<br/>Bitte verwenden Sie einen YubiKey um dieses Feld zu befüllen'); return $Form; } catch (ReplayedOTPException $E) { $Form->setError('CredentialKey', 'Der von Ihnen angegebene YubiKey wurde bereits verwendet<br/>Bitte verwenden Sie einen YubiKey um dieses Feld neu zu befüllen'); return $Form; } catch (ComponentException $E) { $Form->setError('CredentialKey', 'Der YubiKey konnte nicht überprüft werden<br/>Bitte versuchen Sie es später noch einmal'); return $Form; } }