CrowdUserDetailsServiceMock.java
/*
* Copyright (C) 2011-2014 eXo Platform SAS.
*
* This file is part of eXo Acceptance Webapp.
*
* eXo Acceptance Webapp is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* eXo Acceptance Webapp software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with eXo Acceptance Webapp; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see <http://www.gnu.org/licenses/>.
*/
package org.exoplatform.acceptance.security;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
/**
* This Spring {@link org.springframework.security.core.userdetails.UserDetailsService} defines two accounts to use in the app for tests and dev.
* An account with administrator role (admin/admin) and one with user role (user/user)
*
* @author Arnaud Héritier ( aheritier@exoplatform.com )
* @since 2.0.0
*/
public class CrowdUserDetailsServiceMock implements UserDetailsService {
private final CrowdUserDetailsMock administrator = new CrowdUserDetailsMock();
private final CrowdUserDetailsMock user = new CrowdUserDetailsMock();
/**
* <p>Constructor for CrowdUserDetailsServiceMock.</p>
*/
public CrowdUserDetailsServiceMock() {
administrator.setUsername("admin");
administrator.setPassword("admin");
administrator.setFirstName("Super");
administrator.setLastName("Administrator");
administrator.setEmail("noreply@exoplatform.com");
administrator.getAuthorities().add(AppAuthority.ROLE_USER);
administrator.getAuthorities().add(AppAuthority.ROLE_ADMIN);
user.setUsername("user");
user.setPassword("user");
user.setFirstName("Famous");
user.setLastName("User");
user.setEmail("noreply@exoplatform.com");
user.getAuthorities().add(AppAuthority.ROLE_USER);
}
/**
* {@inheritDoc}
* Locates the user based on the username. In the actual implementation, the search may possibly be case
* insensitive, or case insensitive depending on how the implementation instance is configured. In this case, the
* <code>UserDetails</code> object that comes back may have a username that is of a different case than what was
* actually requested..
*/
@Override
public ICrowdUserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
if (user.getUsername().equals(username)) {
return user;
} else if (administrator.getUsername().equals(username)) {
return administrator;
} else {
throw new UsernameNotFoundException("Unknown user : " + username);
}
}
}