1package App::Netdisco::Worker::Plugin::GetAPIKey; 2 3use Dancer ':syntax'; 4use Dancer::Plugin::DBIC 'schema'; 5 6use App::Netdisco::Worker::Plugin; 7use aliased 'App::Netdisco::Worker::Status'; 8 9register_worker({ phase => 'check' }, sub { 10 return Status->error('Missing user (-e).') 11 unless shift->extra; 12 return Status->done('GetAPIKey is able to run'); 13}); 14 15register_worker({ phase => 'main' }, sub { 16 my ($job, $workerconf) = @_; 17 my $username = $job->extra; 18 19 my $user = schema('netdisco')->resultset('User') 20 ->find({ username => $username }); 21 22 return Status->error("No such user") 23 unless $user and $user->in_storage; 24 25 $user->update({ token_from => time, token => \'md5(random()::text)' }) 26 ->discard_changes(); 27 28 return Status->done( 29 sprintf 'Set token for user %s: %s', $username, $user->token); 30}); 31 32true; 33