From fed5a0e106e8ac39eedefdd92385ebe0e1e04474 Mon Sep 17 00:00:00 2001 From: Kilian Saffran Date: Wed, 12 Jun 2019 15:33:31 +0200 Subject: [PATCH] annuaire changes --- backoffice/api/lib/dksdb.pm | 3 +- backoffice/api/lib/sendemail.pm | 7 +- backoffice/api/lib/session.pm | 89 +- backoffice/api/process.cgi | 35 +- backoffice/index.cgi | 13 +- backoffice/js/backoffice.js | 3 +- backoffice/tmpl/block/sidebar.tt | 4 +- backoffice/tmpl/block/topbar.tt | 8 +- backoffice/tmpl/module/annuaire/css.tt | 4 +- backoffice/tmpl/module/annuaire/index.js | 5 +- backoffice/tmpl/module/annuaire/index.tt | 75 +- backoffice/tmpl/module/annuaire/javascript.tt | 1 + backoffice/tmpl/module/applications/index.js | 57 +- backoffice/tmpl/module/applications/index.tt | 4 +- backoffice/tmpl/module/js/modules_global.js | 8 +- backoffice/tmpl/module/profile/index.js | 4 + backoffice/tmpl/module/rendezvous/css.tt | 3 + .../tmpl/module/rendezvous/form_exception.js | 20 + .../tmpl/module/rendezvous/form_exception.tt | 36 + .../tmpl/module/rendezvous/form_rendezvous.js | 23 + .../tmpl/module/rendezvous/form_rendezvous.tt | 68 + .../tmpl/module/rendezvous/form_timesheet.js | 0 .../tmpl/module/rendezvous/form_timesheet.tt | 48 + backoffice/tmpl/module/rendezvous/index.js | 54 +- backoffice/tmpl/module/rendezvous/index.tt | 80 +- .../tmpl/module/rendezvous/javascript.tt | 2 + .../tmpl/module/rendezvous/timesheets.js | 40 + .../tmpl/module/rendezvous/timesheets.tt | 77 + backoffice/tmpl/skeleton/module.tt | 4 +- .../jquery.datetimepicker.full.js | 2886 +++++++ .../jquery.datetimepicker.full.min.js | 1 + .../jquery.datetimepicker.min.css | 1 + .../jquery.datetimepicker.min.js | 1 + .../select2-bootstrap4-theme/.gitignore | 8 + .../vendors/select2-bootstrap4-theme/LICENSE | 21 + .../select2-bootstrap4-theme/README.md | 42 + .../select2-bootstrap4-theme/docs/README.md | 3 + .../select2-bootstrap4-theme/docs/index.html | 90 + .../select2-bootstrap4-theme/docs/script.js | 10 + .../select2-bootstrap4-theme/package.json | 47 + .../src/_multiple.scss | 44 + .../select2-bootstrap4-theme/src/_single.scss | 51 + .../select2-bootstrap4-theme/src/layout.scss | 139 + .../webpack.config.js | 68 + .../select2/css/select2-bootstrap4.css | 148 + .../select2/css/select2-bootstrap4.min.css | 1 + backoffice/vendors/select2/css/select2.css | 484 ++ .../vendors/select2/css/select2.min.css | 1 + backoffice/vendors/select2/js/i18n/de.js | 3 + backoffice/vendors/select2/js/i18n/en.js | 3 + backoffice/vendors/select2/js/i18n/fr.js | 3 + backoffice/vendors/select2/js/select2.full.js | 6597 +++++++++++++++++ .../vendors/select2/js/select2.full.min.js | 1 + backoffice/vendors/select2/js/select2.js | 5885 +++++++++++++++ backoffice/vendors/select2/js/select2.min.js | 1 + dev/db/juridiglu_db.pg.data.sql | 521 +- dev/db/juridiglu_db.pg.full.sql | 898 ++- dev/db/juridiglu_db.pg.schema.sql | 367 +- .../lib.old/createpdfA4invoice | 0 {backoffice => dev}/lib.old/pgsql.pm | 0 {backoffice => dev}/lib.old/sendEmail | 0 {backoffice => dev}/lib.old/session.pm | 0 index.cgi | 73 +- js/main.js | 22 +- tmpl/block/avocatlist.tt | 29 + tmpl/block/domaines.tt | 15 + tmpl/block/locations.tt | 19 + tmpl/block/rendezvous.tt | 4 +- tmpl/page/domaine/index.tt | 14 + tmpl/page/home.tt | 57 - tmpl/page/index.tt | 20 + tmpl/page/lieu/index.tt | 14 + tmpl/skeleton/index.tt | 5 +- 73 files changed, 18614 insertions(+), 758 deletions(-) create mode 100644 backoffice/tmpl/module/rendezvous/form_exception.js create mode 100644 backoffice/tmpl/module/rendezvous/form_exception.tt create mode 100644 backoffice/tmpl/module/rendezvous/form_rendezvous.js create mode 100644 backoffice/tmpl/module/rendezvous/form_rendezvous.tt create mode 100644 backoffice/tmpl/module/rendezvous/form_timesheet.js create mode 100644 backoffice/tmpl/module/rendezvous/form_timesheet.tt create mode 100644 backoffice/tmpl/module/rendezvous/timesheets.js create mode 100644 backoffice/tmpl/module/rendezvous/timesheets.tt create mode 100644 backoffice/vendors/jq-datetimepicker/jquery.datetimepicker.full.js create mode 100644 backoffice/vendors/jq-datetimepicker/jquery.datetimepicker.full.min.js create mode 100644 backoffice/vendors/jq-datetimepicker/jquery.datetimepicker.min.css create mode 100644 backoffice/vendors/jq-datetimepicker/jquery.datetimepicker.min.js create mode 100644 backoffice/vendors/select2-bootstrap4-theme/.gitignore create mode 100644 backoffice/vendors/select2-bootstrap4-theme/LICENSE create mode 100644 backoffice/vendors/select2-bootstrap4-theme/README.md create mode 100644 backoffice/vendors/select2-bootstrap4-theme/docs/README.md create mode 100644 backoffice/vendors/select2-bootstrap4-theme/docs/index.html create mode 100644 backoffice/vendors/select2-bootstrap4-theme/docs/script.js create mode 100644 backoffice/vendors/select2-bootstrap4-theme/package.json create mode 100644 backoffice/vendors/select2-bootstrap4-theme/src/_multiple.scss create mode 100644 backoffice/vendors/select2-bootstrap4-theme/src/_single.scss create mode 100644 backoffice/vendors/select2-bootstrap4-theme/src/layout.scss create mode 100644 backoffice/vendors/select2-bootstrap4-theme/webpack.config.js create mode 100644 backoffice/vendors/select2/css/select2-bootstrap4.css create mode 100644 backoffice/vendors/select2/css/select2-bootstrap4.min.css create mode 100644 backoffice/vendors/select2/css/select2.css create mode 100644 backoffice/vendors/select2/css/select2.min.css create mode 100644 backoffice/vendors/select2/js/i18n/de.js create mode 100644 backoffice/vendors/select2/js/i18n/en.js create mode 100644 backoffice/vendors/select2/js/i18n/fr.js create mode 100644 backoffice/vendors/select2/js/select2.full.js create mode 100644 backoffice/vendors/select2/js/select2.full.min.js create mode 100644 backoffice/vendors/select2/js/select2.js create mode 100644 backoffice/vendors/select2/js/select2.min.js rename {backoffice => dev}/lib.old/createpdfA4invoice (100%) rename {backoffice => dev}/lib.old/pgsql.pm (100%) rename {backoffice => dev}/lib.old/sendEmail (100%) rename {backoffice => dev}/lib.old/session.pm (100%) create mode 100644 tmpl/block/avocatlist.tt create mode 100644 tmpl/block/domaines.tt create mode 100644 tmpl/block/locations.tt create mode 100644 tmpl/page/domaine/index.tt delete mode 100644 tmpl/page/home.tt create mode 100644 tmpl/page/index.tt create mode 100644 tmpl/page/lieu/index.tt diff --git a/backoffice/api/lib/dksdb.pm b/backoffice/api/lib/dksdb.pm index 94db1bf..e3c8673 100644 --- a/backoffice/api/lib/dksdb.pm +++ b/backoffice/api/lib/dksdb.pm @@ -4,7 +4,8 @@ use strict; use DBI; use File::Basename; use Data::Dumper; -use Digest::SHA::PurePerl qw(sha256_hex);use DBD::PgPP; +use Digest::SHA::PurePerl qw(sha256_hex); +use DBD::PgPP; use URI::Encode qw(uri_encode uri_decode); use Encode; use utf8; diff --git a/backoffice/api/lib/sendemail.pm b/backoffice/api/lib/sendemail.pm index db1a4cc..1b46a26 100644 --- a/backoffice/api/lib/sendemail.pm +++ b/backoffice/api/lib/sendemail.pm @@ -20,6 +20,7 @@ sub sendemail(){ my $self = shift; my $template = shift; my $iduser = shift; + my $sendto = shift; my $data = shift; my $attach = shift; my $body = ""; @@ -44,7 +45,7 @@ sub sendemail(){ # open (LOG,">>sendmail.log"); # print LOG "TEMPLATE DATA:".$datasql."\n"; # close(LOG); - my $maildata = $db->dbquerysorted($datasql); + $maildata = $db->dbquerysorted($datasql); $body = $tmpl->{'emailtext'}; $subject = $tmpl->{'mailsubject'}; @@ -65,7 +66,7 @@ sub sendemail(){ #$bodytmpl =~ s/"/\\\"/g; #PROD REPLACE all not replaced DATA #$bodytmpl =~ s/%%\w+%%//g; - $data->{email} = 'ksaffran@dks.lu'; + $sendto = 'ksaffran@dks.lu'; if (($bodytmpl ne "") && ($subject ne "") && (exists($data->{email}))){ my $f = dirname($ENV{'SCRIPT_FILENAME'}).'/api/tmp/mailbody_'.$data->{email}.'.txt'; $f =~ s/\@/_/g; @@ -79,7 +80,7 @@ sub sendemail(){ $cmd .= '-o message-content-type=html '; $cmd .= '-o message-charset=utf-8 '; $cmd .= '-o message-file='.$f.' '; - $cmd .= '-t "'.$data->{"email"}.'" '; + $cmd .= '-t "'.$sendto.'" '; $cmd .= '-u "'.$subject.'" '; # $cmd .= '-m "'.$bodytmpl.'" '; if ($attach != undef){ diff --git a/backoffice/api/lib/session.pm b/backoffice/api/lib/session.pm index 91706f3..ed1586b 100644 --- a/backoffice/api/lib/session.pm +++ b/backoffice/api/lib/session.pm @@ -4,11 +4,11 @@ use strict; use lib ('.'); use lib ('./api/lib'); use File::Basename; -use Digest::SHA qw(sha256_hex); +use Digest::SHA::PurePerl qw(sha256_hex); use dksdb; use sendemail; -use Data::Dumper; +# use Data::Dumper; sub new { my $class = shift; @@ -22,31 +22,32 @@ sub checklogin(){ my $login = shift; my $password = shift; my $pwd = sha256_hex($password); - my $sid = ""; - my $sql = "select id from users where username='".$login."' and userpassword='".$pwd."' and userpassword is not null and blocked is null;"; + my $sql = "select * from check_login('".$self->{db}->securetext($login)."','".$pwd."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');"; my $res = $self->{db}->dbquerysorted($sql); if(keys(%{$res}) == 1){ - $sid = $self->createsessionid(); - $self->{db}->dbexec("DELETE FROM sessions where id_user='".$res->{0}->{id}."' and remote_addr='".$ENV{REMOTE_ADDR}."' and user_agent='".$ENV{HTTP_USER_AGENT}."';"); - $self->{db}->dbexec("INSERT INTO sessions (id_user, idsession, remote_addr, user_agent) VALUES('".$res->{0}->{id}."', '".$sid."', '".$ENV{REMOTE_ADDR}."', '".$ENV{HTTP_USER_AGENT}."');"); + return $res->{0}->{check_login}; } - return $sid; + return undef; } sub passwordforgotten(){ my $self = shift; my $email = shift; - my $sql = "select id from users where username='".$self->{db}->securetext($email)."' or email='".$self->{db}->securetext($email)."';"; + my $newpwd = $self->randompassword(); + my $pwd = sha256_hex($newpwd); + my $sql = "select * from reset_password('".$self->{db}->securetext($email)."','".$pwd."');"; my $ex = $self->{db}->dbquerysorted($sql); if (keys(%{$ex}) == 0){ - return -2; + return 0; } - my $newpwd = $self->resetpassword($ex->{0}->{id}); - my $data->{email} = $email; - $data->{newpassword} = $newpwd; + if ($ex->{reset_password}->{0} eq "0"){ + return 0; + } + my $data->{newpassword} = $newpwd; my $eml = sendemail->new(); - my $ret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$data,undef); + my $ret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef); + return $ret; } sub registeruser(){ @@ -55,46 +56,28 @@ sub registeruser(){ if (!exists($data->{prename}) || !exists($data->{surname}) || !exists($data->{email}) || !exists($data->{terms})){ return -1; } - my $sql = "select id from users where username='".$self->{db}->securetext($data->{email})."' or email='".$self->{db}->securetext($data->{email})."';"; - my $ex = $self->{db}->dbquerysorted($sql); - if (keys(%{$ex}) > 0){ - return -2; - } - $sql = "INSERT INTO users (surname, prename, email, usergroup, username) values -('".$self->{db}->securetext($data->{surname})."', '".$self->{db}->securetext($data->{prename})."', '".$self->{db}->securetext($data->{email})."', '".(($data->{email} =~ /\@barreau.lu$/)?'avocat':'user')."', '".$self->{db}->securetext($data->{email})."') returning id;"; - my $u = $self->{db}->dbquerysorted($sql); - if ($data->{email} =~ /\@barreau.lu$/){ - $sql = "INSERT INTO appaccess (id_user) VALUES('".$u->{0}->{id}."');"; + foreach my $d (%{$data}){ + $data->{$d} = $self->{db}->securetext($data->{$d}); } - else { - $sql = "INSERT INTO appaccess (id_user) VALUES('".$u->{0}->{id}."');"; + my $usergroup = 'user'; + if ($data->{email} =~ /\@barreau.lu$/) { + $usergroup = 'avocat'; } - my $maildata->{email} = $data->{email}; - $maildata->{password} = $self->resetpassword($u->{0}->{id}); + my $newpwd = $self->randompassword(); + my $pwd = sha256_hex($newpwd); + my $ex = $self->{db}->dbquerysorted("select * from add_profile('".$data->{surname}."', '".$data->{prename}."', '".$data->{email}."','".$usergroup."','".$pwd."');"); + my $maildata->{password} = $newpwd; my $eml = sendemail->new(); - my $ret = $eml->sendemail('user_forgotpasswd',$u->{0}->{id},$maildata,undef); + my $ret = $eml->sendemail('user_registration',$ex->{0}->{add_profile},$data->{email},$maildata,undef); return $ret; } -sub resetpassword(){ - my $self = shift; - my $userid = shift; - my $newpwd = $self->randompassword(); - my $pwd = sha256_hex($newpwd); - my $sql = "UPDATE users SET userpassword = '".$pwd."' WHERE id=".$userid.";"; - my $ret = $self->{db}->dbexec($sql); - return $newpwd; -} + sub getsession($){ my $self = shift; my $sid = shift; - my $sql = "select se.idsession,us.id,us.username,us.prename,us.surname,us.usergroup from sessions se -join users us on (us.id=se.id_user) -left join appaccess ac on (us.id=ac.id_user) -where se.idsession='".$sid."' -and se.remote_addr='".$ENV{REMOTE_ADDR}."' -and se.user_agent='".$ENV{HTTP_USER_AGENT}."' and us.blocked is null;"; + my $sql = "select * from get_session('".$self->{db}->securetext($sid)."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."')"; my $res= $self->{db}->dbquerysorted($sql); my $ret = undef; if (keys(%{$res}) > 0){ @@ -103,26 +86,10 @@ and se.user_agent='".$ENV{HTTP_USER_AGENT}."' and us.blocked is null;"; return $ret; } -sub createsessionid(){ - my $self = shift; - my $randnum =""; - my $i =0; - while ($i<50) - { - my $r1 = int(rand(3)) + 1 ; - if ($r1 == 1){ $randnum .= chr(int(rand(9) +48));$i++;} - if ($r1 == 2){ $randnum .= chr(int(rand(24) +65));$i++;} - if ($r1 == 3){ $randnum .= chr(int(rand(24) +97));$i++;} - } - return $randnum; -} - sub deletesession(){ my $self = shift; my $sid = shift; - if ($sid ne ''){ - $self->{db}->dbexec("DELETE FROM sessions WHERE idsession='".$sid."';"); - } + $self->{db}->dbexec("select * from delete_session('".$self->{db}->securetext($sid)."');"); } sub randompassword(){ diff --git a/backoffice/api/process.cgi b/backoffice/api/process.cgi index 9e64068..0cb790a 100644 --- a/backoffice/api/process.cgi +++ b/backoffice/api/process.cgi @@ -1,7 +1,8 @@ -#!/usr/bin/perl +#!/home/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl use strict; -use lib ('/home/kilian/perl5/lib/perl5'); +# use lib ('/home/kilian/perl5/lib/perl5'); +use lib ('./lib/perl5'); use lib ('./lib'); use CGI; use CGI::Cookie; @@ -12,6 +13,7 @@ use Data::Dumper; use dksconfig qw/$sitecfg/; use dksdb; use session; +use sendemail; my $cgi = new CGI(); my $scriptpath = $cgi->url(-absolute => 1); my $p = (); @@ -52,12 +54,22 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ } } elsif ($p->{fn} eq "activateapp"){ - my $sql = "select * from create_invoice('".JSON::PP::encode_json($p)."');"; - #send invoice to email + $html->{result}->{params} =$p; + my $eml = sendemail->new(); + my $sql = "select * from create_invoice('".$sess->{id}."','invoice','".JSON::PP::encode_json($p->{appinfo})."','".JSON::PP::encode_json($p->{invoice})."');"; my $res = $db->dbquerysorted($sql); if (keys(%{$res})> 0){ - $html->{result} = $res->{0}; + my $invid = $res->{0}; + my $rep = report->new(); + my $pdffile = $rep->generatepdf($invid,'invoices','invoicedata','pdfname','invoice_dks','fr',dirname($ENV{"SCRIPT_FILENAME"}).'/reports'); + } + # my $sql = "select * from create_invoice('".JSON::PP::encode_json($p)."');"; + #send invoice to email + # my $res = $db->dbquerysorted($sql); + # if (keys(%{$res})> 0){ + # $html->{result} = $res->{0}; + # } } elsif ($p->{fn} eq "savefield"){ @@ -148,6 +160,7 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ } my $appinfo = JSON::PP::decode_json($p->{appinfo}); my $sql = "select * from create_invoice('".$appinfo->{id_user}."','paypal','".JSON::PP::encode_json($appinfo)."','".JSON::PP::encode_json($paypaldata)."');"; + my $eml = sendemail->new(); #set corrrect data to invoicedata #set correct data to paypal_data #send invoice to email @@ -157,15 +170,17 @@ if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){ my $rep = report->new(); my $pdffile = $rep->generatepdf($invid,'invoices','invoicedata','pdfname','invoice_dks','fr',dirname($ENV{"SCRIPT_FILENAME"}).'/reports'); if ($pdffile != undef){ + + $eml->sendemail('user_invoice_paypal',$sess->{id},$sess->{username},{},dirname($ENV{"SCRIPT_FILENAME"}).'/reports/'.$pdffile); #TODO->send invocie to email } } } - elsif ($p->{fn} eq "testinvoice"){ - my $invid = $p->{inv}; - my $rep = report->new(); - $rep->generatepdf($invid,'invoices','invoicedata','pdfname','invoice_dks','fr',dirname($ENV{"SCRIPT_FILENAME"}).'/reports'); - } + # elsif ($p->{fn} eq "testinvoice"){ + # my $invid = $p->{inv}; + # my $rep = report->new(); + # $rep->generatepdf($invid,'invoices','invoicedata','pdfname','invoice_dks','fr',dirname($ENV{"SCRIPT_FILENAME"}).'/reports'); + # } elsif($p->{fn} eq "getevents"){ my $sql = "select * from geteventsbydisponibility(".$sess->{id}.",date('".$p->{startdate}."'),date('".$p->{enddate}."')) order by startdate,starttime;"; my $res = $db->dbquerysorted($sql); diff --git a/backoffice/index.cgi b/backoffice/index.cgi index 241cee9..323e52e 100644 --- a/backoffice/index.cgi +++ b/backoffice/index.cgi @@ -1,12 +1,13 @@ -#!/usr/bin/perl +#!/home/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl use strict; -use lib ('/home/kilian/perl5/lib/perl5'); use lib ('api/lib'); + use File::Basename qw/dirname basename/; use Template; -# use Template::Constants qw( :debug ); +#use Template::Constants qw( :debug ); use CGI; +use CGI::Carp qw(fatalsToBrowser); use CGI::Cookie; use Data::Dumper; use JSON::PP; @@ -163,6 +164,8 @@ $template->process($skl,$vars) || die "Template process failed: ", $template->er # } # print Dumper($skl); # print Dumper($vars); -print "/*".Dumper($vars)."*/"; -#print Dumper($sess); +print "/*"; +print Dumper($vars); +print Dumper($sess); +print "*/"; diff --git a/backoffice/js/backoffice.js b/backoffice/js/backoffice.js index 5000ed4..0b75107 100644 --- a/backoffice/js/backoffice.js +++ b/backoffice/js/backoffice.js @@ -1,6 +1,7 @@ var backoffice = { - loadpage: function(modulepage){ + loadpage: function(modulepage,modulename = ''){ console.log("Load module:" + modulepage); + $("#modulename").html(modulename); $("#moduleframe").attr('src',modulepage); }, logout: function(){ diff --git a/backoffice/tmpl/block/sidebar.tt b/backoffice/tmpl/block/sidebar.tt index 7e8f350..5d81501 100644 --- a/backoffice/tmpl/block/sidebar.tt +++ b/backoffice/tmpl/block/sidebar.tt @@ -8,7 +8,7 @@ -->