Commit c0984c7

mo <mo.khan@gmail.com>
2017-11-19 17:28:37
use binding to serialize the response.
1 parent a77313b
Changed files (2)
app
app/controllers/sessions_controller.rb
@@ -11,8 +11,8 @@ class SessionsController < ApplicationController
     if user = User.login(user_params[:email], user_params[:password])
       reset_session
       session[:user_id] = user.id
-      @saml_response = @saml_request.response_for(user)
-      @relay_state = params[:RelayState]
+      binding = @saml_request.provider.single_logout_service_for(binding: :post)
+      @url, @saml_params = binding.serialize(@saml_request.response_for(user), relay_state: session[:RelayState])
       render layout: "spinner"
     else
       redirect_to new_session_path, error: "Invalid Credentials"
app/views/sessions/create.html.erb
@@ -1,6 +1,7 @@
-<%= 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) %>
+<%= form_tag(@url, style: "position: absolute; left: -10000px; top: -10000px;") do %>
+  <% @saml_params.each do |(key, value)| %>
+    <%= hidden_field_tag key, value %>
+  <% end %>
   <%= submit_tag "Submit" %>
 <% end %>