|
|
@@ -4,7 +4,6 @@ import com.izouma.nineth.domain.User;
|
|
|
import com.izouma.nineth.enums.AuthorityName;
|
|
|
import com.izouma.nineth.exception.AuthenticationException;
|
|
|
import com.izouma.nineth.security.JwtTokenUtil;
|
|
|
-import com.izouma.nineth.security.JwtUser;
|
|
|
import com.izouma.nineth.security.JwtUserFactory;
|
|
|
import com.izouma.nineth.service.CaptchaService;
|
|
|
import com.izouma.nineth.service.UserService;
|
|
|
@@ -12,11 +11,6 @@ import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
|
-import org.springframework.security.authentication.BadCredentialsException;
|
|
|
-import org.springframework.security.authentication.DisabledException;
|
|
|
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
-import org.springframework.security.core.Authentication;
|
|
|
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
@@ -24,7 +18,6 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
|
|
|
@Slf4j
|
|
|
@AllArgsConstructor
|
|
|
@@ -38,19 +31,18 @@ public class AuthenticationController {
|
|
|
|
|
|
@PostMapping("/login")
|
|
|
public String loginByUserPwd(String username, String password, Integer expiration) {
|
|
|
- Authentication authentication = authenticate(username, password);
|
|
|
- JwtUser jwtUser = (JwtUser) authentication.getPrincipal();
|
|
|
- return jwtTokenUtil.generateToken(jwtUser);
|
|
|
+ User user = userService.loginByUsernamePwd(username, password);
|
|
|
+ return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
|
|
|
}
|
|
|
|
|
|
@PostMapping("/loginAdmin")
|
|
|
public String loginByUserPwdAdmin(String username, String password, Integer expiration) {
|
|
|
- Authentication authentication = authenticate(username, password);
|
|
|
- if (!authentication.getAuthorities().contains(new SimpleGrantedAuthority(AuthorityName.ROLE_ADMIN.name()))) {
|
|
|
+ User user = userService.loginByUsernamePwd(username, password);
|
|
|
+ if (user.getAuthorities() == null ||
|
|
|
+ user.getAuthorities().stream().anyMatch(au -> au.getName().equals(AuthorityName.ROLE_ADMIN.name()))) {
|
|
|
throw new AuthenticationException("禁止登录", null);
|
|
|
}
|
|
|
- JwtUser jwtUser = (JwtUser) authentication.getPrincipal();
|
|
|
- return jwtTokenUtil.generateToken(jwtUser);
|
|
|
+ return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
|
|
|
}
|
|
|
|
|
|
@PostMapping("/phoneLogin")
|
|
|
@@ -139,20 +131,4 @@ public class AuthenticationController {
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * Authenticates the user. If something is wrong, an {@link AuthenticationException} will be thrown
|
|
|
- *
|
|
|
- * @return Authentication
|
|
|
- */
|
|
|
- private Authentication authenticate(String username, String password) {
|
|
|
- Objects.requireNonNull(username);
|
|
|
- Objects.requireNonNull(password);
|
|
|
- try {
|
|
|
- return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
|
|
|
- } catch (DisabledException e) {
|
|
|
- throw new AuthenticationException("禁止登录", e);
|
|
|
- } catch (BadCredentialsException e) {
|
|
|
- throw new AuthenticationException("用户名或密码错误", e);
|
|
|
- }
|
|
|
- }
|
|
|
}
|