package com.infinite.focus.server.auth;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;

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;


import static java.util.Collections.emptyList;

/**
 * 
 * @author Saboor
 * 
 *
 */

//Service for loading base user account data
@Service
public class UserDetailsServiceImpl implements UserDetailsService {

	
    private AccountRepository accountRepository;
    
    //Constructor
    public UserDetailsServiceImpl(AccountRepository accountRepository) {
        this.accountRepository = accountRepository;
    }
    
    
    //Load user data by user name
    @Override
    public UserDetails loadUserByUsername(String username) {
    	
        Account account = accountRepository.findByUsername(username);
        
        if (account == null) {
             
        	 account = accountRepository.findByUsername2(username);

             if (account == null) {                 
            	 return new User("xxxxx", "xxxx", emptyList());
             }         
             
             return new User(account.getUsername2(), account.getPassword(), emptyList());
        }
        
        
        return new User(account.getUsername(), account.getPassword(), emptyList());
        
    }
}