| 
      
            Lines 21-27
          use Modern::Perl;
      
      
        Link Here
      
     | 
  
        
          | 21 | 
           | 
          21 | 
           | 
        
        
          | 22 | 
          use Mojo::Base 'Mojolicious::Controller';  | 
          22 | 
          use Mojo::Base 'Mojolicious::Controller';  | 
        
        
          | 23 | 
           | 
          23 | 
           | 
        
          
            
              | 24 | 
              use C4::Auth qw( check_cookie_auth get_session haspermission );  | 
              24 | 
              use C4::Auth qw( check_cookie_auth checkpw_internal get_session haspermission );  | 
            
        
          | 25 | 
          use C4::Context;  | 
          25 | 
          use C4::Context;  | 
        
        
          | 26 | 
           | 
          26 | 
           | 
        
        
          | 27 | 
          use Koha::ApiKeys;  | 
          27 | 
          use Koha::ApiKeys;  | 
        
  
    | 
      
            Lines 37-42
          use Koha::Exceptions;
      
      
        Link Here
      
     | 
  
        
          | 37 | 
          use Koha::Exceptions::Authentication;  | 
          37 | 
          use Koha::Exceptions::Authentication;  | 
        
        
          | 38 | 
          use Koha::Exceptions::Authorization;  | 
          38 | 
          use Koha::Exceptions::Authorization;  | 
        
        
          | 39 | 
           | 
          39 | 
           | 
        
            
               | 
               | 
              40 | 
              use MIME::Base64;  | 
            
        
          | 40 | 
          use Module::Load::Conditional;  | 
          41 | 
          use Module::Load::Conditional;  | 
        
        
          | 41 | 
          use Scalar::Util qw( blessed );  | 
          42 | 
          use Scalar::Util qw( blessed );  | 
        
        
          | 42 | 
          use Try::Tiny;  | 
          43 | 
          use Try::Tiny;  | 
        
  
    | 
      
            Lines 151-156
          sub authenticate_api_request {
      
      
        Link Here
      
     | 
  
        
          | 151 | 
                      );  | 
          152 | 
                      );  | 
        
        
          | 152 | 
                  }  | 
          153 | 
                  }  | 
        
        
          | 153 | 
              }  | 
          154 | 
              }  | 
        
            
               | 
               | 
              155 | 
                  elsif ($authorization_header and $authorization_header =~ /^Basic / ) { | 
            
            
              | 156 | 
                      $user = $c->_basic_auth( $authorization_header );  | 
            
            
              | 157 | 
                      unless ( $user ) { | 
            
            
              | 158 | 
                          # If we have "Authorization: Basic" header and authentication  | 
            
            
              | 159 | 
                          # failed, do not try other authentication means  | 
            
            
              | 160 | 
                          Koha::Exceptions::Authentication::Required->throw(  | 
            
            
              | 161 | 
                              error => 'Authentication failure.'  | 
            
            
              | 162 | 
                          );  | 
            
            
              | 163 | 
                      }  | 
            
            
              | 164 | 
                  }  | 
            
        
          | 154 | 
              else { | 
          165 | 
              else { | 
        
        
          | 155 | 
           | 
          166 | 
           | 
        
        
          | 156 | 
                  my $cookie = $c->cookie('CGISESSID'); | 
          167 | 
                  my $cookie = $c->cookie('CGISESSID'); | 
        
  
    | 
      
            Lines 390-393
          sub _object_ownership_by_reserve_id {
      
      
        Link Here
      
     | 
  
        
          | 390 | 
              return $reserve && $user->borrowernumber == $reserve->borrowernumber;  | 
          401 | 
              return $reserve && $user->borrowernumber == $reserve->borrowernumber;  | 
        
        
          | 391 | 
          }  | 
          402 | 
          }  | 
        
        
          | 392 | 
           | 
          403 | 
           | 
        
            
               | 
               | 
              404 | 
              =head3 _basic_auth  | 
            
            
              | 405 | 
               | 
            
            
              | 406 | 
              Internal method that performs Basic authentication.  | 
            
            
              | 407 | 
               | 
            
            
              | 408 | 
              =cut  | 
            
            
              | 409 | 
               | 
            
            
              | 410 | 
              sub _basic_auth { | 
            
            
              | 411 | 
                  my ( $c, $authorization_header ) = @_;  | 
            
            
              | 412 | 
               | 
            
            
              | 413 | 
                  my ( $type, $credentials ) = split / /, $authorization_header;  | 
            
            
              | 414 | 
               | 
            
            
              | 415 | 
                  unless ($credentials) { | 
            
            
              | 416 | 
                      Koha::Exceptions::Authentication::Required->throw( error => 'Authentication failure.' );  | 
            
            
              | 417 | 
                  }  | 
            
            
              | 418 | 
               | 
            
            
              | 419 | 
                  my $decoded_credentials = decode_base64( $credentials );  | 
            
            
              | 420 | 
                  my ( $user_id, $password ) = split( /:/, $decoded_credentials, 2 );  | 
            
            
              | 421 | 
               | 
            
            
              | 422 | 
                  my $dbh = C4::Context->dbh;  | 
            
            
              | 423 | 
                  unless ( checkpw_internal($dbh, $user_id, $password ) ) { | 
            
            
              | 424 | 
                      Koha::Exceptions::Authorization::Unauthorized->throw("Invalid password"); | 
            
            
              | 425 | 
                  }  | 
            
            
              | 426 | 
               | 
            
            
              | 427 | 
                  return Koha::Patrons->find({ userid => $user_id }); | 
            
            
              | 428 | 
              }  | 
            
            
              | 429 | 
               | 
            
        
          | 393 | 
          1;  | 
          430 | 
          1;  | 
        
            
              | 394 | 
              -   | 
               | 
               |