From 461289966a55cdd7ba24b1c2853432bae0c7dfce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Thu, 3 Mar 2022 11:49:49 +0100
Subject: [PATCH] Added refresh token task

---
 .../administration/qualiopi/indicator.rb      |  2 +-
 app/models/communication/website.rb           |  2 +-
 .../communication/website/configs/base_url.rb |  2 +-
 .../website/configs/permalinks.rb             |  2 +-
 app/models/education/program.rb               |  2 +-
 lib/tasks/app.rake                            | 24 +++++++++++++++++++
 test/fixtures/communication/websites.yml      |  2 +-
 7 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/app/models/administration/qualiopi/indicator.rb b/app/models/administration/qualiopi/indicator.rb
index 6e06a0273..300286f22 100644
--- a/app/models/administration/qualiopi/indicator.rb
+++ b/app/models/administration/qualiopi/indicator.rb
@@ -20,7 +20,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_eed87f7acf  (criterion_id => administration_qualiopi_criterions.id)
+#  fk_rails_31f1a0a2c9  (criterion_id => administration_qualiopi_criterions.id)
 #
 class Administration::Qualiopi::Indicator < ApplicationRecord
   include Sanitizable
diff --git a/app/models/communication/website.rb b/app/models/communication/website.rb
index b72ab03ad..e4a3519a6 100644
--- a/app/models/communication/website.rb
+++ b/app/models/communication/website.rb
@@ -31,7 +31,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_bb6a496c08  (university_id => universities.id)
+#  fk_rails_94b0abd85b  (university_id => universities.id)
 #
 class Communication::Website < ApplicationRecord
   include WithAbouts
diff --git a/app/models/communication/website/configs/base_url.rb b/app/models/communication/website/configs/base_url.rb
index ffae45935..b016268e4 100644
--- a/app/models/communication/website/configs/base_url.rb
+++ b/app/models/communication/website/configs/base_url.rb
@@ -31,7 +31,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_bb6a496c08  (university_id => universities.id)
+#  fk_rails_94b0abd85b  (university_id => universities.id)
 #
 class Communication::Website::Configs::BaseUrl < Communication::Website
 
diff --git a/app/models/communication/website/configs/permalinks.rb b/app/models/communication/website/configs/permalinks.rb
index 0f269522a..b38d3d26f 100644
--- a/app/models/communication/website/configs/permalinks.rb
+++ b/app/models/communication/website/configs/permalinks.rb
@@ -31,7 +31,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_bb6a496c08  (university_id => universities.id)
+#  fk_rails_94b0abd85b  (university_id => universities.id)
 #
 class Communication::Website::Configs::Permalinks < Communication::Website
 
diff --git a/app/models/education/program.rb b/app/models/education/program.rb
index 69cc14e8e..9857f76eb 100644
--- a/app/models/education/program.rb
+++ b/app/models/education/program.rb
@@ -39,7 +39,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_08b351087c  (university_id => universities.id)
+#  fk_rails_6e16107511  (university_id => universities.id)
 #  fk_rails_ec1f16f607  (parent_id => education_programs.id)
 #
 class Education::Program < ApplicationRecord
diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake
index b0e8e56d8..616dfe0f4 100644
--- a/lib/tasks/app.rake
+++ b/lib/tasks/app.rake
@@ -22,6 +22,30 @@ namespace :app do
     end
   end
 
+  namespace :websites do
+    desc "Refresh access token for Communication Websites."
+    task refresh_tokens: :environment do
+      options = {}
+      option_parser = OptionParser.new
+      option_parser.banner = "Usage: rake app:websites:refresh_tokens -- --old ghp_oldtoken --new ghp_newtoken"
+      option_parser.on("-o OLDTOKEN", "--old OLDTOKEN") do |old_access_token|
+        options[:old_access_token] = old_access_token
+      end
+      option_parser.on("-n NEWTOKEN", "--new NEWTOKEN") do |new_access_token|
+        options[:new_access_token] = new_access_token
+      end
+      args = option_parser.order!(ARGV) {}
+      option_parser.parse!(args)
+
+      websites = Communication::Website.where(access_token: options[:old_access_token])
+      websites.each { |website|
+        puts "Refreshing token for « #{website} »"
+        website.update_column :access_token, options[:new_access_token]
+      }
+      exit 0
+    end
+  end
+
   namespace :db do
     desc 'Get database from Scalingo'
     task :staging do
diff --git a/test/fixtures/communication/websites.yml b/test/fixtures/communication/websites.yml
index 33965b28a..d6718e99b 100644
--- a/test/fixtures/communication/websites.yml
+++ b/test/fixtures/communication/websites.yml
@@ -31,7 +31,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_bb6a496c08  (university_id => universities.id)
+#  fk_rails_94b0abd85b  (university_id => universities.id)
 #
 website_with_github:
   university: default_university
-- 
GitLab