1 package OpenILS::Application::AppUtils;
2 use strict; use warnings;
3 use base qw/OpenSRF::Application/;
6 # ---------------------------------------------------------------------------
7 # Pile of utilty methods used accross applications.
8 # ---------------------------------------------------------------------------
11 # ---------------------------------------------------------------------------
12 # on sucess, returns the created session, on failure throws ERROR exception
13 # ---------------------------------------------------------------------------
14 sub start_db_session {
16 my $session = OpenSRF::AppSession->connect( "open-ils.storage" );
17 my $trans_req = $session->request( "open-ils.storage.transaction.begin" );
18 my $trans_resp = $trans_req->recv();
19 if(ref($trans_resp) and $trans_resp->isa("Error")) { throw $trans_resp; }
20 if( ! $trans_resp->content() ) {
21 throw OpenSRF::ERROR ("Unable to Begin Transaction with database" );
27 # ---------------------------------------------------------------------------
28 # commits and destroys the session
29 # ---------------------------------------------------------------------------
30 sub commit_db_session {
31 my( $self, $session ) = @_;
33 my $req = $session->request( "open-ils.storage.transaction.commit" );
34 my $resp = $req->recv();
35 if(ref($resp) and $resp->isa("Error")) { throw $resp; }
38 $session->disconnect();
44 # ---------------------------------------------------------------------------
45 # Checks to see if a user is logged in. Returns the user record on success,
46 # throws an exception on error.
47 # ---------------------------------------------------------------------------
48 sub check_user_session {
50 my( $self, $user_session ) = @_;
51 my $session = OpenSRF::AppSession->create( "open-ils.auth" );
52 my $request = $session->request("open-ils.auth.session.retrieve", $user_session );
53 my $response = $request->recv();
55 throw OpenSRF::EX::ERROR ("Session [$user_session] cannot be authenticated" );
57 if($response->isa("OpenSRF::EX")) {
58 throw $response ($response->stringify);
61 my $user = $response->content;
63 throw OpenSRF::EX::ERROR ("Session [$user_session] cannot be authenticated" );
66 $session->disconnect();
73 my $method = $self->method_lookup("open-ils.auth.session.retrieve");
75 throw OpenSRF::EX::PANIC ("Can't locate method 'open-ils.auth.session.retrieve'" );
78 my ($user) = $method->run( $user_session );
80 throw OpenSRF::EX::ERROR ("Session [$user_session] cannot be authenticated" );