#!/usr/bin/perl use strict; use File::Spec; use Config::Tiny; use Data::Dumper; use LIMS::Local::Utils; my $path_to_app_root = LIMS::Local::Utils::find_home || die "Couldn't find path to application directory"; # warn $path_to_app_root; ############ configurable settings in settings.txt ##################### my $config = Config::Tiny->read("$path_to_app_root/config/settings.txt"); my %settings = map %{ $config->{$_} }, qw(local global); # warn Data::Dumper::Dumper \%settings; ######################################################################## my %dbh_params = ( driver => 'mysql', userid => $settings{db_user_id}, pwd => $settings{db_password}, db => $settings{development_db}, # default to devel db - overridden in mod_perl config ); my %cfg = ( settings => \%settings, # authen_cfg => { } # doesn't work here if using instance(); see 'unused configs' # # block in __END__ for details; moved to LIMS::_configure_plugins() db => { development => $settings{development_db}, production => $settings{production_db}, }, dbh_params => [ "dbi:$dbh_params{driver}:$dbh_params{db}", $dbh_params{userid}, $dbh_params{pwd}, ], dfv_defaults => { missing_optional_valid => 1, filters => 'trim', # trims white space pre/post field param field_filters => { }, # use for forcing field formats eg foo => 'uc' msgs => { any_errors => 'dfv_errors', # default err__ # invalid_separator => '
', # needs to be in own to format OK prefix => 'error_', # default err_ invalid => 'invalid', # default 'Invalid' missing => 'missing', # already 'Missing' format => '« %s', }, }, path_to_app_root => $path_to_app_root, path_to_www_docs => $path_to_app_root . '/static/', session_config => { CGI_SESSION_OPTIONS => [], # defined in cgiapp_init DEFAULT_EXPIRY => '24h', # for forgotten_password expiry SEND_COOKIE => 1, COOKIE_PARAMS => { -path => '/', }, }, session_options_file => { Directory => $path_to_app_root.'/sessions', IDFile => $path_to_app_root.'/sessions/cgisession.id', IDInit => 1000, # start at IDIncr => 1, # increment by }, tmpdir => File::Spec->tmpdir(), tt_config => { TEMPLATE_OPTIONS => { WRAPPER => 'site/tt_wrapper', PRE_PROCESS => 'site/tt_pre_process', # PRE_CHOMP => 1, # screwing template format POST_CHOMP => 1, # need to sort dir permissions for mod_perl & server.pl: # COMPILE_DIR => $path_to_app_root.'/compiled_tmpl', INCLUDE_PATH => [ $path_to_app_root.'/src', $path_to_app_root.'/templates', ], }, }, use_cgi_ajax => 1, ); return \%cfg; __END__ # unused configs: # authz_cfg => { # CAP::Authorization config; see update_widget() in pod for eg of complex config # DRIVER => [ 'DBI', # TABLES => [ 'users u', 'user_functions f', 'user_permission p' ], # JOIN_ON => 'u.id = p.user_id AND p.function_id = f.id', # USERNAME => 'username', # CONSTRAINTS => { # function => '__PARAM_1__', # # username => 'ADMIN', # need to make this an 'OR' # }, # ], # FORBIDDEN_RUNMODE => 'forbidden', # doesn't work as expected - using template->fill() method instead # }, # dbi_driver => [ # using Generic driver now # 'DBI', # DBH => undef, # defined in cgiapp_init() # TABLE => 'users', # CREDENTIALS => [ qw(authen_username authen_password) ], # default & correspond to login form field names # CONSTRAINTS => { # username => '__CREDENTIAL_1__', # active => 'yes', # }, # COLUMNS => { # 'sha1_base64:password' => '__CREDENTIAL_2__' # using SHA1 # }, # ], # dbic_driver => [ # 'DBIC', # SCHEMA => undef, # defined in cgiapp_init() $c->param('schema'), # CLASS => 'Users', # = My::DBIC::Users # FIELD_METHODS => [ qw(username password) ], # qw(user MD5:passphrase) # CREDENTIALS => [ qw(authen_username authen_password) ], # ], # flash => [ # session_key => 'FLASH', # auto_cleanup => 1, # ], =begin # doesn't work if using Class::Singleton instance() method of loading config authen_cfg => { # CAP::Authentication DRIVER => [ ], # defined in cgiapp_init() LOGIN_SESSION_TIMEOUT => { IDLE_FOR => '24h', # same as session default - overridden under CUSTOM: EVERY => '1d', CUSTOM => \&custom_timeout, # returns true if the session should be timed out }, LOGIN_RUNMODE => 'login', # redirect_after_login requires destination field in .tt if used # LOGIN_URL => '/hmds/login', # causes redirection loop & don't need if using LOGIN_RUNMODE # POST_LOGIN_URL => '', # leave these blank to re-direct to original requested page # POST_LOGIN_RUNMODE => '', # will override POST_LOGIN_URL STORE => 'Session', # ie CAP::Store::Session # STORE => [ # 'Cookie', # NAME => 'HILISAuthentication', # SECRET => 'HILIS4', # EXPIRY => '30m', # ], }, =cut