package com.hc.jee.webservices.day27restfulwebservices.jwt;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

@Service
public class JwtInMemoryUserDetailsService implements UserDetailsService {

  static List<JwtUserDetails> inMemoryUserList = new ArrayList<>();

  static {

	inMemoryUserList.add(new JwtUserDetails(1L, "ayoub",
	    	  "$2a$10$ADRd8qWU/VOX6Uyi.NQRzuhsxr.H21EQjCOY0EkYh7OjFmk0tXjV6", "ROLE_USER_2"));
    
    inMemoryUserList.add(new JwtUserDetails(1L, "marouene",
      	  "$2a$10$rjkyale5vpCfC5IYfubqoeCwGxeVbJW3RjXYPslr1vMSnR8umbkBK", "ROLE_USER_2"));

  }

  @Override
  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    Optional<JwtUserDetails> findFirst = inMemoryUserList.stream()
        .filter(user -> user.getUsername().equals(username)).findFirst();

    if (!findFirst.isPresent()) {
      throw new UsernameNotFoundException(String.format("USER_NOT_FOUND '%s'.", username));
    }

    return findFirst.get();
  }

}


