diff --git a/lib/AccessCheck/App.pm b/lib/AccessCheck/App.pm index 394ad69d23f0279f858ca8fbd081f26c0a6e1b40..24e8f1d72b2311da927a95b29e2e2b15fdf3640c 100644 --- a/lib/AccessCheck/App.pm +++ b/lib/AccessCheck/App.pm @@ -6,13 +6,26 @@ use English qw(-no_match_vars); use Template::Constants qw(:chomp); use Syntax::Keyword::Try; +use AccessCheck::Data::DB; + use constant { ACCESSCHECK_VERSION => '1.2.0' }; +has 'db'; + sub startup { my $self = shift; + $self->helper( + string_to_list => sub { + my $self = shift; + my $value = shift; + + return defined $value ? split(/, */, $value) : (); + } + ); + $self->plugin('INIConfig', { file => $ENV{ACCESS_CHECK_CONFIG} || 'conf/manager.conf' }); $self->plugin( @@ -39,6 +52,22 @@ sub startup { ) ); + AccessCheck::Data::DB->register_db( + driver => $config->{database}->{type}, + database => $config->{database}->{name}, + host => $config->{database}->{host}, + password => $config->{database}->{password}, + username => $config->{database}->{username}, + options => [ $self->string_to_list($config->{database}->{options}) ] + ); + + try { + $self->db(AccessCheck::Data::DB->new()); + } catch ($error) { + $self->log()->fatal("unable to access database, aborting"); + return; + } + my $theme = $config->{setup}->{templates_theme} || 'default'; my $base_templates_dir = $self->home()->child('templates'); @@ -72,14 +101,6 @@ sub startup { $routes->get('/step4')->to(controller => 'step4', action => 'run')->name('step4'); $routes->get('/step5')->to(controller => 'step5', action => 'run')->name('step5'); - $self->helper( - string_to_list => sub { - my $self = shift; - my $value = shift; - - return defined $value ? split(/, */, $value) : (); - } - ); } diff --git a/lib/AccessCheck/App/Controller.pm b/lib/AccessCheck/App/Controller.pm index 0688c5b2aeba57768e2b5ce820a09fc656e69ccc..0ee9820ce1caff382a61a459295728bd3483f4b4 100644 --- a/lib/AccessCheck/App/Controller.pm +++ b/lib/AccessCheck/App/Controller.pm @@ -5,7 +5,6 @@ use Mojo::Base qw(Mojolicious::Controller); use English qw(-no_match_vars); use Syntax::Keyword::Try; -use AccessCheck::Data::DB; use AccessCheck::Data::Entity; use AccessCheck::Data::Token; use AccessCheck::L10N; @@ -42,31 +41,6 @@ sub init_l10n { return $l10n; } -sub init_db { - my $self = shift; - - my $config = $self->app()->config(); - - AccessCheck::Data::DB->register_db( - driver => $config->{database}->{type}, - database => $config->{database}->{name}, - host => $config->{database}->{host}, - password => $config->{database}->{password}, - username => $config->{database}->{username}, - options => [ $self->string_to_list($config->{database}->{options}) ] - ); - - my $db; - try { - $db = AccessCheck::Data::DB->new(); - } catch { - } - - $self->stash(db => $db); - - return $db; -} - sub init_user { my $self = shift; @@ -106,7 +80,7 @@ sub check_token { my ($self, %args) = @_; my $secret = $args{token}; - my $db = $self->stash('db'); + my $db = $self->app()->db(); my $token = AccessCheck::Data::Token->new( db => $db, @@ -152,7 +126,7 @@ sub get_sp { user_message => "invalid_entityid" ) if $entityid !~ $AccessCheck::Regexp::entityid; - my $db = $self->stash('db'); + my $db = $self->app()->db(); my $sp = AccessCheck::Data::Entity->new( db => $db, @@ -174,7 +148,7 @@ sub abort { my $status = $args{status} || 200; my $format = $args{format} || 'html'; - my $db = $self->stash('db'); + my $db = $self->app()->db(); $db->rollback() if $db && $db->in_transaction(); $self->app()->log()->error($args{log_message}) if $args{log_message}; diff --git a/lib/AccessCheck/App/Status.pm b/lib/AccessCheck/App/Status.pm index 10d997113a75940a5b324efe8edd1f634f6fad6f..26313543b6e90e2a05a0c73535e73b3bfa5709f1 100644 --- a/lib/AccessCheck/App/Status.pm +++ b/lib/AccessCheck/App/Status.pm @@ -31,7 +31,7 @@ Return the health status of the frontend. sub run { my $self = shift; - my $config = $self->app()->config(); + my $config = $self->app()->config(); if (!$config->{status}) { $self->render( diff --git a/lib/AccessCheck/App/Step1.pm b/lib/AccessCheck/App/Step1.pm index 826cb20df6e7e310091526c95fc464f60c8a573e..349fabdd1e546bac05b147844743eb1159dd7df3 100644 --- a/lib/AccessCheck/App/Step1.pm +++ b/lib/AccessCheck/App/Step1.pm @@ -10,10 +10,11 @@ use AccessCheck::Data::Entity; sub run { my $self = shift; - my $config = $self->app()->config(); - my $log = $self->app()->log(); + my $app = $self->app(); + my $config = $app->config(); + my $log = $app->log(); + my $db = $app->db(); - $self->init_db(); $self->init_l10n(); $self->init_user(); @@ -21,7 +22,6 @@ sub run { return if !$self->check_authentication(); } - my $db = $self->stash('db'); my $user = $self->stash('user'); my $sps = AccessCheck::Data::Entity->get_entities( diff --git a/lib/AccessCheck/App/Step2.pm b/lib/AccessCheck/App/Step2.pm index e5749c4eb229db3fe3bc83b366eed5ff06e64bc7..69daf89c669318454978d536147477acae060ea4 100644 --- a/lib/AccessCheck/App/Step2.pm +++ b/lib/AccessCheck/App/Step2.pm @@ -8,10 +8,10 @@ use Syntax::Keyword::Try; sub run { my $self = shift; - my $config = $self->app()->config(); - my $log = $self->app()->log(); + my $app = $self->app(); + my $config = $app->config(); + my $log = $app->log(); - $self->init_db(); $self->init_l10n(); $self->init_user(); diff --git a/lib/AccessCheck/App/Step3.pm b/lib/AccessCheck/App/Step3.pm index 8fb5bb130cee91ff1e3b014871293071f0c62325..decf63befc8bba7865d5f3470495ba3eca581082 100644 --- a/lib/AccessCheck/App/Step3.pm +++ b/lib/AccessCheck/App/Step3.pm @@ -16,10 +16,11 @@ use AccessCheck::Tools; sub run { my $self = shift; - my $config = $self->app()->config(); - my $log = $self->app()->log(); + my $app = $self->app(); + my $config = $app->config(); + my $log = $app->log(); + my $db = $app->db(); - $self->init_db(); $self->init_l10n(); $self->init_user(); @@ -29,7 +30,6 @@ sub run { my $entityid = $self->param('entityid'); my $email = $self->param('email'); - my $db = $self->stash('db'); my $l10n = $self->stash('l10n'); my $user = $self->stash('user'); diff --git a/lib/AccessCheck/App/Step4.pm b/lib/AccessCheck/App/Step4.pm index 932ae9a7183e57450e40b6d1d33a9ad36870d09f..4e793cce0824170d888eb3fa9a0bac97112877c9 100644 --- a/lib/AccessCheck/App/Step4.pm +++ b/lib/AccessCheck/App/Step4.pm @@ -16,10 +16,11 @@ use AccessCheck::Tools; sub run { my $self = shift; - my $config = $self->app()->config(); - my $log = $self->app()->log(); + my $app = $self->app(); + my $config = $app->config(); + my $log = $app->log(); + my $db = $app->db(); - $self->init_db(); $self->init_l10n(); $self->init_user(); @@ -32,7 +33,6 @@ sub run { my $token = $self->param('token'); my $validity = $self->param('validity'); my $profiles = $self->every_param('profiles'); - my $db = $self->stash('db'); my $l10n = $self->stash('l10n'); my $sp = $self->get_sp(entityid => $entityid); diff --git a/lib/AccessCheck/App/Step5.pm b/lib/AccessCheck/App/Step5.pm index ba95f1fa34a27f7e2fa64ac17ff80678c4f8e818..af2444ce6e453d1c6d2758cff11b1b2c96ec2009 100644 --- a/lib/AccessCheck/App/Step5.pm +++ b/lib/AccessCheck/App/Step5.pm @@ -18,8 +18,8 @@ sub run { my $app = $self->app(); my $config = $app->config(); my $log = $app->log(); + my $db = $app->db(); - $self->init_db(); $self->init_l10n(); $self->init_user(); @@ -30,7 +30,6 @@ sub run { my $entityid = $self->param('entityid'); my $token = $self->param('token'); my $key = $self->param('key'); - my $db = $self->stash('db'); return if !$self->check_token(token => $token, entityid => $entityid);