package com.honvay.cola.auth.web.sms.userdetails;

import com.honvay.cola.auth.core.model.AuthenticatedUser;
import com.honvay.cola.auth.web.sms.SmsUserDetailsService;
import com.honvay.cola.uc.api.UserService;
import com.honvay.cola.uc.api.enums.UserStatus;
import com.honvay.cola.uc.api.model.UserDto;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

/**
 * @author LIQIU
 * created on 2018/12/24
 **/
public class SmsUserDetailsServiceImpl implements SmsUserDetailsService {

	private UserService userService;

	public SmsUserDetailsServiceImpl(UserService userService) {
		this.userService = userService;
	}

	@Override
	public UserDetails loadByPhoneNumber(String phoneNumber) {

		UserDto userDto = userService.findByPhoneNumber(phoneNumber);
		if (userDto == null) {
			throw new UsernameNotFoundException("User " + phoneNumber + " can not be found");
		}

		return AuthenticatedUser.builder()
				.id(userDto.getId())
				.username(userDto.getUsername())
				.password(userDto.getPassword())
				.phoneNumber(userDto.getPhoneNumber())
				.email(userDto.getEmail())
				.avatar(userDto.getAvatar())
				.locked(UserStatus.LOCKED.getValue().equals(userDto.getStatus()))
				.enable(UserStatus.ACTIVE.getValue().equals(userDto.getStatus()))
				.build();

	}

}