// Path: spring-security-saml-sample/src/main/java/com/ulisesbocchio/security/saml/spring/security/SAMLUserDetails.java
// public class SAMLUserDetails implements UserDetails {
// 
//   private SAMLCredential samlCredential;
// 
//   public SAMLUserDetails(SAMLCredential samlCredential) {
//     this.samlCredential = samlCredential;
//   }
// 
//   @Override
//   public Collection<? extends GrantedAuthority> getAuthorities() {
//     return Collections.singletonList(new SimpleGrantedAuthority("ROLE_USER"));
//   }
// 
//   @Override
//   public String getPassword() {
//     return "";
//   }
// 
//   @Override
//   public String getUsername() {
//     return samlCredential.getNameID().getValue();
//   }
// 
//   @Override
//   public boolean isAccountNonExpired() {
//     return true;
//   }
// 
//   @Override
//   public boolean isAccountNonLocked() {
//     return true;
//   }
// 
//   @Override
//   public boolean isCredentialsNonExpired() {
//     return true;
//   }
// 
//   @Override
//   public boolean isEnabled() {
//     return true;
//   }
// 
//   public String getAttribute(String name) {
//     return samlCredential.getAttributeAsString(name);
//   }
// 
//   public String[] getAttributeArray(String name) {
//     return samlCredential.getAttributeAsStringArray(name);
//   }
// 
//   public Map<String, String> getAttributes() {
//     return samlCredential.getAttributes().stream()
//         .collect(Collectors.toMap(Attribute::getName, this::getString));
//   }
// 
//   private String getString(Attribute attribute) {
//     String value = getValue(attribute);
//     return value == null ? "" : value;
//   }
// 
//   public Map<String, String[]> getAttributesArrays() {
//     return samlCredential.getAttributes().stream()
//         .collect(Collectors.toMap(Attribute::getName, this::getValueArray));
//   }
// 
//   private String getValue(Attribute attribute) {
//     return getAttribute(attribute.getName());
//   }
// 
//   private String[] getValueArray(Attribute attribute) {
//     return getAttributeArray(attribute.getName());
//   }
// }


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.ulisesbocchio.security.saml.spring.security.SAMLUserDetails;
import org.springframework.stereotype.Controller;
package com.ulisesbocchio.security.saml.spring.mvc;

/**
 * @author Ulises Bocchio
 */


@Controller
public class HomeController {

    @RequestMapping("/home")
// Path: spring-security-saml-sample/src/main/java/com/ulisesbocchio/security/saml/spring/security/SAMLUserDetails.java
// public class SAMLUserDetails implements UserDetails {
// 
//   private SAMLCredential samlCredential;
// 
//   public SAMLUserDetails(SAMLCredential samlCredential) {
//     this.samlCredential = samlCredential;
//   }
// 
//   @Override
//   public Collection<? extends GrantedAuthority> getAuthorities() {
//     return Collections.singletonList(new SimpleGrantedAuthority("ROLE_USER"));
//   }
// 
//   @Override
//   public String getPassword() {
//     return "";
//   }
// 
//   @Override
//   public String getUsername() {
//     return samlCredential.getNameID().getValue();
//   }
// 
//   @Override
//   public boolean isAccountNonExpired() {
//     return true;
//   }
// 
//   @Override
//   public boolean isAccountNonLocked() {
//     return true;
//   }
// 
//   @Override
//   public boolean isCredentialsNonExpired() {
//     return true;
//   }
// 
//   @Override
//   public boolean isEnabled() {
//     return true;
//   }
// 
//   public String getAttribute(String name) {
//     return samlCredential.getAttributeAsString(name);
//   }
// 
//   public String[] getAttributeArray(String name) {
//     return samlCredential.getAttributeAsStringArray(name);
//   }
// 
//   public Map<String, String> getAttributes() {
//     return samlCredential.getAttributes().stream()
//         .collect(Collectors.toMap(Attribute::getName, this::getString));
//   }
// 
//   private String getString(Attribute attribute) {
//     String value = getValue(attribute);
//     return value == null ? "" : value;
//   }
// 
//   public Map<String, String[]> getAttributesArrays() {
//     return samlCredential.getAttributes().stream()
//         .collect(Collectors.toMap(Attribute::getName, this::getValueArray));
//   }
// 
//   private String getValue(Attribute attribute) {
//     return getAttribute(attribute.getName());
//   }
// 
//   private String[] getValueArray(Attribute attribute) {
//     return getAttributeArray(attribute.getName());
//   }
// }


// Path: spring-security-saml-sample/src/main/java/com/ulisesbocchio/security/saml/spring/mvc/HomeController.java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.ulisesbocchio.security.saml.spring.security.SAMLUserDetails;
import org.springframework.stereotype.Controller;

package com.ulisesbocchio.security.saml.spring.mvc;

/**
 * @author Ulises Bocchio
 */


@Controller
public class HomeController {

    @RequestMapping("/home")
    public ModelAndView home(@SAMLUser SAMLUserDetails user) {