package com.objecteye.service.impl; import com.objecteye.pojo.TokenUser; import com.objecteye.pojo.UserDetailsMsg; import com.objecteye.pojo.UserGroup; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component public class UserDetailServiceImpl implements UserDetailsService { private final PasswordEncoder passwordEncoder; @Autowired public UserDetailServiceImpl(PasswordEncoder passwordEncoder) { this.passwordEncoder = passwordEncoder; } @Autowired private MongoTemplate mongoTemplate; @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { if ("superAdmin".equals(s)) { return new TokenUser("superAdmin", passwordEncoder.encode("123456"), "1"); } UserDetailsMsg userDetailsMsg = mongoTemplate.findOne(Query.query(Criteria.where("username").is(s)), UserDetailsMsg.class); if (userDetailsMsg != null) { UserGroup userGroup = mongoTemplate.findOne(Query.query(Criteria.where("groupCode").is(userDetailsMsg.getGroup())), UserGroup.class); String userRole = userDetailsMsg.getUserRole(); if (userGroup != null) { String groupLevel = userGroup.getGroupLevel(); userRole = String.valueOf(Math.min(Integer.parseInt(userRole), Integer.parseInt(groupLevel))); } return new TokenUser(userDetailsMsg.getUsername(), passwordEncoder.encode(userDetailsMsg.getPassword()), userRole); } return null; } }