Skip to content

Commit

Permalink
[Rutland] Add script to refresh token.
Browse files Browse the repository at this point in the history
  • Loading branch information
dracos committed Feb 8, 2024
1 parent 4ae701a commit 64650ea
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ BEGIN
use File::Basename qw(dirname);
use File::Spec;
my $d = dirname(File::Spec->rel2abs($0));
require "$d/../setenv.pl";
require "$d/../../setenv.pl";
}
use YAML::XS qw(LoadFile);

Expand Down
58 changes: 58 additions & 0 deletions bin/salesforce/refresh-token
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env perl

use v5.14;
use warnings;

BEGIN {
use File::Basename qw(dirname);
use File::Spec;
my $d = dirname(File::Spec->rel2abs($0));
require "$d/../../setenv.pl";
}

use JSON::MaybeXS;
use LWP::UserAgent;
use Path::Tiny;
use YAML::XS qw(LoadFile);

my $conf = load_config();
my $token = fetch_token();
write_token($token);

# ---

sub load_config {
my $conf_file = shift @ARGV;
die "Please provide a cobrand\n" unless $conf_file;
$conf_file = path(__FILE__)->parent(3)->child("conf", "council-$conf_file.yml");
my $conf = LoadFile($conf_file) or die "Failed to load $conf_file: $!\n";
return $conf;
}

sub fetch_token {
my $client_id = $conf->{client_id};
my $client_secret = $conf->{client_secret};
my $refresh_token = $conf->{refresh_token};
my $salesforce_url = 'https://login.salesforce.com';

my $ua = LWP::UserAgent->new(agent => "FixMyStreet/open311-adapter");
my $response = $ua->post(
"$salesforce_url/services/oauth2/token",
{
grant_type => 'refresh_token',
client_id => $client_id,
client_secret => $client_secret,
refresh_token => $refresh_token,
}
);
$response = decode_json($response->decoded_content);
my $token = $response->{access_token};
die "No token returned" unless $token;
return $token;
}

sub write_token {
my $token = shift;
umask 0137;
path($conf->{credentials_file})->spew($token);
}
9 changes: 8 additions & 1 deletion conf/council-rutland.yml-example
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
endpoint: ''
credentials: ''

client_id: ID
client_secret: SECRET
refresh_token: TOKEN
credentials_file: FILE

logfile: FILE
min_log_level: 'debug'
9 changes: 9 additions & 0 deletions perllib/Integrations/SalesForce/Base.pm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ has 'credentials' => (
default => sub {
my $self = shift;

if ($self->config->{credentials_file}) {
my $data = path($self->config->{credentials_file});
if ($data->exists) {
$data = $data->slurp;
$data =~ s/\s+//g;
}
return $data if $data;
}

if ($self->config->{credentials}) {
return $self->config->{credentials};
}
Expand Down

0 comments on commit 64650ea

Please sign in to comment.