package com.tcm.training.admin.app.auth.controller;
|
|
import com.tcm.training.admin.app.auth.dto.AppSmsCodeSendRequest;
|
import com.tcm.training.admin.app.auth.dto.AppAppleLoginRequest;
|
import com.tcm.training.admin.app.auth.dto.AppPasswordLoginRequest;
|
import com.tcm.training.admin.app.auth.dto.AppPasswordResetRequest;
|
import com.tcm.training.admin.app.auth.dto.AppPasswordResetVerifyRequest;
|
import com.tcm.training.admin.app.auth.dto.AppSmsLoginRequest;
|
import com.tcm.training.admin.app.auth.dto.AppWechatLoginRequest;
|
import com.tcm.training.admin.app.auth.service.AppAuthService;
|
import com.tcm.training.admin.app.auth.vo.AppLoginResponse;
|
import com.tcm.training.admin.app.auth.vo.AppPasswordResetVerifyResponse;
|
import com.tcm.training.admin.app.auth.vo.AppSmsCodeSendResponse;
|
import com.tcm.training.admin.common.ApiResponse;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.validation.Valid;
|
|
/**
|
* APP 登录认证接口。
|
*/
|
@Validated
|
@RestController
|
@RequestMapping({"/api/app/auth", "/api/v1/app/auth"})
|
public class AppAuthController {
|
|
private final AppAuthService appAuthService;
|
|
/**
|
* 注入 APP 登录服务。
|
*/
|
public AppAuthController(AppAuthService appAuthService) {
|
this.appAuthService = appAuthService;
|
}
|
|
/**
|
* 发送 APP 登录短信验证码。
|
*/
|
@PostMapping("/sms-code")
|
public ApiResponse<AppSmsCodeSendResponse> sendSmsCode(@Valid @RequestBody AppSmsCodeSendRequest request) {
|
return ApiResponse.ok(appAuthService.sendLoginCode(request));
|
}
|
|
/**
|
* 使用短信验证码完成 APP 登录。
|
*/
|
@PostMapping("/sms-login")
|
public ApiResponse<AppLoginResponse> smsLogin(@Valid @RequestBody AppSmsLoginRequest request) {
|
return ApiResponse.ok(appAuthService.smsLogin(request));
|
}
|
|
/**
|
* 使用手机号密码完成 APP 登录。
|
*/
|
@PostMapping("/password-login")
|
public ApiResponse<AppLoginResponse> passwordLogin(@Valid @RequestBody AppPasswordLoginRequest request) {
|
return ApiResponse.ok(appAuthService.passwordLogin(request));
|
}
|
|
/**
|
* 使用微信授权信息完成 APP 登录。
|
*/
|
@PostMapping("/wechat-login")
|
public ApiResponse<AppLoginResponse> wechatLogin(@RequestBody AppWechatLoginRequest request) {
|
return ApiResponse.ok(appAuthService.wechatLogin(request));
|
}
|
|
/**
|
* 使用苹果授权信息完成 APP 登录。
|
*/
|
@PostMapping("/apple-login")
|
public ApiResponse<AppLoginResponse> appleLogin(@Valid @RequestBody AppAppleLoginRequest request) {
|
return ApiResponse.ok(appAuthService.appleLogin(request));
|
}
|
|
/**
|
* 发送 APP 忘记密码验证码。
|
*/
|
@PostMapping("/password-reset/code")
|
public ApiResponse<AppSmsCodeSendResponse> sendPasswordResetCode(@Valid @RequestBody AppSmsCodeSendRequest request) {
|
return ApiResponse.ok(appAuthService.sendPasswordResetCode(request));
|
}
|
|
/**
|
* 校验 APP 忘记密码验证码并生成一次性重置凭证。
|
*/
|
@PostMapping("/password-reset/verify")
|
public ApiResponse<AppPasswordResetVerifyResponse> verifyPasswordResetCode(@Valid @RequestBody AppPasswordResetVerifyRequest request) {
|
return ApiResponse.ok(appAuthService.verifyPasswordResetCode(request));
|
}
|
|
/**
|
* 使用重置凭证更新 APP 用户密码。
|
*/
|
@PostMapping("/password-reset")
|
public ApiResponse<Void> resetPassword(@Valid @RequestBody AppPasswordResetRequest request) {
|
appAuthService.resetPassword(request);
|
return ApiResponse.ok(null);
|
}
|
|
/**
|
* 注销当前 APP 登录态。
|
*/
|
@PostMapping("/logout")
|
public ApiResponse<Void> logout() {
|
appAuthService.logout();
|
return ApiResponse.ok(null);
|
}
|
|
/**
|
* 刷新当前 APP 登录态有效期。
|
*/
|
@PostMapping("/refresh-token")
|
public ApiResponse<AppLoginResponse> refreshToken() {
|
return ApiResponse.ok(appAuthService.refreshToken());
|
}
|
}
|