Angular, AWS und Symfony Freelancer

  • Symfony Sonata Redirect der Root URL in den Adminbereich

    Wenn man den User bei der Eingabe im Browser ohne ein Pfad (www.foo.de) zum Adminbereich von Sonata (www.foo.de/admin) weiterleiten will, kann man dies sehr elegant mittels eines Symfony Redirects in der routing.yml tun: index: path: / defaults: _controller: FrameworkBundle:Redirect:urlRedirect path: /admin permanent: true

  • Windows 10 .svn Ordner löschen

    Mit einem einfachen Trick kann man rekursiv alle .svn Ordner finden und löschen. 1. Man verwendet die Windows Explorer Suche mit dem speziellen Syntax: art:=ordner name: ~.svn Damit werden nur Ordner gefunden, die den genauen Namen .svn haben. Das Sucher gebnis kann dann einfach gelöscht werden:

  • Tutorial: Symfony Administrations-Backend erstellen

    In diesem Beitrag werde ich mit Symfony 4 eine Administartionsoberfläche mit Hilfe von Sonata erstellen und die einzelnen Schritte beschreiben. 1. Anlegen eines neuen Symfony Projektes Mit composer kann man schnell ein neues Symfony Skeleton Projekt anlegen lassen: composer create-project symfony/website-skeleton my-admin-demo Das Skeleton Projekt enthält die wichtigsten Symfony Komponenten für eine Webapplikation sowie Doctrine.…

  • Call to undefined method PHPUnit\Util\ErrorHandler::handleError()

    In Version 8.3 von PHPUnit gibt es leider die Methode handleError nicht mehr, deswegen kommt es bei meine Symfony Projekten zu Problemen. Call to undefined method PHPUnit\Util\ErrorHandler::handleError() Abhilfe schafft die Installation von PHPUnit 8.2: composer require phpunit/phpunit:8.2 –dev

  • Gaufrette FTP Adapter rekursiv Verzeichnisse löschen

    Um mit dem FTP Adapter von Gaufrette rekursiv Dateien und Unterverzeichnisse zu löschen kann man folgenden Trick anwenden um nicht in die Fehlermeldung zu geraten: ftp_rmdir(): Directory not empty. 1. erst alle Dateien löschen 2. dann die tiefsten Verzeichnisse bis hin zu den obersten löschen: /** * @param Filesystem $fileSystem */ function deleteAllFilesInDirectory(Filesystem $fileSystem) {…

  • AWS Zeitzone richtig einstellen Amazon Linux 2 und RDS MySQL PHP

    Damit in den Logs und in der Datenbank die korrekten Zeitstempel der eigenen Zeitzone verwendet werden, muss man 1. Die Systemzeit der EC2 Instanz konfigurieren sudo ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime und in der Datei /etc/sysconfig/clock die Zeitzone eintragen: sudo vi /etc/sysconfig/clock ZONE=“Europe/Berlin“ Danach muss ein Reboot der Instanz erfolgen: sudo reboot Die Anpassung kann überprüft…

  • Symfony FosUser Bundle eigene Password Policy anwenden

    Um im SonataAdmin mit FosUser Bundle Modul eigene Regeln zu definieren für die Stärke der Passwörter, kann man die validation.xml überschreiben, indem man im Ordner src/Application/Sonata/UserBundle/Resources/config/ eine eigene validation.xml anlegt: <?xml version=“1.0″ ?> <constraint-mapping xmlns=“http://symfony.com/schema/dic/constraint-mapping“ xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation=“http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd“> <class name=“FOS\UserBundle\Model\User“> <property name=“plainPassword“> <constraint name=“NotBlank“> <option name=“message“>fos_user.password.blank</option> <option name=“groups“> <value>Registration</value> <value>ResetPassword</value> <value>ChangePassword</value> </option> </constraint> <constraint name=“Length“>…

  • Symfony Brute-Force Guard für SonataAdmin erstellen

    Für das SonataAdmin Bundle gibt es die Möglichkeit über Symofny Guards eigene Logik in den Loginprozess einzubauen, wie z.B.: Abwehr von Brute Force Angriffen durch eine maximale Anzahl von Login-Versuchen In dem folgenden Beispiel habe ich einen Guard konfiguriert für den Administrationsbereich, der mitzählt, wie oft sich ein User falsch eingeloggt hat. Der UserManager muss…

  • letsencrypt AWS http challenge

    Ich hatte das Problem, dass beim Erneuern des Letsencrypt Zertifikates per Cronjob unter Amazon Linux 2 certbot renew –post-hook „systemctl reload httpd“  >> /var/log/certbot.log 2>&1 das SSL Zertifikat nicht erneuert wurde, sondern folgende Fehlermeldung auftrat: Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration. The…

  • Angular ngx-translate TranslateLoader ohne http Modul

    Um eine Kompatibilität mit alten Browsern, wie dem Firefox Version <= 5 zu erreichen, kann man das angular http Modul nicht verwenden. Das ngx-translate Module bneötigt einen Loader, der die richtige Sprache lädt per Ajax Request. Dies läst sich auch mit dem XMLHttpRequest und einem Observalbe lösen: import {Injectable} from ‚@angular/core‘; import {TranslateLoader} from ‚@ngx-translate/core‘;…