/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.ngrinder.security; import org.apache.commons.lang.StringUtils; import org.ngrinder.model.User; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.ArrayList; import java.util.Collection; import java.util.List; import static org.ngrinder.common.util.AccessUtils.getSafe; /** * {@link UserDetails} implementation. * * @author JunHo Yoon * @since 3.0 */ public class SecuredUser implements UserDetails { private static final long serialVersionUID = 9160341654874660746L; /** * Plugin class name from which {@link User} instance is provided. */ private final String userInfoProviderClass; private User user; /** * User instance used for SpringSecurity. * * @param user real user info * @param userInfoProviderClass class name who provides the user info */ public SecuredUser(User user, String userInfoProviderClass) { this.setUser(user); this.userInfoProviderClass = userInfoProviderClass; } /** * Return provided authorities. It returns one Role from {@link User} in the {@link GrantedAuthority} list. * * @return {@link GrantedAuthority} list */ @Override public Collection<GrantedAuthority> getAuthorities() { List<GrantedAuthority> roles = new ArrayList<GrantedAuthority>(1); roles.add(new SimpleGrantedAuthority(getUser().getRole().getShortName())); return roles; } /** * Return password. * * @return password */ @Override public String getPassword() { return getUser().getPassword(); } /** * Return Username (Actually user id). * * @return user name */ @Override public String getUsername() { return getUser().getUserId(); } @Override public boolean isAccountNonExpired() { return getSafe(getUser().isEnabled(), true); } @Override public boolean isAccountNonLocked() { return getSafe(getUser().isEnabled(), true); } @Override public boolean isCredentialsNonExpired() { return getSafe(getUser().isEnabled(), true); } @Override public boolean isEnabled() { return true; } public String getUserInfoProviderClass() { return userInfoProviderClass; } /** * Get auth provider class name. * * @return auth provider class */ @SuppressWarnings("UnusedDeclaration") public String getAuthProviderClass() { if (StringUtils.isNotEmpty(getUser().getAuthProviderClass())) { return getUser().getAuthProviderClass(); } return userInfoProviderClass; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }