Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThong Kuah <tkuah@gitlab.com>2018-10-11 10:42:32 +0300
committerThong Kuah <tkuah@gitlab.com>2018-10-11 11:26:13 +0300
commit3552187e920a593de16b877cd129e3d56844c754 (patch)
tree6b3709227d7f4b65c816b2a670316ec664bb704b
parentf9bedcfc08bc454e6864df47a7ca0d76b75c634f (diff)
Extract gcp session methods into new Concern
Soon this can be shared with group clusters controller
-rw-r--r--app/controllers/concerns/gcp_session.rb41
-rw-r--r--app/controllers/projects/clusters_controller.rb29
2 files changed, 45 insertions, 25 deletions
diff --git a/app/controllers/concerns/gcp_session.rb b/app/controllers/concerns/gcp_session.rb
new file mode 100644
index 00000000000..75909aedf4c
--- /dev/null
+++ b/app/controllers/concerns/gcp_session.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+module GcpSession
+ extend ActiveSupport::Concern
+
+ included do
+ helper_method :token_in_session
+ end
+
+ private
+
+ def gcp_authorize_url(redirect_url)
+ state = generate_session_key_redirect(redirect_url.to_s)
+
+ GoogleApi::CloudPlatform::Client.new(
+ nil, callback_google_api_auth_url,
+ state: state).authorize_url
+ rescue GoogleApi::Auth::ConfigMissingError
+ # no-op
+ end
+
+ def validated_gcp_token
+ GoogleApi::CloudPlatform::Client.new(token_in_session, nil)
+ .validate_token(expires_at_in_session)
+ end
+
+ def expires_at_in_session
+ @expires_at_in_session ||=
+ session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at]
+ end
+
+ def generate_session_key_redirect(uri)
+ GoogleApi::CloudPlatform::Client.new_session_key_for_redirect_uri do |key|
+ session[key] = uri
+ end
+ end
+
+ def token_in_session
+ session[GoogleApi::CloudPlatform::Client.session_key_for_token]
+ end
+end
diff --git a/app/controllers/projects/clusters_controller.rb b/app/controllers/projects/clusters_controller.rb
index bcdbf48bb35..6e063fce296 100644
--- a/app/controllers/projects/clusters_controller.rb
+++ b/app/controllers/projects/clusters_controller.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class Projects::ClustersController < Projects::ApplicationController
+ include GcpSession
+
before_action :cluster, except: [:index, :new, :create_gcp, :create_user]
before_action :authorize_read_cluster!
before_action :generate_gcp_authorize_url, only: [:new]
@@ -11,7 +13,6 @@ class Projects::ClustersController < Projects::ApplicationController
before_action :authorize_update_cluster!, only: [:update]
before_action :authorize_admin_cluster!, only: [:destroy]
before_action :update_applications_status, only: [:status]
- helper_method :token_in_session
STATUS_POLLING_INTERVAL = 10_000
@@ -169,13 +170,7 @@ class Projects::ClustersController < Projects::ApplicationController
end
def generate_gcp_authorize_url
- state = generate_session_key_redirect(new_project_cluster_path(@project).to_s)
-
- @authorize_url = GoogleApi::CloudPlatform::Client.new(
- nil, callback_google_api_auth_url,
- state: state).authorize_url
- rescue GoogleApi::Auth::ConfigMissingError
- # no-op
+ @authorize_url = gcp_authorize_url(new_project_cluster_path(@project))
end
def gcp_cluster
@@ -191,23 +186,7 @@ class Projects::ClustersController < Projects::ApplicationController
end
def validate_gcp_token
- @valid_gcp_token = GoogleApi::CloudPlatform::Client.new(token_in_session, nil)
- .validate_token(expires_at_in_session)
- end
-
- def token_in_session
- session[GoogleApi::CloudPlatform::Client.session_key_for_token]
- end
-
- def expires_at_in_session
- @expires_at_in_session ||=
- session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at]
- end
-
- def generate_session_key_redirect(uri)
- GoogleApi::CloudPlatform::Client.new_session_key_for_redirect_uri do |key|
- session[key] = uri
- end
+ @valid_gcp_token = validated_gcp_token
end
def authorize_update_cluster!