From b109f05eeeb1f91bbb8b152632d3764b14d5b64b Mon Sep 17 00:00:00 2001 From: Cranix Date: Mon, 1 Apr 2013 11:48:07 -0400 Subject: [PATCH] Dodano mozliowsc logowania sie i rezerwowania ksiazek --- bin/app.pl | 97 ++++++++++++++++++++++++++++++++++++++------- bin/ksiazki.db | Bin 7168 -> 7168 bytes config.yml | 7 ++++ views/ksiazki.db | 0 views/main_page.tt | 5 ++- 5 files changed, 93 insertions(+), 16 deletions(-) delete mode 100644 views/ksiazki.db diff --git a/bin/app.pl b/bin/app.pl index b450be9..8149913 100755 --- a/bin/app.pl +++ b/bin/app.pl @@ -3,12 +3,22 @@ use warnings; use strict; use Dancer; +use Dancer::Session::Simple; use DBI; use Time::localtime; +use LWP::UserAgent; my $dbfile = 'ksiazki.db'; my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile", "", ""); +my ($year,$mon,$mday,$hour,$min,$sec); +$year = localtime->year() + 1900; +$mon = localtime->mon() +1 ; #Miesiace zaczynamy liczyc od 1, a nie od 0, wiec zeby styczen mial numer 1 dodajemy 1 +$mday = localtime->mday(); +$hour = localtime->hour(); +$min = localtime->min(); +$sec = localtime->sec(); + get '/' => sub { my $sth = $dbh->prepare("select * from ksiazki;") or die "Nie mozna spreparowac zapytania"; @@ -18,6 +28,7 @@ get '/' => sub # |kolejne rekordy|kolejne pola rekordow #return ${$result[2]}[4]; + template 'main_page.tt', { 'table' => \@result @@ -30,46 +41,102 @@ get '/req/:book' => sub my ($id,$who) = split (/,/,params->{book}); my $sth=$dbh->prepare("select can_borrow from ksiazki where id=?") or die "Nie mozna spreparowac zapytania"; $sth->execute($id) or die "Nie mozna wykonac"; - my $can_borrow = $sth->fetchrow_array or die "Nie mozna pobrac danych"; - if ($can_borrow == 1) + my $can_borrow = $sth->fetchrow_array or die "Nie mozna pobrac danych"; #Uwaga w or die... moze byc potencjalny blad!!! + + $sth=$dbh->prepare("select reserved from ksiazki where id=?") or die "Nie mozna spreparowac zapytania"; + $sth->execute($id) or die "Nie mozna wykonac"; + my $reserved = $sth->fetchrow_array; + + if ($can_borrow == 1 && $reserved == 0) { my $sth=$dbh->prepare("select who from ksiazki where id=?") or die "Nie mozna spreparowac zapytania"; $sth->execute($id) or die "Nie mozna wykonac"; my $who_from_base = $sth->fetchrow_array or die "Nie mozna pobrac danych"; my $when_borrow='wzieta: '; + if ($who_from_base ne 'nikt') #Jesli jest zapisane, ze ksiazka jest wzieta przez kogos, to znaczy ze teraz zostaje zwrocona { $who='nikt'; $when_borrow='zwrocona: '; } - my ($year,$mon,$mday,$hour,$min,$sec); - $year = localtime->year() + 1900; - $mon = localtime->mon() +1 ; #Miesiace zaczynamy liczyc od 1, a nie od 0, wiec zeby styczen mial numer 1 dodajemy 1 - $mday = localtime->mday(); - $hour = localtime->hour(); - $min = localtime->min(); - $sec = localtime->sec(); $when_borrow = $when_borrow."$hour:$min:$sec, $mday $mon $year"; $sth = $dbh->prepare("update ksiazki set state=not state,who=?,comment=? where id=?") or die "Nie mozna spreparowac zapytania"; $sth->execute($who,$when_borrow,$id) or die "Nie mozna wykonac zapytania"; return 0; } - elsif ($can_borrow == 0) + + elsif ($reserved == 1) + { + return "Ksiazka jest zarezerwowana, nie mozna jej wypozyczyc"; + } + + else { return 1; } - else #Stalo sie cos dziwnego... - { - return "-1"; - } }; post '/res' => sub #do zrobienia, rezerwacja { #return params->{book_id}; - return "Not implemented yet"; + if (session('user')) + { + my $sth = $dbh->prepare("update ksiazki set reserved=1,who=?,comment='zarezerwowana:$hour:$min:$sec, $mday $mon $year' where id=?") or die "Nie mozna spreparowac zapytania"; + my $user=session('user'); + my $book=params->{book_id}; + $sth->execute($user,$book) or die "Nie mozna wykonac"; + return "Zarezerwowano ksiazke"; + } + else + { + return "Zaloguj sie, aby rezerwowac ksiazki"; + } +}; + + +get '/login' => sub +{ + template 'login.tt', + { + } +}; + +get '/logout' => sub +{ + session->destroy; +}; + +post '/login' => sub +{ + my $user=params->{user}; + my $password=params->{password}; + + my $ua = LWP::UserAgent->new; + $ua->agent('Biblioteka Warszawskiego Hackerspace\'u'); + my $req = HTTP::Request->new(POST => 'https://auth.hackerspace.pl'); + + $req->content_type('application/x-www-form-urlencoded'); + $req->content("login=$user&password=$password"); + + my $res = $ua->request($req); + if ($res->is_success) + { + if ($res->content eq 'OK') + { + session user => $user; + return "Zalogowany jako $user"; + } + else + { + return 'Zly login lub haslo!'; + } + } + else + { + return $res->status_line; + } }; dance; diff --git a/bin/ksiazki.db b/bin/ksiazki.db index 26113d54ea431013cce81e6c3452a738999e5bfe..2677920f8639c1af2001e7269c7364c4a8877982 100644 GIT binary patch delta 353 zcmZp$Xt066gE{%1e!28mL-TMgqw$nqmfZu8YHlv z#cpyP4-c0b7f_L~x-d|$7^@tYH#?B)=nAxT@BE;}}EMpkP>kgOt`8CN(fkQ?j` z;-<3sa|N*gx&H1T#fR9uxT2YX+(>^ASBgED%Yg~V^;QKbu4cF3a%Kc_HNmn6`K>oI z3jAlE{9l}%t(t-PFmv^0MUG!gjC&>)`Y{$xEL7!k;{&QT_5^9(CvC@N%?sq(gI!rG GZ43Yczejuk delta 206 zcmZp$Xt0YXme2~Rv@;Y7~?YzwFlB)8e{N((+L@NbD3oB!DD?@V~1tSXu zV+A7vL*sZJZYEY!#Y9fg$%4GWn>koNGqDDPbZur7_|HE1zc@QvF#~fk^Ontu99+yS v%!e3aCpt + logowanie + wyloguj sie + % (my @tab) = @{$_[0]->{'table'}}; % my $pool_id=0; % my $pool_isbn=1; @@ -11,7 +14,7 @@ % my $pool_can_borrow=7; % my $pool_reserved=8; % my $pool_comment=9; - +
idisbntytulautorwlasicicieljest?kto?mozna brac?zarezerwowana?komentarz