Commit 7071c9e

mo <mo.khan@gmail.com>
2017-11-19 17:53:48
use binding to serialize/deserialize
1 parent c0984c7
Changed files (3)
app
app/controllers/sessions_controller.rb
@@ -21,8 +21,9 @@ class SessionsController < ApplicationController
 
   def destroy
     user = User.find_by(uuid: @saml_request.name_id)
-    @saml_response = @saml_request.response_for(user)
-    @relay_state = params[:RelayState]
+
+    saml_binding = binding_for(request)
+    @url, @saml_params = saml_binding.serialize(@saml_request.response_for(user), relay_state: params[:RelayState])
     reset_session
     render layout: "spinner"
   end
app/models/idp.rb
@@ -22,7 +22,7 @@ class Idp
         builder.attributes << :email
         builder.attributes << :created_at
         builder.build
-        end
+      end
     end
   end
 end
app/views/sessions/destroy.html.erb
@@ -1,8 +1,8 @@
 <h1>Logging Out of IDP</h1>
-<%= form_tag(@saml_response.destination, style: "position: absolute; left: -10000px; top: -10000px;") do %>
-  <%= hidden_field_tag("SAMLResponse", @saml_response.serialize) %>
-  <%= hidden_field_tag("RelayState", @relay_state) %>
-  <%= submit_tag "Submit" %>
+<%= form_tag(@url, style: "position: absolute; left: -10000px; top: -10000px;") do %>
+  <%= @saml_params.each do |(key, value)| %>
+    <%= hidden_field_tag key, value %>
+  <% end %>
 <% end %>
 
 <%= javascript_tag do %>