--- /dev/null
+/*****************************************************************************
+* Copyright Igor Barma, Eric Brun, Alexandre Desoubeaux, Christian Martel,
+* (2 décembre 2008)
+*
+* Ce logiciel est un programme informatique servant à l'évaluation des
+* compétences.
+*
+* Ce logiciel est régi par la licence CeCILL soumise au droit français et
+* respectant les principes de diffusion des logiciels libres. Vous pouvez
+* utiliser, modifier et/ou redistribuer ce programme sous les conditions
+* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+* sur le site "http://www.cecill.info".
+*
+* En contrepartie de l'accessibilité au code source et des droits de copie,
+* de modification et de redistribution accordés par cette licence, il n'est
+* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+* seule une responsabilité restreinte pèse sur l'auteur du programme, le
+* titulaire des droits patrimoniaux et les concédants successifs.
+*
+* A cet égard l'attention de l'utilisateur est attirée sur les risques
+* associés au chargement, à l'utilisation, à la modification et/ou au
+* développement et à la reproduction du logiciel par l'utilisateur étant
+* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+* manipuler et qui le réserve donc à des développeurs et des professionnels
+* avertis possédant des connaissances informatiques approfondies. Les
+* utilisateurs sont donc invités à charger et tester l'adéquation du
+* logiciel à leurs besoins dans des conditions permettant d'assurer la
+* sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+*
+* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+* pris connaissance de la licence CeCILL, et que vous en avez accepté les
+* termes.
+*******************************************************************************/
+package com.pentila.jackrabbit.auth;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.springframework.dao.DataAccessException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.GrantedAuthorityImpl;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+
+
+
+
+/**
+ * The Class CasAuth.
+ */
+public class CasAuth implements UserDetailsService{
+
+
+ public static String role = "ROLE_MEMBER";
+
+ private static LdapDAO ldapDAO;
+
+ public CasAuth(String role){
+ CasAuth.role = role;
+ }
+
+
+
+ /**
+ * Gets the current user.
+ *
+ * @return the current user
+ */
+ public static UserDetails getCurrentUser() {
+ SecurityContext securityContext = SecurityContextHolder.getContext();
+ if (securityContext != null && securityContext.getAuthentication() != null && securityContext.getAuthentication().getPrincipal() != null){
+ return (UserDetails) securityContext.getAuthentication().getPrincipal();
+ }
+ return null;
+
+ }
+
+ /**
+ * Gets the user name.
+ *
+ * @return the user name
+ */
+ public static String getUserName() {
+
+
+ return getCurrentUser().getUsername();
+
+ }
+
+
+
+ public UserDetails loadUserByUsername(String login)
+ throws UsernameNotFoundException, DataAccessException {
+
+ String internalUserId = login;
+
+ if (ldapDAO != null){
+
+ LdapUser u = ldapDAO.getUserFromLogin(login);
+
+ if (u == null){
+ throw new UsernameNotFoundException(login);
+ }
+
+ internalUserId = u.getId();
+
+ }
+
+ final Set<GrantedAuthority> cga = new HashSet<GrantedAuthority>();
+
+
+ cga.add(new GrantedAuthorityImpl(role));
+
+ final String uid = internalUserId;
+
+ UserDetails ud = new UserDetails(){
+
+ public Collection<GrantedAuthority> getAuthorities() {
+
+ return cga;
+ }
+
+ public String getPassword() {
+
+ return "";
+ }
+
+ public String getUsername() {
+
+ return uid;
+ }
+
+ public boolean isAccountNonExpired() {
+
+ return true;
+ }
+
+ public boolean isAccountNonLocked() {
+
+ return true;
+ }
+
+ public boolean isCredentialsNonExpired() {
+
+ return true;
+ }
+
+ public boolean isEnabled() {
+
+ return true;
+ }
+
+ };
+
+ return ud;
+
+
+ }
+
+
+ public static LdapDAO getLdapDAO() {
+ return ldapDAO;
+ }
+
+
+ public void setLdapDAO(LdapDAO ldapDAO) {
+ CasAuth.ldapDAO = ldapDAO;
+ }
+
+
+
+ public static String getRole() {
+ return role;
+ }
+
+
+
+ public static void setRole(String role) {
+ CasAuth.role = role;
+ }
+
+}