Someone implemented the UserDetails interface but made some mistakes. Analyze the code and find two mistakes.
The account can't be locked or expired.
Java
public class UserDetailsImpl implements UserDetails {
private final String username;
private final String password;
private final List<String> rolesAndAuthorities;
public UserDetailsImpl(UserInfo userInfo) {
username = userInfo.getUsername();
password = userInfo.getPassword();
rolesAndAuthorities = userInfo.getRolesAndAuthorities();
}
@Override
public Collection<String> getAuthorities() {
return rolesAndAuthorities;
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return false;
}
}
Kotlin
class UserDetailsImpl(userInfo: UserInfo) : UserDetails {
private val username: String
private val password: String
private val rolesAndAuthorities: List<String>
init {
username = userInfo.getUsername()
password = userInfo.getPassword()
rolesAndAuthorities = userInfo.getRolesAndAuthorities()
}
override fun getAuthorities(): Collection<String> {
return rolesAndAuthorities
}
override fun getPassword() = password
override fun getUsername() = username
override fun isAccountNonExpired() = true
override fun isAccountNonLocked() = true
override fun isCredentialsNonExpired() = true
override fun isEnabled() = false
}