xiangpei
2024-07-08 d69a9a79a82c8a2f93efcd2b43b0a03ca57a031c
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
@@ -9,7 +9,6 @@
import com.mindskip.xzs.service.AuthenticationService;
import com.mindskip.xzs.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.LockedException;
@@ -18,11 +17,12 @@
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
@@ -60,17 +60,19 @@
            throw new LockedException("用户被禁用");
        }
//        // 查询该用户是不是部门管理员
//        Integer num = departmentMapper.countByAdminId(user.getId());
        ArrayList<GrantedAuthority> grantedAuthorities = new ArrayList<>();
        // 赋予部门管理员角色
        if (DeptAdminEnum.YES.getValue().equals(user.getDeptAdmin())) {
        if (new Integer(-1).equals(user.getRole())) {
            grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.DEPT_ADMIN.getRoleName()));
        }
        grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.fromCode(user.getRole()).getRoleName()));
        User authUser = new User(user.getUserName(), user.getPassword(), grantedAuthorities);
        // 获取该用户管理部门
        List<Integer> deptAdminIds = userService.getDeptAdminIds(user.getId());
        if (CollectionUtils.isEmpty(deptAdminIds)) {
            // 如果是普通学员,查出所在部门
            deptAdminIds = userService.getDeptIds(user.getId());
        }
        MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptAdminIds);
        return new UsernamePasswordAuthenticationToken(authUser, authUser.getPassword(), authUser.getAuthorities());
    }