package com.sandu.ximon.admin.service; import com.sandu.ximon.admin.dto.AdminJwtUser; import com.sandu.ximon.dao.domain.Admin; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; /** * @author hupeng * @date 2018-11-22 */ @Slf4j @Service("adminDetailsService") public class AdminDetailsServiceImpl implements UserDetailsService { private final AdminService adminService; private final RoleService roleService; public AdminDetailsServiceImpl(AdminService userService, RoleService roleService) { this.adminService = userService; this.roleService = roleService; } @Override public UserDetails loadUserByUsername(String username) { log.info("loadUserByUsername == {}", username); Admin admin = adminService.findByUserName(username); if (admin == null) { throw new IllegalArgumentException("账号不存在"); } else { return createJwtUser(admin); } } private UserDetails createJwtUser(Admin admin) { return new AdminJwtUser( admin, roleService.mapToGrantedAuthorities(admin.getId(), true) ); } }