Spezifisches Recht für CSV-Import(2)
authorMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Sat, 17 Sep 2016 06:42:31 +0000 (08:42 +0200)
committerMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Sat, 17 Sep 2016 06:55:41 +0000 (08:55 +0200)
Neue Implementierung: Die access-Prüfung findet nun im "Worker" statt,
so kann für die Banktransaktionen in "CsvImport/BankTransaction"
neben "config" auch das Recht "bank_transaction" zugelassen werden.

Davon getrennt ist nun das Verhalten, das bei einem vorgegebenen Profil
dieses nich tzum Editieren angeboten wird, sondern gleich in den Import->Test gegangen wird.
Dazu ist im entsprechenden Profil der Parameter "dont_edit_profile" auf "1" zu setzen.

SL/Controller/CsvImport.pm
SL/Controller/CsvImport/BankTransaction.pm
SL/Controller/CsvImport/Base.pm
templates/webpages/csv_import/_deferred_report.html
templates/webpages/csv_import/_deferred_results.html
templates/webpages/csv_import/form.html

index 3c925ab..fa988cb 100644 (file)
@@ -32,7 +32,6 @@ use parent qw(SL::Controller::Base);
 use Rose::Object::MakeMethods::Generic
 (
  scalar                  => [ qw(type profile file all_profiles all_charsets sep_char all_sep_chars quote_char all_quote_chars escape_char all_escape_chars all_buchungsgruppen all_units
-                                 csv_import_access
                                  import_status errors headers raw_data_headers info_headers data num_importable displayable_columns file all_taxzones) ],
  'scalar --get_set_init' => [ qw(worker task_server num_imported mappings) ],
  'array'                 => [
@@ -41,7 +40,7 @@ use Rose::Object::MakeMethods::Generic
  ],
 );
 
-__PACKAGE__->run_before('check_auth');
+__PACKAGE__->run_before('check_auth', except => [ qw(report) ]);
 __PACKAGE__->run_before('ensure_form_structure');
 __PACKAGE__->run_before('check_type', except => [ qw(report) ]);
 __PACKAGE__->run_before('load_all_profiles');
@@ -267,13 +266,8 @@ sub action_add_mapping_from_upload {
 #
 
 sub check_auth {
-  my ($self) = @_;
-  if ( $::form->{csv_import_access} ) {
-    $self->csv_import_access($::form->{csv_import_access});
-    return $::auth->assert($self->csv_import_access);
-  } else {
-    return $::auth->assert('config');
-  }
+  $_[0]->check_type;
+  $_[0]->worker->check_auth;
 }
 
 sub check_type {
index 5be8968..2c27041 100644 (file)
@@ -183,4 +183,8 @@ sub join_remote_names {
   $object->remote_name($remote_name);
 }
 
+sub check_auth {
+  $::auth->assert('config') if ! $::auth->assert('bank_transaction',1);
+}
+
 1;
index 17a3bfd..e904989 100644 (file)
@@ -339,6 +339,10 @@ sub check_objects {
 sub check_duplicates {
 }
 
+sub check_auth {
+  $::auth->assert('config');
+}
+
 sub check_std_duplicates {
   my $self = shift;
 
index 4d08432..d4fde08 100644 (file)
@@ -20,7 +20,7 @@
 
   $(document).ready(function(){
     [%- IF SELF.background_job.data_as_hash.report_id %]
-      get_report('#csv_import_report', 'controller.pl', { action: 'CsvImport/report', 'no_layout': 1, 'id': [% SELF.background_job.data_as_hash.report_id %], 'csv_import_access' : '[% SELF.csv_import_access %]' });
+      get_report('#csv_import_report', 'controller.pl', { action: 'CsvImport/report', 'no_layout': 1, 'id': [% SELF.background_job.data_as_hash.report_id %] });
     [%- END %]
   });
 
index 87e913f..7f68a32 100644 (file)
@@ -16,7 +16,6 @@
       data: {
         action: 'CsvImport/result',
         'profile.type': '[% SELF.profile.type %]',
-        'csv_import_access' : '[% SELF.csv_import_access %]',
         job: '[% SELF.background_job.id %]'
       },
       success: function(data) { $('#results').html(data) },
index f42cdd8..7ebd6c2 100644 (file)
@@ -10,9 +10,8 @@
   [% L.hidden_tag('form_sent', '1') %]
   [% L.hidden_tag('action', 'CsvImport/dispatch') %]
   [% L.hidden_tag('profile.type', SELF.profile.type) %]
-  [% L.hidden_tag('csv_import_access', SELF.csv_import_access) %]
 
- [%- IF SELF.csv_import_access %]
+ [%- IF SELF.profile.get('dont_edit_profile') %]
   [% L.hidden_tag('force_profile', 1) %]
   [% L.hidden_tag('profile.id', SELF.profile.id) %]
  [%- ELSE %]