invalid command name "SESSION"
    while executing
"SESSION activate"
    (in namespace eval "::request" script line 31)
    invoked from within
"namespace eval ::request $script"
    ("::try" body line 12)

OUTPUT BUFFER:

# haendlerportal/index.tcl # # Über dieses Skript laufen # - Einstieg in das Händlerportal # - Login # - Passwortanforderung # set text_plain "\Hi there, Here are your new login details for the Velometrik Dealer Portal – you're all set to go! Link: https://www.dashaendlerportal.de Username: \$email Password: \$password Just enter the password without quotation marks along with your email address (\$email). If you have any questions or run into any issues, feel free to reach out – we’re happy to help! Email: support@velometrik.de Phone: +49 (0) 34342 509760 Wishing you lots of success and fun with your Velometrik system! Best regards, Your Velometrik Team " SESSION activate set login 0; # login erforderlich # login_reason wird nur gesetzt, wenn eine spezielle Notwendigkeit für eine (Neu)Anmeldung vorliegt. # Handelt es sich um eine Anmeldung ? if {[::rivet::var exists login]} {; #{{{ (Neu)Anmeldung set email [::rivet::var get email {}] # Das geht über DIO, weil die Tabelle in der Datenbank mit den Sessiondaten ist. set sql_select "SELECT TRIM(vmk_kdnr) AS vmk_kdnr FROM haendler WHERE kontaktemail = '$email' AND password = md5('[::rivet::var get passwd {}]'::TEXT)" set result [DIO_haendlerportal exec $sql_select] if {"[$result errorcode]" == "PGRES_TUPLES_OK"} { if {[$result next -list vmk_kdnr]} {; # Datensatzgefunden, d.h. email/passwort O.K. SESSION store haendler email $email SESSION store haendler vmk_kdnr $vmk_kdnr # Die haendler_id muß aus einer anderen Datenbank geholt werden. set vmk_kdnr [lindex $vmk_kdnr 0] if {![::vmkprodukte select "SELECT haendler_id FROM haendler WHERE vmk_kdnr = '$vmk_kdnr'" haendler_ids]} {; # Fehler # Der Fehler ist hier schon protokolliert. puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } if {[llength $haendler_ids] != 1} { ::rivet::apache_log_error err "Fehlende oder mehrdeutige vmk_kdnr in vmkprodukte: '$vmk_kdnr'" puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } set haendler_id [dict get [lindex $haendler_ids 0] haendler_id] unset haendler_ids SESSION store haendler id $haendler_id } else { set login 1 set login_reason "Email oder Passwort falsch." ::rivet::apache_log_error notice "Loginversuch mit unbekannter email: $email" } } else {; # Fehler ::rivet::apache_log_error err "[$result errorcode]: [$result errorinfo]" puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } #}}} } elseif {[::rivet::var exists newpwd]} {; #{{{ Passwortanforderung set email [::rivet::var get email {}] set login 1 if {"$email" == ""} {; # Email nicht angegeben set login_reason "Email zum Zuschicken des Passworts bitte angeben!" } else { # Gibt es die angegebene Email? # Aktuelles Passwort für den Fall holen, daß es zurückgesetzt werden muß. set sql_select "SELECT TRIM(vmk_kdnr) AS vmk_kdnr, password FROM haendler WHERE kontaktemail='$email'" set result [DIO_haendlerportal exec $sql_select] if {"[$result errorcode]" == "PGRES_TUPLES_OK"} { if {[$result next -list row]} {; # Die email ist bekannt. set vmk_kdnr [lindex $row 0] set password_old [lindex $row 1] # Passwort generieren set password [::vmkprodukte::utils::generatePassword] # Passwort speichern set sql_update "UPDATE haendler SET password = md5('$password') WHERE vmk_kdnr = '$vmk_kdnr'" set result [DIO_haendlerportal exec $sql_update] if {"[$result errorcode]" != "PGRES_COMMAND_OK"} {; # Neues Passwort konnte nicht gespeichert werden. ::rivet::apache_log_error err "[$result errorcode]: [$result errorinfo]" puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } # Passwort abschicken # Für die Anschrift wird noch der Händlername geholt set sql_select "SELECT bezeichnung FROM haendler WHERE vmk_kdnr = '$vmk_kdnr'" if {[::vmkprodukte select $sql_select row]} { set to_name [dict get [lindex $row 0] bezeichnung] } else {; # Fehler set to_name "Velometrikkunde" } # text_plain enthält die Variablen $password und $email, die hier gesetzt sein müssen. set content [::mime::initialize -canonical "text/plain; charset=UTF-8" -string [subst $text_plain]] set result [::smtp::sendmessage $content \ -recipients $email -originator $::smtp_sender \ -header [list Subject "Your New Password for the Dealer Portal"] \ -header [list From "\"Velometrik Support\" "] \ -header [list To "\"$to_name\" <$email>"] \ -servers $::smtp_server \ -ports $::smtp_port \ -usetls $::smtp_tls \ -username $::smtp_user -password $::smtp_pwd] if {[llength $result] == 0} {; # Kein Empfaenger zurueckgewiesen ::rivet::apache_log_error notice "Neues Passwort (md5 = '[::md5::md5 -hex $password]') an $email verschickt." set login_reason "The password has been sent to $email." # Das bedeutet leider noch nicht, daß sie angekommen ist. } else {; # Emailversand definitiv gescheitert ::rivet::apache_log_error err "$result" set login_reason "Fehler! Das Passwort konnte nicht verschickt werden." # => Zurücksetzen auf altes Passwort. set sql_update "UPDATE haendler SET password = '$password_old' WHERE vmk_kdnr = '$vmk_kdnr'" set result [DIO_haendlerportal exec $sql_update] if {"[$result errorcode]" != "PGRES_COMMAND_OK"} {; # Neues Passwort konnte nicht zurückgesetzt werden. ::rivet::apache_log_error err "[$result errorcode]: [$result errorinfo]" puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } else { append login_reason "\nDas alte Passwort wurde wieder hergestellt." } } } else { set login_reason "$email ist bei Velometrik nicht bekannt." ::rivet::apache_log_error notice "Passwortanforderung mit unbekannter email: $email" } } else {; # Fehler ::rivet::apache_log_error err "[$result errorcode]: [$result errorinfo]" puts [::rivet::include ./internal_server_error.html] DIO_haendlerportal close return } }; # else email für Passwortanforderung wurde angegeben #}}} } else {; #{{{ Anderweitiger Seitenaufruf (weder Anmeldung noch Passwortanforderung) if {[SESSION is_new_session]} { set login 1 if {"[SESSION new_session_reason]" == "timeout"} { set login_reason "Die Sitzung ist abgelaufen." } } else { # Daß die Session existiert, heißt noch nicht, daß eine Anmeldung erfolgt ist. # => 'mal nachschauen set email [SESSION fetch haendler email] if {"$email" == ""} { # Da ist noch nichts. unset email set login 1 } } #}}} } DIO_haendlerportal close if {$login} { # Login erforderlich puts [::rivet::parse ./login.rvt] } else { # Login ist bereits erfolgt. source ./uebersicht.tcl }