refactor(architecture): harden module boundaries
Some checks failed
ci / release-gate (push) Has been cancelled

This commit is contained in:
2026-08-04 12:10:36 +08:00
parent b38f12e60b
commit 33375a38d7
218 changed files with 5124 additions and 3828 deletions

View File

@@ -18,7 +18,7 @@ namespace Tiku.Api.Controllers;
[Route("api/student/auth")]
[Produces("application/json")]
public sealed class AuthController(
IAuthService authService,
AuthCapabilitySet authCapabilities,
IOwnerActivationService ownerActivationService,
ISmsVerificationService smsVerificationService,
AuthRequestContextResolver requestContextResolver,
@@ -87,7 +87,7 @@ public sealed class AuthController(
requestContextResolver.EnsureRouteRealm(realm, Request);
var identifier = request.Identifier ?? request.Phone;
if (string.IsNullOrWhiteSpace(identifier)) throw new RequiredFieldException("identifier is required.");
var result = await authService.LoginWithPasswordAsync(
var result = await authCapabilities.PasswordLogin.LoginWithPasswordAsync(
new PasswordLoginRequest(
realm,
await requestContextResolver.ResolveRealmTenantIdAsync(realm, request.TenantCode, Request,
@@ -114,7 +114,7 @@ public sealed class AuthController(
{
var realm = request.Realm!.Value;
requestContextResolver.EnsureRouteRealm(realm, Request);
var result = await authService.LoginWithSmsAsync(
var result = await authCapabilities.SmsLogin.LoginWithSmsAsync(
new SmsLoginRequest(
realm,
await requestContextResolver.ResolveRealmTenantIdAsync(realm, request.TenantCode, Request,
@@ -141,7 +141,7 @@ public sealed class AuthController(
{
var realm = request.Realm!.Value;
requestContextResolver.EnsureRouteRealm(realm, Request);
var result = await authService.LoginWithWechatWebAsync(
var result = await authCapabilities.WechatLogin.LoginWithWechatWebAsync(
new WechatLoginRequest(
realm,
await requestContextResolver.ResolveRealmTenantIdAsync(realm, request.TenantCode, Request,
@@ -167,7 +167,7 @@ public sealed class AuthController(
{
var realm = request.Realm!.Value;
requestContextResolver.EnsureRouteRealm(realm, Request);
var result = await authService.LoginWithWechatMiniAppAsync(
var result = await authCapabilities.WechatLogin.LoginWithWechatMiniAppAsync(
new WechatLoginRequest(
realm,
await requestContextResolver.ResolveRealmTenantIdAsync(realm, request.TenantCode, Request,
@@ -189,7 +189,7 @@ public sealed class AuthController(
CancellationToken cancellationToken)
{
requestContextResolver.ResolveRefreshTokenTenant(request.RefreshToken, Request);
var result = await authService.RefreshAsync(
var result = await authCapabilities.Sessions.RefreshAsync(
new RefreshSessionRequest(
request.RefreshToken,
GetIpAddress(),
@@ -209,7 +209,7 @@ public sealed class AuthController(
CancellationToken cancellationToken)
{
requestContextResolver.ResolveRefreshTokenTenant(request.RefreshToken, Request);
await authService.LogoutAsync(
await authCapabilities.Sessions.LogoutAsync(
new LogoutSessionRequest(request.RefreshToken),
cancellationToken);
@@ -225,7 +225,7 @@ public sealed class AuthController(
{
if (currentUser.UserId is not { } userId) return Unauthorized();
await authService.LogoutAllAsync(userId, cancellationToken);
await authCapabilities.Sessions.LogoutAllAsync(userId, cancellationToken);
return NoContent();
}
@@ -239,7 +239,7 @@ public sealed class AuthController(
CancellationToken cancellationToken)
{
requestContextResolver.ResolveAuthChallengeTenant(request.ChallengeToken, Request);
var result = await authService.ChangeRequiredPasswordAsync(
var result = await authCapabilities.PasswordLifecycle.ChangeRequiredPasswordAsync(
new PasswordChangeChallengeRequest(
request.ChallengeToken, request.NewPassword, GetIpAddress(), Request.Headers.UserAgent.ToString()),
cancellationToken);
@@ -259,7 +259,7 @@ public sealed class AuthController(
var tenantId = await requestContextResolver.ResolveRealmTenantIdAsync(AuthRealm.Tenant, request.TenantCode,
Request, cancellationToken)
?? throw new RequiredFieldException("tenantCode is required for password reset.");
var result = await authService.RequestPasswordResetAsync(
var result = await authCapabilities.PasswordLifecycle.RequestPasswordResetAsync(
new PasswordResetCodeRequest(
tenantId,
request.Phone,
@@ -282,7 +282,7 @@ public sealed class AuthController(
var tenantId = await requestContextResolver.ResolveRealmTenantIdAsync(AuthRealm.Tenant, request.TenantCode,
Request, cancellationToken)
?? throw new RequiredFieldException("tenantCode is required for password reset.");
await authService.ResetPasswordAsync(
await authCapabilities.PasswordLifecycle.ResetPasswordAsync(
new PasswordResetRequest(
tenantId,
request.Phone,
@@ -305,7 +305,7 @@ public sealed class AuthController(
{
if (currentUser.UserId is not { } userId || currentUser.SessionId is not { } sessionId) return Unauthorized();
var result = await authService.ChangePasswordAsync(
var result = await authCapabilities.PasswordLifecycle.ChangePasswordAsync(
new AuthenticatedPasswordChangeRequest(
userId,
sessionId,