UserDetailServiceImpl.java 1.77 KB
package com.objecteye.service.impl;

import com.objecteye.pojo.TokenUser;
import com.objecteye.pojo.UserDetailsMsg;
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;

import java.util.List;

@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 {
        List<UserDetailsMsg> userDetailsMsgs = mongoTemplate.find(Query.query(Criteria.where("userName").is(s)), UserDetailsMsg.class);

        // admin
        UserDetailsMsg superAdminUser = new UserDetailsMsg();
        superAdminUser.setUsername("superAdmin");
        superAdminUser.setPassword("123456");
        superAdminUser.setUserRole("1");
        userDetailsMsgs.add(superAdminUser);
        if (userDetailsMsgs.size() > 0) {
            UserDetailsMsg userDetailsMsg = userDetailsMsgs.get(0);
            return new TokenUser(userDetailsMsg.getUsername(), passwordEncoder.encode(userDetailsMsg.getPassword()));
        }

        return null;
    }
}