fixes null pointer when user logged in as ldap plus copy/paste errors plus  
moved up invalid check


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/396ac5db
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/396ac5db
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/396ac5db

Branch: refs/heads/master
Commit: 396ac5db4b80ec8046e8f750701bc7a5164228b1
Parents: 528c4ea
Author: Jeremy Mitchell <[email protected]>
Authored: Wed Mar 22 20:07:53 2017 -0600
Committer: Dewayne Richardson <[email protected]>
Committed: Tue Apr 11 10:25:08 2017 -0600

----------------------------------------------------------------------
 traffic_ops/app/lib/API/Job.pm | 53 ++++++++++++++++---------------------
 1 file changed, 23 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/396ac5db/traffic_ops/app/lib/API/Job.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Job.pm b/traffic_ops/app/lib/API/Job.pm
index cf2608e..49891e5 100644
--- a/traffic_ops/app/lib/API/Job.pm
+++ b/traffic_ops/app/lib/API/Job.pm
@@ -79,50 +79,42 @@ sub create {
        my $self = shift;
 
        my $ds_id      = $self->req->json->{dsId};
-       my $agent      = $self->req->json->{agent};
-       my $keyword    = $self->req->json->{keyword};
        my $regex      = $self->req->json->{regex};
        my $ttl        = $self->req->json->{ttl};
        my $start_time = $self->req->json->{startTime};
-       my $asset_type = $self->req->json->{assetType};
 
-       if ( !&is_admin($self) && !&is_oper($self) ) {
+       my ( $is_valid, $result ) = $self->is_valid( { dsId => $ds_id, regex => 
$regex, startTime => $start_time, ttl => $ttl } );
+       if ( !$is_valid ) {
+               return $self->alert($result);
+       }
 
-               # not admin or operations -- only an assigned user can purge
-               my $tm_user = $self->db->resultset('TmUser')->search( { 
username => $self->current_user()->{username} } )->single();
-               my $tm_user_id = $tm_user->id;
+       if ( !&is_oper($self) ) {
 
-               if ( defined($ds_id) ) {
+               # if not ops or higher -- invalidate content (purge) requests 
can only be performed against assigned delivery services
+               my $tm_user = $self->db->resultset('TmUser')->search( { 
username => $self->current_user()->{username} } )->single();
+               my $tm_user_id = (defined($tm_user)) ? $tm_user->id : undef;
 
-                       # select deliveryservice from deliveryservice_tmuser 
where deliveryservice=$ds_id
-                       my $dbh = 
$self->db->resultset('DeliveryserviceTmuser')->search( { deliveryservice => 
$ds_id, tm_user_id => $tm_user_id }, { id => 1 } );
-                       my $count = $dbh->count();
+               # select deliveryservice from deliveryservice_tmuser where 
deliveryservice=$ds_id
+               my $dbh = 
$self->db->resultset('DeliveryserviceTmuser')->search( { deliveryservice => 
$ds_id, tm_user_id => $tm_user_id }, { id => 1 } );
+               my $count = $dbh->count();
 
-                       if ( $count == 0 ) {
-                           $self->forbidden("Forbidden. Delivery service not 
assigned to user.");
-                               return;
-                       }
+               if ( $count == 0 ) {
+                       return $self->forbidden("Forbidden. Delivery service 
not assigned to user.");
                }
        }
 
        # Just pass "true" in the urgent key to make it urgent.
        my $urgent = $self->req->json->{urgent};
 
-       my ( $is_valid, $result ) = $self->is_valid( { dsId => $ds_id, regex => 
$regex, startTime => $start_time, ttl => $ttl } );
-       if ($is_valid) {
-               my $new_id = $self->create_new_job( $ds_id, $regex, 
$start_time, $ttl, 'PURGE', $urgent );
-               if ($new_id) {
-                       my $saved_job = $self->db->resultset("Job")->find( { id 
=> $new_id } );
-                       my $asset_url = $saved_job->asset_url;
-                       &log( $self, "Invalidate content request submitted for 
" . $asset_url, "APICHANGE" );
-                       return $self->success_message( "Invalidate content 
request submitted for: " . $asset_url . " (" . $saved_job->parameters . ")" );
-               }
-               else {
-                       return $self->alert( { "Error creating invalidate 
content request" . $ds_id } );
-               }
+       my $new_id = $self->create_new_job( $ds_id, $regex, $start_time, $ttl, 
'PURGE', $urgent );
+       if ($new_id) {
+               my $saved_job = $self->db->resultset("Job")->find( { id => 
$new_id } );
+               my $asset_url = $saved_job->asset_url;
+               &log( $self, "Invalidate content request submitted for " . 
$asset_url, "APICHANGE" );
+               return $self->success_message( "Invalidate content request 
submitted for: " . $asset_url . " (" . $saved_job->parameters . ")" );
        }
        else {
-               return $self->alert($result);
+               return $self->alert( { "Error creating invalidate content 
request" . $ds_id } );
        }
 }
 
@@ -150,14 +142,15 @@ sub is_valid {
                        startTime => sub {
                                my $value  = shift;
                                my $params = shift;
-                               if ( defined( $params->{'ttl'} ) ) {
+                               if ( defined( $params->{'startTime'} ) ) {
                                        return 
$self->is_valid_date_format($value);
                                }
                        },
+
                        startTime => sub {
                                my $value  = shift;
                                my $params = shift;
-                               if ( defined( $params->{'ttl'} ) ) {
+                               if ( defined( $params->{'startTime'} ) ) {
                                        return 
$self->is_more_than_two_days($value);
                                }
                        },

Reply via email to