|
|
@@ -1,9 +1,10 @@
|
|
|
package com.izouma.awesomeAdmin.web;
|
|
|
|
|
|
import com.izouma.awesomeAdmin.domain.User;
|
|
|
+import com.izouma.awesomeAdmin.enums.AuthorityName;
|
|
|
import com.izouma.awesomeAdmin.exception.AuthenticationException;
|
|
|
import com.izouma.awesomeAdmin.security.JwtTokenUtil;
|
|
|
-import com.izouma.awesomeAdmin.security.JwtUserDetailsService;
|
|
|
+import com.izouma.awesomeAdmin.security.JwtUser;
|
|
|
import com.izouma.awesomeAdmin.security.JwtUserFactory;
|
|
|
import com.izouma.awesomeAdmin.service.UserService;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
@@ -13,8 +14,8 @@ 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.userdetails.UserDetails;
|
|
|
-import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.security.core.Authentication;
|
|
|
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
@@ -26,21 +27,25 @@ import java.util.Objects;
|
|
|
@RestController
|
|
|
@RequestMapping("/auth")
|
|
|
public class AuthenticationController {
|
|
|
- private AuthenticationManager authenticationManager;
|
|
|
- private JwtTokenUtil jwtTokenUtil;
|
|
|
- private JwtUserDetailsService userDetailsService;
|
|
|
- private UserService userService;
|
|
|
+ private final AuthenticationManager authenticationManager;
|
|
|
+ private final JwtTokenUtil jwtTokenUtil;
|
|
|
+ private final UserService userService;
|
|
|
|
|
|
@PostMapping("/login")
|
|
|
public String loginByUserPwd(String username, String password, Integer expiration) {
|
|
|
- try {
|
|
|
- authenticate(username, password);
|
|
|
- final UserDetails userDetails = userDetailsService.loadUserByUsername(username);
|
|
|
- return jwtTokenUtil.generateToken(userDetails);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("loginByUserPwd", e);
|
|
|
- throw new AuthenticationException("用户名或密码错误", e);
|
|
|
+ Authentication authentication = authenticate(username, password);
|
|
|
+ JwtUser jwtUser = (JwtUser) authentication.getPrincipal();
|
|
|
+ return jwtTokenUtil.generateToken(jwtUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @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()))) {
|
|
|
+ throw new AuthenticationException("禁止登录", null);
|
|
|
}
|
|
|
+ JwtUser jwtUser = (JwtUser) authentication.getPrincipal();
|
|
|
+ return jwtTokenUtil.generateToken(jwtUser);
|
|
|
}
|
|
|
|
|
|
@PostMapping("/phoneLogin")
|
|
|
@@ -81,16 +86,18 @@ public class AuthenticationController {
|
|
|
|
|
|
/**
|
|
|
* Authenticates the user. If something is wrong, an {@link AuthenticationException} will be thrown
|
|
|
+ *
|
|
|
+ * @return Authentication
|
|
|
*/
|
|
|
- private void authenticate(String username, String password) {
|
|
|
+ private Authentication authenticate(String username, String password) {
|
|
|
Objects.requireNonNull(username);
|
|
|
Objects.requireNonNull(password);
|
|
|
try {
|
|
|
- authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
|
|
|
+ return authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
|
|
|
} catch (DisabledException e) {
|
|
|
- throw new AuthenticationException("User is disabled!", e);
|
|
|
+ throw new AuthenticationException("禁止登录", e);
|
|
|
} catch (BadCredentialsException e) {
|
|
|
- throw new AuthenticationException("Bad credentials!", e);
|
|
|
+ throw new AuthenticationException("用户名或密码错误", e);
|
|
|
}
|
|
|
}
|
|
|
}
|