Ankündigung

Einklappen
Keine Ankündigung bisher.

Attribut mit Zufallstoken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Attribut mit Zufallstoken

    Gibt es eine Möglichkeit, ein Attribut in CC zu erstellen, das einen automatisch generierten Token generiert?
    Der z.B. beim ersten Anlegen des Datensatzes erzeugt wird und sich auch nicht weiter verändert?

  • #2
    Zitat von eblick Beitrag anzeigen
    Gibt es eine Möglichkeit, ein Attribut in CC zu erstellen, das einen automatisch generierten Token generiert?
    Der z.B. beim ersten Anlegen des Datensatzes erzeugt wird und sich auch nicht weiter verändert?
    Mit Bordmitteln: Alias-Attribut
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Hallo,
      aktuell versuche ich das mit einer über cc angepassten Member Tabelle. Alias Feld angelegt, Quelle ausgewählt, Datenbank Update, Mitglied gespeichert.. das Alias Feld füllt sich allerdings nicht. Quellwert ist vorhanden. Ich sehe jetzt auch nicht wie bei anderen CC Konfigurationen die Option "Alias Feld auswählen". Hat jemand eine Idee woran das liegen könnte?

      Kommentar


      • #4
        Die Alias-Generierung in zu erweiternden Tabellen ist aus Sicherheitsgründen nicht möglich, damit keine Komplikationen zu Contao enstehen. Der Alias wird nur für Haupttabellen-Konfigurationen erlaubt.

        ps. Die tl_member braucht technisch gesehen kein Alias-Feld. Das Feld username oder email sind von Haus aus unique in der Tabelle.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Danke für die Rückmeldung! Gibt es sonst keine Möglichkeit, zB über das Feldtemplate einen Wert automatisch zu setzen, solange noch keiner vorhanden ist?

          Kommentar


          • #6
            Zitat von EBL Beitrag anzeigen
            Danke für die Rückmeldung! Gibt es sonst keine Möglichkeit, zB über das Feldtemplate einen Wert automatisch zu setzen, solange noch keiner vorhanden ist?
            Es ist natürlich immer möglich das Feld von aussen via dcaconfig (oder Erweiterung) selbstständig zu manipulieren und dort z.B. via save_callback eine eigene Routine zu setzen. (das gilt für jedes Feld)

            Als Beispiel: dcaconfig.php

            cc_test gegen die eigene Tabelle ersetzen und myAlias gegen den Namen des Alias-Feldes. (die Methode geht quasi für jedes Textfeld (oder auch Einfach-Select. Alle Felder mit einem lesbaren, single-Wert in der DB)


            Code:
            $GLOBALS['TL_DCA']['cc_test']['fields']['myAlias']['save_callback'][] = array('myClass','myLoadCallback');
            
            if( !class_exists('myClass') )
            {
            class myClass
            {
            public function myLoadCallback($varValue, $objDC)
            {
            if( empty($varValue) )
            {
            
            // alias "myalias_ID-DES-DATENSATZES"
            $varValue = 'myalias_'.$objDC->id;
            
            // fuer eblick mit zufallszahl zwischen 0 und 100
            //$varValue = 'random_'.rand(0,100);
            
            // oder eine art token hash via sha -> der ist quasi immer unique, weil die ID unique ist. (Zeitstempel ist auch sehr save)
            // $varValue = sha('token_'.$obj->id.'_'.time()); // sha aus "token"+akt. ID + Zeitstempel beim Speichern)
            
            
            }
            return $varValue;
            }
            }
            }
            Zuletzt geändert von Tim; 03.09.2021, 12:04.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Gute Idee und erfolgreich umgesetzt.

              Mit Ausnahme dass
              $varValue = sha('token_'.$obj->id.'_'.time());

              $varValue = sha1('token_'.$obj->id.'_'.time());

              heißen sollte.


              -----

              Und damit das Feld im Anschluss auch nicht mehr veränderbar ist:

              Code:
              if(!empty($GLOBALS['TL_DCA']['tl_member']['fields']['myfield'])) {
              $GLOBALS['TL_DCA']['tl_member']['fields']['myfield']['eval']['disabled'] = true;
              }

              Edit:

              Das mit dem nicht mehr verändern klappt leider nur so halb ;-)
              Mit der if(!empty) Abfrage wird leider das Feld grundsätzlich gesperrt, auch wenn es noch leer ist.
              Zuletzt geändert von eblick; 03.09.2021, 16:06.

              Kommentar


              • #8
                empty musst du auf den Wert abfragen, nicht auf die DCA Konfiguration. Das sollte in einem load_callback des Feldes gehen, noch besser aber im onload_callback der Tabelle. Dort kommt spätestens nach dem 1. Speichern der vollständige Datensatz rein.
                http://www.premium-contao-themes.com

                Kommentar

                Lädt...
                X