1 package SL::DB::ValidityToken;
6 use Digest::SHA qw(sha256_hex);
7 use Time::HiRes qw(gettimeofday);
9 use SL::DB::MetaSetup::ValidityToken;
10 use SL::DB::Manager::ValidityToken;
12 __PACKAGE__->meta->initialize;
14 use constant SCOPE_SALES_INVOICE_POST => 'SalesInvoice::Post';
15 use constant SCOPE_PURCHASE_INVOICE_POST => 'PurchaseInvoice::Post';
16 use constant SCOPE_DELIVERY_ORDER_SAVE => 'DeliveryOrder::Save';
17 use constant SCOPE_ORDER_SAVE => 'Order::Save';
18 use constant SCOPE_RECLAMATION_SAVE => 'Reclamation::Save';
19 use constant SCOPE_GL_TRANSACTION_POST => 'GLTransaction::Post';
22 my ($class, %params) = @_;
24 croak "missing required parameter 'scope'" if !$params{scope};
26 my $token_obj = $class->new(
27 scope => $params{scope},
28 valid_until => $params{valid_until} // DateTime->now_local->add(hours => 24),
32 my $token_value = join('-', gettimeofday(), $$, int(rand(1 << 63)));
34 $token_obj->token(sha256_hex($token_value));