소스 검색

fix: token携带的身份修正

Arsekl 4 년 전
부모
커밋
9d6c7bbc03

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/Super.java

@@ -10,7 +10,7 @@ import java.time.OffsetDateTime;
 /**
  * @author Kunduin
  */
-@Entity(name = "teacher")
+@Entity
 @Table(name = "super")
 public class Super {
     @Id

+ 11 - 3
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/security/DomainUserDetailsService.java

@@ -1,7 +1,11 @@
 package cn.seecoder.seecoderportalserver.security;
 
+import cn.seecoder.seecoderportalcommon.vo.UserRole;
+import cn.seecoder.seecoderportalserver.domain.User;
 import cn.seecoder.seecoderportalserver.mapper.UserMapper;
 import cn.seecoder.seecoderportalserver.repository.UserRepository;
+import cn.seecoder.seecoderportalserver.service.SuperService;
+import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -10,6 +14,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Optional;
+
 /**
  * @author kunduin
  */
@@ -31,9 +37,11 @@ public class DomainUserDetailsService implements UserDetailsService {
     @Transactional(rollbackFor = Exception.class)
     public UserDetails loadUserByUsername(final String phone) throws UsernameNotFoundException {
         log.debug("Authenticating {}", phone);
-
-        return userRepository
-                .findByPhone(phone)
+        User user = userRepository.findByPhone(phone).get();
+        if (user.getRole().equals(UserRole.SUPER)){
+            user.setRole(userRepository.findById(user.getId()).get().getSuperInfo().getRole());
+        }
+        return Optional.of(user)
                 .map(userMapper::userToDomainUserDetails)
                 .orElseThrow(() -> new UsernameNotFoundException(
                         "User " + phone + " was not found in the database"));