App-Dochazka-REST
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
- Model/: fix some lingering migration-related issues
- Test.pm, t/: migration broke lots of tests; we are now expected to send the
request context, but with Plack::Test there is none(!); fortunately, it is
trivial to simulate such a context ($faux_context)
- dispatch_Message_en.conf: get rid of
DISPATCH_EMPLOYEE_{INSERT,UPDATE,DELETE}_OK message (DOCHAZKA_CUD_OK is
sufficient)
0.343 2014-12-10 16:43 CET
- dbinit_Config.pm: fix names of parameters used to store PostgreSQL superuser
credentials for testing purposes
- ConnBank.pm: refactor the entire module
- REST.pm: adapt to the new ConnBank.pm code; make 'init' routine return a
status object with the Plack application in the payload
- Dispatch/, Model/, Test.pm, t/: adapt to the new ConnBank.pm code
0.344 2014-12-10 18:01 CET
- bin/dochazka-rest: adapt to recent modifications to REST.pm->init
- REST_Message_en.conf: add DOCHAZKA_NO_DBIX_CONNECTOR
- dbinit_Config.pm: sum(numbackends) is not working for some reason; work
around the problem
config/REST_Config.pm view on Meta::CPAN
{ code => 'OVERTIME_WORK', long_desc => 'Overtime work' },
{ code => 'PAID_VACATION', long_desc => 'Paid vacation' },
{ code => 'UNPAID_LEAVE', long_desc => 'Unpaid leave' },
{ code => 'DOCTOR_APPOINTMENT', long_desc => 'Doctor appointment' },
{ code => 'CTO', long_desc => 'Compensation Time Off' },
{ code => 'SICK_DAY', long_desc => 'Discretionary sick leave' },
{ code => 'MEDICAL_LEAVE', long_desc => 'Statutory medical leave' },
] );
# DOCHAZKA_BASIC_AUTH_REALM
# message displayed to user when she is asked to enter her credentials
set( 'DOCHAZKA_BASIC_AUTH_REALM',
'ENTER YOUR DOCHAZKA CREDENTIALS (e.g., demo/demo)' );
# DOCHAZKA_LDAP
# Enable/disable LDAP authentication
set( 'DOCHAZKA_LDAP', 0 );
# DOCHAZKA_LDAP_AUTOCREATE
# Autocreate unknown users if found in LDAP
set( 'DOCHAZKA_LDAP_AUTOCREATE', 0 );
config/sql/dbinit_Config.pm view on Meta::CPAN
#
# sql/dbinit_Config.pm
#
# database initialization SQL
#
# DBINIT_CONNECT_SUPERUSER
# DBINIT_CONNECT_SUPERAUTH
#
# These should be overrided in Dochazka_SiteConfig.pm with real
# superuser credentials (but only for testing - do not put production
# credentials in any configuration file!!!!)
#
set( 'DBINIT_CONNECT_SUPERUSER', 'postgres' );
set( 'DBINIT_CONNECT_SUPERAUTH', 'bogus_password_to_be_overrided' );
#
# DBINIT_CREATE
#
# A list of SQL statements that are executed when the database is first
# created, to set up the table structure, etc. -- see the create_tables
# subroutine in REST.pm
lib/App/Dochazka/REST.pm view on Meta::CPAN
} );
} catch {
$status = $CELL->status_err( 'DOCHAZKA_DBI_ERR', args => [ $_ ] );
};
return $status;
}
=head2 reset_db
Drop and re-create a Dochazka database. Takes superuser credentials as
arguments.
Be very, _very_, _VERY_ careful with this function.
=cut
sub reset_db {
my $status;
my $dbname = $site->DOCHAZKA_DBNAME;
my $dbuser = $site->DOCHAZKA_DBUSER;
my $dbpass = $site->DOCHAZKA_DBPASS;
$log->debug( "Entering " . __PACKAGE__ . "::reset_db to initialize database $dbname with credentials $dbuser / $dbpass" );
# PGTZ *must* be set
$ENV{'PGTZ'} = $site->DOCHAZKA_TIMEZONE;
# create:
# - audit schema (see config/sql/audit_Config.pm)
# - public schema (all application-specific tables, functions, triggers, etc.)
# - the 'root' and 'demo' employees
# - privhistory record for root
print "Getting database connection...";
lib/App/Dochazka/REST/Auth.pm view on Meta::CPAN
$log->error( "Session expired!" );
return 0;
}
return 1;
}
=head3 _authenticate
Authenticate the nick associated with an incoming REST request. Takes a nick
and a password (i.e., a set of credentials). Returns a status object, which
will have level 'OK' on success (with employee object in the payload), 'NOT_OK'
on failure. In the latter case, there will be a declared status.
=cut
sub _authenticate {
my ( $self, $nick, $password ) = @_;
my ( $status, $emp );
$log->debug( "Entering " . __PACKAGE__ . "::_authenticate" );
# empty credentials: fall back to demo/demo
if ( $nick ) {
$log->notice( "Login attempt from $nick" );
} else {
$log->notice( "Login attempt from (anonymous) -- defaulting to demo/demo" );
$nick = 'demo';
$password = 'demo';
}
$log->debug( "\$site->DOCHAZKA_LDAP is " . $site->DOCHAZKA_LDAP );
lib/App/Dochazka/REST/Guide.pm view on Meta::CPAN
set( 'DOCHAZKA_REST_LOG_FILE_RESET', 1);
EOF
#
Where 'mypass' is the PostgreSQL password you set in the 'ALTER
ROLE' command, above.
The C<DBINIT_CONNECT_SUPERAUTH> setting is only needed for database
initialization (see below), when L<App::Dochazka::REST> connects to PostgreSQL
as user 'postgres' to drop/create the database. Once the database is created,
L<App::Dochazka::REST> connects to it using the PostgreSQL credentials of the
current user.
=head2 Database initialization
To initialize the database or reset it to a pristine state:
$ dochazka-resetdb
Note that this is a two-step process. The first step is to create the database,
t/dispatch/001-resource.t view on Meta::CPAN
note( 'request for HTML' );
my $r = GET '/', 'Accept' => 'text/html';
isa_ok( $r, 'HTTP::Request' );
$r->authorization_basic( 'root', 'immutable' );
my $resp = $test->request( $r );
isa_ok( $resp, 'HTTP::Response' );
is( $resp->code, 200 );
like( $resp->content, qr/<html>/ );
note( 'request with bad credentials (401)' );
req( $test, 401, 'fandango', 'GET', '/' );
note( 'request that doesn\'t pass ACL check (403)' );
req( $test, 403, 'demo', 'GET', '/forbidden' );
note( 'GET request for non-existent resource (400)' );
req( $test, 400, 'demo', 'GET', '/HEE HAW!!!/non-existent/resource' );
note( 'PUT request for non-existent resource (400)' );
req( $test, 400, 'demo', 'PUT', '/HEE HAW!!!/non-existent/resource' );
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.585 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )