diff options
author | Cranix <you@example.com> | 2013-04-01 11:48:07 -0400 |
---|---|---|
committer | Cranix <you@example.com> | 2013-04-01 11:48:07 -0400 |
commit | b109f05eeeb1f91bbb8b152632d3764b14d5b64b (patch) | |
tree | 9223b527823fe2c7e32748c8cea2cc89faf87ae7 /bin/app.pl | |
parent | 49571459e880ab65cc8e3a5cbd705e3f39355827 (diff) | |
download | Biblioteka-b109f05eeeb1f91bbb8b152632d3764b14d5b64b.tar.gz Biblioteka-b109f05eeeb1f91bbb8b152632d3764b14d5b64b.tar.bz2 Biblioteka-b109f05eeeb1f91bbb8b152632d3764b14d5b64b.tar.xz Biblioteka-b109f05eeeb1f91bbb8b152632d3764b14d5b64b.zip |
Dodano mozliowsc logowania sie i rezerwowania ksiazek
Diffstat (limited to 'bin/app.pl')
-rwxr-xr-x | bin/app.pl | 95 |
1 files changed, 81 insertions, 14 deletions
@@ -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 1; + return "Ksiazka jest zarezerwowana, nie mozna jej wypozyczyc"; } - else #Stalo sie cos dziwnego... + + else { - return "-1"; + 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; |