my( $self, $conn, $auth, $type ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ if($type eq 'output') {
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
+ } else {
+ return $e->event unless $e->allowed('RUN_REPORTS');
+ }
my $class = 'rrf';
$class = 'rtf' if $type eq 'template';
my( $self, $conn, $auth, $type, $folderid, $limit ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ if($type eq 'output') {
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
+ } else {
+ return $e->event unless $e->allowed('RUN_REPORTS');
+ }
my $meth = "search_reporter_${type}";
my $class = 'rr';
$class = 'rt' if $type eq 'template';
my( $self, $conn, $auth, $folderId, $limit, $complete ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
my $search = { folder => $folderId };
my $query = [
my( $self, $conn, $auth, $sched_id ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
my $s = $e->retrieve_reporter_schedule($sched_id)
or return $e->event;
return $s;
my( $self, $conn, $auth, $id ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
my $t = $e->retrieve_reporter_template($id)
or return $e->event;
return $t;
my( $self, $conn, $auth, $id ) = @_;
my $e = new_rstore_editor(authtoken=>$auth);
return $e->event unless $e->checkauth;
- return $e->event unless $e->allowed('RUN_REPORTS');
+ return $e->event unless $e->allowed(['RUN_REPORTS','VIEW_REPORT_OUTPUT']);
my $r = $e->retrieve_reporter_report($id)
or return $e->event;
return $r;
-var perms = [ 'RUN_REPORTS', 'SHARE_REPORT_FOLDER' ];
+var perms = [ 'RUN_REPORTS', 'SHARE_REPORT_FOLDER', 'VIEW_REPORT_OUTPUT' ];
function oilsInitReports() {
oilsRptIdObjects();
if( cgi.param('dbg') ) oilsRptDebugEnabled = true;
fetchHighestPermOrgs(SESSION, USER.id(), perms);
- if( PERMS.RUN_REPORTS == -1 ) {
+ if( PERMS.RUN_REPORTS == -1 && PERMS.VIEW_REPORT_OUTPUT == -1 ) {
unHideMe(DOM.oils_rpt_permission_denied);
hideMe(DOM.oils_rpt_tree_loading);
return false;
oilsRptFolderManager.prototype.fetchFolders = function(auth) {
var obj = this;
- var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'template');
- req.callback( function(r) { obj.drawFolders('template', r.getResultObject()); } );
- req.send();
-
- var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'report');
- req.callback( function(r) { obj.drawFolders('report', r.getResultObject()); } );
- req.send();
+ if(PERMS.RUN_REPORTS != -1) {
+ var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'template');
+ req.callback( function(r) { obj.drawFolders('template', r.getResultObject()); } );
+ req.send();
+
+ var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'report');
+ req.callback( function(r) { obj.drawFolders('report', r.getResultObject()); } );
+ req.send();
+ }
var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'output');
req.callback( function(r) { obj.drawFolders('output', r.getResultObject()); } );