Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/yau/digitalrmb/platformintegration/interfaces/PlatformSsoController.java
#	src/main/java/com/yau/digitalrmb/security/interfaces/AuthController.java
#	src/main/java/com/yau/digitalrmb/security/interfaces/CurrentUserResponse.java
master
chenyuan 4 weeks ago
commit c48c83abed

@ -5,6 +5,7 @@ import com.yau.digitalrmb.platformintegration.application.PlatformTokenVerifier;
import com.yau.digitalrmb.platformintegration.application.VerifiedPlatformToken; import com.yau.digitalrmb.platformintegration.application.VerifiedPlatformToken;
import com.yau.digitalrmb.platformintegration.config.PlatformIntegrationProperties; import com.yau.digitalrmb.platformintegration.config.PlatformIntegrationProperties;
import com.yau.digitalrmb.security.application.JwtTokenService; import com.yau.digitalrmb.security.application.JwtTokenService;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -32,6 +33,7 @@ public class PlatformSsoController {
} }
@GetMapping("/sso") @GetMapping("/sso")
@Operation(description = "单点登录鉴权")
public ResponseEntity<Void> loginFromPlatform(@RequestParam("token") String token) { public ResponseEntity<Void> loginFromPlatform(@RequestParam("token") String token) {
VerifiedPlatformToken verified = tokenVerifier.verify(token); VerifiedPlatformToken verified = tokenVerifier.verify(token);
localSsoAccountService.synchronize(verified); localSsoAccountService.synchronize(verified);
@ -39,7 +41,10 @@ public class PlatformSsoController {
Collections.singleton(verified.getRoleKey())); Collections.singleton(verified.getRoleKey()));
String location = UriComponentsBuilder.fromUriString(frontend.getCallbackUrl()) String location = UriComponentsBuilder.fromUriString(frontend.getCallbackUrl())
.queryParam("token", localToken.accessToken()).build().encode().toUriString(); .queryParam("token", localToken.accessToken()).build().encode().toUriString();
return ResponseEntity.status(302).header(HttpHeaders.LOCATION, location) return ResponseEntity.status(302)
.header(HttpHeaders.CACHE_CONTROL, "no-store").header("Referrer-Policy", "no-referrer").build(); .header(HttpHeaders.LOCATION, location)
.header(HttpHeaders.CACHE_CONTROL, "no-store")
.header("Referrer-Policy", "no-referrer")
.build();
} }
} }

@ -9,7 +9,8 @@ import com.yau.digitalrmb.shared.api.ApiResponse;
import com.yau.digitalrmb.shared.api.ErrorCode; import com.yau.digitalrmb.shared.api.ErrorCode;
import com.yau.digitalrmb.shared.exception.BusinessException; import com.yau.digitalrmb.shared.exception.BusinessException;
import com.yau.digitalrmb.shared.web.TraceIdFilter; import com.yau.digitalrmb.shared.web.TraceIdFilter;
import javax.validation.Valid; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.jwt.Jwt; import org.springframework.security.oauth2.jwt.Jwt;
@ -19,8 +20,11 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@RestController @RestController
@RequestMapping("/api/v1/auth") @RequestMapping("/api/v1/auth")
@Tag(name = "用户登录及权限认证")
public class AuthController { public class AuthController {
private final RefreshTokenService refreshTokenService; private final RefreshTokenService refreshTokenService;
private final CurrentUserService currentUserService; private final CurrentUserService currentUserService;
@ -34,6 +38,7 @@ public class AuthController {
} }
@PostMapping("/login") @PostMapping("/login")
@Operation(description = "用户登录")
public ApiResponse<LoginResponse> login(@Valid @RequestBody LoginRequest request) { public ApiResponse<LoginResponse> login(@Valid @RequestBody LoginRequest request) {
JwtTokenService.Token token = localAccountAuthenticationService.login(request.username(), request.password()); JwtTokenService.Token token = localAccountAuthenticationService.login(request.username(), request.password());
return ApiResponse.success(new LoginResponse(token.accessToken(), "Bearer", token.expiresIn()), return ApiResponse.success(new LoginResponse(token.accessToken(), "Bearer", token.expiresIn()),
@ -41,6 +46,7 @@ public class AuthController {
} }
@GetMapping("/me") @GetMapping("/me")
@Operation(description = "获取当前登录用户信息")
public ApiResponse<CurrentUserResponse> currentUser() { public ApiResponse<CurrentUserResponse> currentUser() {
CurrentUser user = currentUserService.getCurrentUser(); CurrentUser user = currentUserService.getCurrentUser();
return ApiResponse.success(new CurrentUserResponse(user.getSchoolId(), user.getSchoolName(), return ApiResponse.success(new CurrentUserResponse(user.getSchoolId(), user.getSchoolName(),
@ -50,6 +56,7 @@ public class AuthController {
} }
@PostMapping("/logout") @PostMapping("/logout")
@Operation(description = "登出")
public ApiResponse<Void> logout(@AuthenticationPrincipal Jwt jwt, @Valid @RequestBody LogoutRequest request) { public ApiResponse<Void> logout(@AuthenticationPrincipal Jwt jwt, @Valid @RequestBody LogoutRequest request) {
refreshTokenService.revokeForUser(request.refreshToken(), userId(jwt)); refreshTokenService.revokeForUser(request.refreshToken(), userId(jwt));
return ApiResponse.success(null, MDC.get(TraceIdFilter.MDC_KEY)); return ApiResponse.success(null, MDC.get(TraceIdFilter.MDC_KEY));

@ -1,4 +1,6 @@
spring: spring:
profiles:
active: dev
application: application:
name: digital-rmb-backend name: digital-rmb-backend
datasource: datasource:

Loading…
Cancel
Save