Files
UserbaseService/src/main/java/com/yunhai/userbase/controller/oapi/ChannelBindController.java
T
chenxing e713d92d49 feat(mobile-auth): MOB-AUTH-03/04 移动认证入库(含 StringRedisTemplate @Qualifier 修复)
- mobile/ 包:移动身份服务适配(verifyPassword/session 快照/授权种子)
- MobileStrongConfiguration:@Qualifier("stringRedisTemplate") 修复双 bean 歧义导致的 /oapi/mobile/* 静默 500
- PasswordVerificationController:POST /oapi/user/verifyPassword(classic app-auth + portal 白名单)
- ApplicationKeyReservation(+Repository)、AppController/Identity/ChannelBind oapi 适配、app_code 守卫配套
- MOB_AUTH_03_schema_DRAFT.sql(8 表 DRAFT)、application_bootstrap.sql 100000 幂等
- 测试:PasswordVerificationControllerTest、ApplicationKeyGateTest、AppControllerActivatedTest、entity/mobile 测试
- 依赖:com.yunhai.platform:yh-mobile-auth:1.1.0-mobauth03-rc.1(Nexus 已有同字节制品)
2026-10-30 10:21:29 +08:00

20 lines
1.5 KiB
Java

package com.yunhai.userbase.controller.oapi;
import com.yunhai.platform.mobile.*;
import com.yunhai.userbase.mobile.MobileIdentityService;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/** Legacy paths retained; naked phone/account/openid authority is retired. */
@RestController @RequestMapping("/oapi/channel")
public class ChannelBindController {
private final ObjectProvider<MobileIdentityService> provider;
public ChannelBindController(ObjectProvider<MobileIdentityService> provider){this.provider=provider;}
private MobileIdentityService service(){MobileIdentityService s=provider.getIfAvailable();AuthFailure.require(s!=null,503,"AUTHORITY_UNAVAILABLE");return s;}
public static class Bind {public String channelProof,userProof,operationId;}
public static class Unbind {public String userActionProof,reauthProof,operationId;}
@GetMapping("/user") public Map<String,Object> user(@RequestHeader("X-YH-Proof") String proof){return service().resolve(proof);}
@PostMapping("/bind") public Map<String,Object> bind(@RequestBody Bind b){return service().bind(b.channelProof,b.userProof,b.operationId);}
@PostMapping("/bindByPhone") public void phone(){Contexts.requireCaller("channel.bind.phone");throw new AuthFailure(403,"METHOD_DISABLED");}
@PostMapping("/unbind") public Map<String,Object> unbind(@RequestBody Unbind b){return service().unbind(b.userActionProof,b.reauthProof,b.operationId);}
}