diff --git a/lib/CharmBoard.pm b/lib/CharmBoard.pm index 8fcd596..86e1f10 100644 --- a/lib/CharmBoard.pm +++ b/lib/CharmBoard.pm @@ -17,7 +17,7 @@ sub startup { # load plugins that require no additional conf $app->plugin('TagHelpers'); - $app->plugin('Model', {namespaces => ['CharmBoard::Model']}); + $app->plugin('Model', { namespaces => ['CharmBoard::Model'] }); # load configuration from config file my $config = @@ -69,81 +69,86 @@ sub startup { # session helpers ## create session - $app->helper(session_create => sub { - my $app = shift; + $app->helper( + session_create => sub { + my $app = shift; - my $_session_key = seasoning(16); + my $_session_key = seasoning(16); - # create session entry in db - $app->schema->resultset('Session')->create({ - session_key => $_session_key, - user_id => $_[0], - session_expiry => time + 604800, - is_ip_bound => 0, - bound_ip => undef - }); + # create session entry in db + $app->schema->resultset('Session')->create({ + session_key => $_session_key, + user_id => $_[0], + session_expiry => time + 604800, + is_ip_bound => 0, + bound_ip => undef + }); - # now create session cookie - $app->session(is_auth => 1 ); - $app->session(user_id => $_[0] ); - $app->session(session_key => $_session_key); - $app->session(expiration => 604800 ); - }); - ## destroy session - $app->helper(session_destroy => sub { - my $app = shift; - - my $_session_key = $app->session('session_key'); - - # destroy entry for this session in the database - $app->schema->resultset('Session') - ->search({ session_key => $_session_key }) - ->delete; - - # now nuke the actual session cookie - $app->session(expires => 1); - }); - ## verify session - $app->helper(session_verify => sub { - my $app = shift; - - my $_validity = 1; - my $_catch_error; - - # get info from user's session cookie and store it in vars - my $_user_id = $app->session('user_id'); - my $_session_key = $app->session('session_key'); - my $_is_auth = $app->session('is_auth'); - - if ($_is_auth) { - try { - # check to see if session with this id is present in db - ($app->schema->resultset('Session')->search - ({ 'session_key' => $_session_key }) - ->get_column('session_key')->first) - or die; - - # check to see if the current session key's user id matches - # that of the user id in the database - $_user_id == ($app->schema->resultset('Session')-> - session_uid($_session_key)) - or die; - - # check if session is still within valid time as recorded in - # the db - time < ($app->schema->resultset('Session')-> - session_expiry($_session_key)) - or die; - } catch ($_catch_error) { - $_validity = undef; - $app->session_destroy; - } - } else { - $_validity = 0; + # now create session cookie + $app->session(is_auth => 1); + $app->session(user_id => $_[0]); + $app->session(session_key => $_session_key); + $app->session(expiration => 604800); } + ); + ## destroy session + $app->helper( + session_destroy => sub { + my $app = shift; - return $_validity; - }); + my $_session_key = $app->session('session_key'); + + # destroy entry for this session in the database + $app->schema->resultset('Session') + ->search({ session_key => $_session_key })->delete; + + # now nuke the actual session cookie + $app->session(expires => 1); + } + ); + ## verify session + $app->helper( + session_verify => sub { + my $app = shift; + + my $_validity = 1; + my $_catch_error; + + # get info from user's session cookie and store it in vars + my $_user_id = $app->session('user_id'); + my $_session_key = $app->session('session_key'); + my $_is_auth = $app->session('is_auth'); + + if ($_is_auth) { + try { + # check to see if session with this id is present in db + ($app->schema->resultset('Session') + ->search({ 'session_key' => $_session_key }) + ->get_column('session_key')->first) + or die; + + # check to see if the current session key's user id matches + # that of the user id in the database + $_user_id == ($app->schema->resultset('Session') + ->session_uid($_session_key)) + or die; + + # check if session is still within valid time as recorded in + # the db + time < ($app->schema->resultset('Session') + ->session_expiry($_session_key)) + or die; + } catch ($_catch_error) { + $_validity = undef; + $app->session_destroy; + } + } else { + $_validity = 0; + } + + return $_validity; + } + ); # router my $r = $app->routes; diff --git a/lib/CharmBoard/Controller/Login.pm b/lib/CharmBoard/Controller/Login.pm index 97cbc1a..278dcc5 100644 --- a/lib/CharmBoard/Controller/Login.pm +++ b/lib/CharmBoard/Controller/Login.pm @@ -22,7 +22,7 @@ sub login { } sub login_do { - my $c = shift; + my $c = shift; my $username = $c->param('username'); my $password = $c->pepper . ':' . $c->param('password'); @@ -62,7 +62,8 @@ sub login_do { } catch ($catch_error) { # redirect to login page on fail print $catch_error; $c->flash( - error => 'Your username and password were correct, but a server + error => + 'Your username and password were correct, but a server error prevented you from logging in. This has been logged so the administrator can fix it.' ); diff --git a/lib/CharmBoard/Controller/NewThread.pm b/lib/CharmBoard/Controller/NewThread.pm index 7bd51ba..2798863 100644 --- a/lib/CharmBoard/Controller/NewThread.pm +++ b/lib/CharmBoard/Controller/NewThread.pm @@ -16,17 +16,16 @@ sub thread_compose { my $subf_cat = $c->schema->resultset('Subforums')->cat_from_id($subf_id); my $cat_title = - $c->schema->resultset('Categories') - ->title_from_id($subf_cat); + $c->schema->resultset('Categories')->title_from_id($subf_cat); $c->render( - template => 'thread_compose', - subf_id => $subf_id, - cat_title => $cat_title, - subf_title => $c->schema->resultset('Subforums') - ->title_from_id($subf_id), - error => $c->flash('error'), - message => $c->flash('message') + template => 'thread_compose', + subf_id => $subf_id, + cat_title => $cat_title, + subf_title => + $c->schema->resultset('Subforums')->title_from_id($subf_id), + error => $c->flash('error'), + message => $c->flash('message') ) } @@ -36,7 +35,7 @@ sub thread_submit { my $thread_title = $c->param('thread-title'); my $post_content = $c->param('post-content'); my $post_time = time; - my $subf_id = $c->param('id'); + my $subf_id = $c->param('id'); my $catch_error; @@ -50,7 +49,7 @@ sub thread_submit { } # now send it - + } 1; diff --git a/lib/CharmBoard/Controller/Register.pm b/lib/CharmBoard/Controller/Register.pm index daa0f91..d369ca0 100644 --- a/lib/CharmBoard/Controller/Register.pm +++ b/lib/CharmBoard/Controller/Register.pm @@ -53,8 +53,9 @@ sub register_do { ## search for input username and email in database $user_check = $c->schema->resultset('Users') ->search({ username => $username })->single; - $email_check = $c->schema->resultset('Users') - ->search({ email => $email })->single; + $email_check = + $c->schema->resultset('Users')->search({ email => $email }) + ->single; # TODO: compress this into something less redundant ($user_check && $email_check) eq undef @@ -90,7 +91,7 @@ sub register_do { print $catch_error; $c->flash( error => - 'Your registration info was correct, but a server error + 'Your registration info was correct, but a server error prevented you from registering. This has been logged so the administrator can fix it.' ); diff --git a/lib/CharmBoard/Controller/ViewSubf.pm b/lib/CharmBoard/Controller/ViewSubf.pm index 5b6b643..f7953b0 100644 --- a/lib/CharmBoard/Controller/ViewSubf.pm +++ b/lib/CharmBoard/Controller/ViewSubf.pm @@ -16,21 +16,20 @@ sub subf_view { my $subf_cat = $c->schema->resultset('Subforums')->cat_from_id($subf_id); my $cat_title = - $c->schema->resultset('Categories') - ->title_from_id($subf_cat); + $c->schema->resultset('Categories')->title_from_id($subf_cat); my @thread_list = $c->schema->resultset('Threads')->fetch_by_subf($subf_id); $c->render( - template => 'subf', - subf_id => $subf_id, - cat_title => $cat_title, - subf_title => $c->schema->resultset('Subforums') - ->title_from_id($subf_id), + template => 'subf', + subf_id => $subf_id, + cat_title => $cat_title, + subf_title => + $c->schema->resultset('Subforums')->title_from_id($subf_id), thread_list => \@thread_list ) } 1; -__END__ \ No newline at end of file +__END__ diff --git a/lib/CharmBoard/Model/Forums.pm b/lib/CharmBoard/Model/Forums.pm index b91dc3f..128651b 100644 --- a/lib/CharmBoard/Model/Forums.pm +++ b/lib/CharmBoard/Model/Forums.pm @@ -12,8 +12,10 @@ use Tree::Simple; sub list_full { my $c = shift; + # fetch a list of all categories - my @_all_cat = $c->{app}->schema->resultset('Categories')->fetch_all; + my @_all_cat = + $c->{app}->schema->resultset('Categories')->fetch_all; # create a Tree::Simple object that will contain the list # of categories and the subforums that belong to them @@ -41,4 +43,4 @@ sub list_full { } 1; -__END__ \ No newline at end of file +__END__