Extend operator dms-account management

This commit is contained in:
ragu 2024-02-12 16:43:31 +01:00
parent b2dce25de8
commit 6212b1aefb
18 changed files with 840 additions and 552 deletions

View file

@ -11,12 +11,14 @@ use CGI ':standard';
use Config::General;
use Mod::Buttons;
use Mod::Basework;
use Mod::Shareework;
use Mod::Libenz;
use Mod::DBtank;
use POSIX;
use Data::Dumper;
my $bw = new Basework;
my $shwo = new Shareework;
my $lb = new Libenz;
my $dbt = new DBtank;
my $but = new Buttons;
@ -55,6 +57,7 @@ sub tpl(){
my $view_root = $viewsel[0] || "";
my $parent_id = $node_meta->{parent_id};
my $main_id = $node_meta->{main_id};
my $red = "#c83434";
my $coprihome = "c o p r i ";
$coprihome .= " <span style='font-size:0.71em;'>home</span>" if($dbt->{primary}->{$varenv->{dbname}}->{title});
@ -65,9 +68,114 @@ sub tpl(){
$title .= $dbt->{website}->{$varenv->{syshost}}->{title} if($dbt->{website}->{$varenv->{syshost}}->{title});
$title .= " (devel $varenv->{dbname})" if($dbt->{copri_conf}->{stage} eq "test");
#Ack codes or pw renew-prompt
if($users_dms->{u_id} && $users_sharee->{c_id} && (!$users_sharee->{int04} || !$users_sharee->{int13} || $users_sharee->{int06})){
print "<div style='position:fixed;z-index:10;right:0px;'>\n";
print $q->div({-id=>'Headerlogin'},$q->a({-class=>'elinkbutton1',-href=>"$dbt->{primary}->{sharee_primary}->{primaryApp}",-target=>'_blank'},"$users_sharee->{txt08} "), $q->span({-id=>"owner", -style=>"color:silver"}, "($users_dms->{u_id})")),"\n";
print $q->div({-id=>'Headerlogin'},$q->a({-href=>"logout",-title=>'logout'},$q->span({-class=>"bi bi-door-open", -style=>'font-size:1em;color:white;padding-right:1em;'}))),"\n";
print "</div>\n";
###User Panel
if($users_dms->{u_id}){
print "<div id='ContentLogin'>\n";
print $q->start_multipart_form(-id=>'authform', -name=>'loginscreen'),"\n";
print $q->hidden(-name=>"merchant_id",-override=>1,-value=>"$varenv->{merchant_id}") if($varenv->{merchant_id});
print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid") if($R::sessionid);
print "<div class='form-group'>\n";
print $q->div({-class=>'content2', -nowrap=>1}, $q->img({ -style=>"height:25px",-src=>"$varenv->{head_logo}"}),"Operator Login $title"),"\n";
#pw renewe-prompt
if($users_sharee->{int06}){
my $key = "txt04";
my $des = $varenv->{cms}->{"iframe-form-302.$key"}->{txt};
my $label_des="* $des";
print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-renew-pw'}->{txt}"),"\n";
if($R::failure && $R::failure =~ /confirm_txt04/){
$label_des = "<span style=color:$red>$varenv->{cms}->{'iframe-repeat-pw-failure'}->{txt}</span>";
}
print $q->label({-for=>"$key", -style=>'padding-top:1.5em;'},"$label_des"),"\n";
print "<input id='$key' type='password' class='form-control' name='$key' value='' override required autofocus /><br />\n";
print $q->label({-for=>"confirm_$key"},"* $varenv->{cms}->{'iframe-repeat-pw'}->{txt}"),"\n";
print "<input id='confirm_$key' type='password' class='form-control' name='confirm_$key' value='' override required />\n";
print $q->div({-style=>'text-align:left;color:grey;'}, "<input type='checkbox' onclick='show_passwd()'>", "$varenv->{cms}->{'iframe-show-pw'}->{txt}"),"\n";
print $q->div({-style=>'margin-top:2em;text-align:center;'},"<button type='submit' name='sharee_edit' value='save_account' class='btn btn-primary btn-lg btn-block ebutton4' style='width:300px;'>Passwort speichern</button>"),"\n";
}elsif(!$users_sharee->{int04} || !$users_sharee->{int13}){
my $acktext = "$varenv->{cms}->{'iframe-confirmation-codes-sent'}->{txt}";
$acktext = "$varenv->{cms}->{'iframe-sms-confirmation-code-sent'}->{txt}" if($users_sharee->{int04} && !$users_sharee->{int13});
$acktext = "$varenv->{cms}->{'iframe-email-confirmation-code-sent'}->{txt}" if(!$users_sharee->{int04} && $users_sharee->{int13});
print $q->div({-class=>'content2'}, "$acktext $varenv->{cms}->{'iframe-successful-confirmation'}->{txt}"),"\n";
if(!$users_sharee->{int04}){
my $des = "$varenv->{cms}->{'iframe-email-code'}->{txt}";
my $key = "confirm_code";
my $label_des="* $des";
$varenv->{cms}->{'iframe-correct-input'}->{txt} =~ s/::input::/$des/;
$label_des = "<span style=color:$red>$varenv->{cms}->{'iframe-correct-input'}->{txt}</span>" if($R::failure);
print $q->label({-for=>"$key", -style=>'padding-top:1em;'},"$label_des"),"\n";
print "<input id='$key' type='text' class='form-control' name='$key' value='' autofocus/>\n";
print $q->div({-class=>'content2'}, " $varenv->{cms}->{'iframe-if-email-code-not-received'}->{txt}",$q->a({-class=>'elinkbutton4',-href=>"$varenv->{wwwhost}?sharee_edit=send_email"},"$varenv->{cms}->{'iframe-request-email-code'}->{txt}")),"\n";
}else{
print $q->div({-class=>'content2', -style=>'color:gray;'}, "* $varenv->{cms}->{'iframe-email-code-already-entered'}->{txt}"),"\n";
}
if(!$users_sharee->{int13}){
my $des = "$varenv->{cms}->{'iframe-sms-code'}->{txt}";
my $key = "confirm_smscode";
my $label_des="* $des";
$varenv->{cms}->{'iframe-correct-input'}->{txt} =~ s/::input::/$des/;
$label_des = "<span style=color:$red>$varenv->{cms}->{'iframe-correct-input'}->{txt}</span>" if($R::failure);
print $q->label({-for=>"$key", -style=>'padding-top:1em;'},"$label_des"),"\n";
print "<input id='$key' type='text' class='form-control' name='$key' value='' autofocus />\n";
print $q->div({-class=>'content2'}, " $varenv->{cms}->{'iframe-if-sms-code-not-received'}->{txt}",$q->a({-class=>'elinkbutton4',-href=>"$varenv->{wwwhost}?sharee_edit=send_sms"},"$varenv->{cms}->{'iframe-request-sms-code'}->{txt}")),"\n";
}else{
print $q->div({-class=>'content2', -style=>'color:gray;'}, "* $varenv->{cms}->{'iframe-sms-code-already-entered'}->{txt}"),"\n";
}
print $q->div({-style=>'margin-top:2em;text-align:center;'},"<button type='submit' name='confirm_userid' value='$users_sharee->{c_id}' class='btn btn-primary btn-lg btn-block ebutton4' style='width:300px;'>Weiter</button>"),"\n";
}
print "</div>\n";
print $q->end_form,"\n";
print "</div>";
}
#mainlogin
elsif(!$users_dms->{u_id}){
print "<div id='ContentLogin'>\n";
print $q->start_multipart_form(-id=>'authform', -name=>'loginscreen'),"\n";
print $q->hidden(-name=>"merchant_id",-override=>1,-value=>"$varenv->{merchant_id}") if($varenv->{merchant_id});
print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid") if($R::sessionid);
print "<div class='form-group'>\n";
print $q->div({-class=>'content2', -nowrap=>1}, $q->img({ -style=>"height:25px",-src=>"$varenv->{head_logo}"}),"Operator Login $title"),"\n";
#ask email
if($R::coccessor eq "pwmail"){
print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-we-need-email'}->{txt}"),"\n";
print $q->label({-for=>'E-Mail'},""),"\n";
print $q->textfield(-class=>'form-control', -name=>'email', -value=>'', -override=>1, -type=>'email',-class=>'form-control', -id=>'Email', -placeholder=>'E-Mail Adresse', -required=>1, -autofocus=>1),"\n";
print $q->div({-style=>'margin-top:1em;text-align:center;'},"<button type='submit' name='sharee_edit' value='password_forgotten' class='btn btn-primary btn-lg btn-block ebutton4'>$varenv->{cms}->{'iframe-send-pw-email'}->{txt}</button>"),"\n";
}
#login
else{
print $q->div({-style=>'color:#c83434'},"Login failure"),"\n" if("$R::login_dms" eq "Login" && !$users_dms->{u_id});
if($R::sharee_edit eq "password_forgotten"){
$varenv->{cms}->{'iframe-email-sent'}->{txt} =~ s/::email::/$R::email/;
print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-email-sent'}->{txt}"),"\n";
}
print $q->label({-for=>'Userid'},""),"\n";
print $q->textfield(-class=>'form-control', -name=>'user_id', -value=>'', -override=>1, -type=>'email',-class=>'form-control', -id=>'Userid', -placeholder=>'NutzerIn', -required=>1, -autofocus=>1),"\n";
print $q->label({-for=>'PW'},""),"\n";
print $q->password_field(-class=>'form-control', -name=>'user_pw', -value=>'', -override=>1, -type=>'password',-class=>'form-control', -id=>'PW', -placeholder=>'Passwort', -required=>1),"\n";
print $q->div({-style=>'margin:1em 0;'},"<button type='submit' name='login_dms' value='Login' class='btn btn-primary btn-lg btn-block ebutton4' style='width:300px;'>Login</button>"),"\n";
print $q->div({-class=>'content2'},$q->a({-class=>'elinkbutton4', -href=>"?coccessor=pwmail"}, "Neues Passwort anfordern")),"\n";
}
print "</div>\n";
print $q->end_form,"\n";
print "</div>";
}
elsif($users_dms->{u_id} && $main_id){
###header start
print "<div style='position:fixed;z-index:10;left:0px;width:100%;height:24px;background-color:#5c5c5c;'>\n";
@ -95,44 +203,13 @@ sub tpl(){
print $q->div({-id=>'Headerlogin',-style=>"background-color:#f7ae37;"},$q->a({-class=>'elinkbutton1',-title=>"Faktura Terminal öffnen",-href=>"$varenv->{wwwhost}/DMS/Faktura?ct_trans=open\&c_id4trans=$users_dms->{c_id4trans}\&tpl_id4trans=$users_dms->{tpl_id4trans}\&owner=$users_dms->{owner}\&offset=$offset\&limit=$limit\&relids=$R::relids\&no_redirect=1"}," Faktura \#$ctrel->{ct_name} $ctrel->{txt01}", $q->span({-id=>"c_id4trans", -style=>"color:#f7ae37"}, "$users_dms->{c_id4trans}"))) if($ctrel->{ct_name});
}
print $q->div({-id=>'Headerlogin'},"$users_sharee->{txt08} ", $q->span({-id=>"owner", -style=>"color:silver"}, "($users_dms->{u_id})")),"\n";
print $q->div({-id=>'Headerlogin'},$q->a({-class=>'elinkbutton1',-href=>"$dbt->{primary}->{sharee_primary}->{primaryApp}",-target=>'_blank'},"$users_sharee->{txt08} "), $q->span({-id=>"owner", -style=>"color:silver"}, "($users_dms->{u_id})")),"\n";
print $q->div({-id=>'Headerlogin'},$q->a({-href=>"logout",-title=>'logout'},$q->span({-class=>"bi bi-door-open", -style=>'font-size:1em;color:white;padding-right:1em;'}))),"\n";
print "</div>";
print "</div>";
}
#end user panel
###header end
###header end
#Mainlogin
if(!$users_dms->{u_id}){
print "<div id='ContentLogin'>\n";
print $q->start_multipart_form(-id=>'authform', -name=>'loginscreen'),"\n";
print $q->hidden(-name=>"merchant_id",-override=>1,-value=>"$varenv->{merchant_id}") if($varenv->{merchant_id});
print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid") if($R::sessionid);
print "<div class='form-group'>\n";
#Login
print $q->div({-class=>'content2', -nowrap=>1}, $q->img({ -style=>"height:25px",-src=>"$varenv->{head_logo}"}),"Operator Login $title"),"\n";
print $q->div({-style=>'color:#c83434'},"Login failure"),"\n" if("$R::login_dms" eq "Login" && !$users_dms->{u_id});
print $q->label({-for=>'Userid'},""),"\n";
print $q->textfield(-class=>'form-control', -name=>'user_id', -value=>'', -override=>1, -type=>'email',-class=>'form-control', -id=>'Userid', -placeholder=>'NutzerIn', -required=>1, -autofocus=>1),"\n";
print $q->label({-for=>'PW'},""),"\n";
print $q->password_field(-class=>'form-control', -name=>'user_pw', -value=>'', -override=>1, -type=>'password',-class=>'form-control', -id=>'PW', -placeholder=>'Passwort', -required=>1),"\n";
print $q->div({-style=>'margin-top:1em;'},"<button type='submit' name='login_dms' value='Login' class='btn btn-primary btn-lg btn-block'>Login</button>"),"\n";
print "</div>\n";
print $q->end_form,"\n";
#print $q->span({-style=>'color:white;'},"merchant_id:$varenv->{merchant_id}"),"\n";
print "</div>";
exit 0;
}
if($users_dms->{u_id} && $main_id){
if($main_id >= "100000"){
my $mstyle="";
@ -294,7 +371,7 @@ sub tpl(){
}
$debug = "syshost: $varenv->{syshost}, merchant_id: $varenv->{merchant_id}, (c_id4trans:$users_dms->{c_id4trans} && tpl_id4trans:$users_dms->{tpl_id4trans}) $node_meta->{tpl_name},$node_meta->{tpl_id},$node_meta->{ct_table},$parent_id,$main_id, permissions: ($users_dms->{int01},$users_dms->{int02},$users_dms->{int03},$users_dms->{int07},$users_dms->{int08},$users_dms->{int09})" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id});
print $q->div({-style=>'position:fixed;bottom:0%;right:1%;z-index:10;padding:2px;font-size:13px;'},"$debug",$q->a({-style=>'color:black;text-decoration: none;',-href=>'https://sharee.bike',-target=>'_blank'},"sharee.bike &copy; TeilRad GmbH 2023")),"\n";
print $q->div({-style=>'position:fixed;bottom:0%;right:1%;z-index:10;padding:2px;font-size:13px;'},"$debug",$q->a({-style=>'color:black;text-decoration: none;',-href=>'https://sharee.bike',-target=>'_blank'},"sharee.bike &copy; TeilRad GmbH 2024")),"\n";
print $q->div({-style=>'padding: 30px 0 0 0;'}, ""), "\n";
$self->tplselect($node_meta,$users_dms,$mode,$varenv,$feedb);
@ -338,7 +415,7 @@ sub tplselect(){
$feedb = &Liste3::tpl($node_meta,$users_dms,$mode,$feedb);
}elsif($node_meta->{ct_table} =~ /contenttranspos|contenttheftpos/){
require "Tpl/Calorin.pm";
&Calorin::tpl($node_meta,$users_dms,$mode,$feedb);
&Calorin::tpl($node_meta,$users_dms,$feedb);
}
#print Dumper($feedb);
#exit;