backup: 사용하지 않는 파일 삭제 전 복구 지점
- 전체 371개 파일 중 82개 미사용 파일 식별 - Phase 1: 33개 파일 삭제 예정 (100% 안전) - Phase 2: 30개 파일 삭제 검토 예정 - Phase 3: 19개 파일 수동 검토 예정 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -9,12 +9,17 @@ import 'package:superport/data/models/auth/login_response.dart';
|
||||
import 'package:superport/data/models/auth/logout_request.dart';
|
||||
import 'package:superport/data/models/auth/refresh_token_request.dart';
|
||||
import 'package:superport/data/models/auth/token_response.dart';
|
||||
import 'package:superport/data/models/auth/auth_user.dart';
|
||||
import 'package:superport/data/models/auth/change_password_request.dart';
|
||||
import 'package:superport/data/models/auth/message_response.dart';
|
||||
import 'package:superport/core/utils/debug_logger.dart';
|
||||
|
||||
abstract class AuthRemoteDataSource {
|
||||
Future<Either<Failure, LoginResponse>> login(LoginRequest request);
|
||||
Future<Either<Failure, void>> logout(LogoutRequest request);
|
||||
Future<Either<Failure, TokenResponse>> refreshToken(RefreshTokenRequest request);
|
||||
Future<Either<Failure, AuthUser>> getCurrentAdmin();
|
||||
Future<Either<Failure, MessageResponse>> changePassword(ChangePasswordRequest request);
|
||||
}
|
||||
|
||||
@LazySingleton(as: AuthRemoteDataSource)
|
||||
@@ -242,4 +247,161 @@ class AuthRemoteDataSourceImpl implements AuthRemoteDataSource {
|
||||
return Left(ServerFailure(message: '토큰 갱신 중 오류가 발생했습니다.'));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Either<Failure, AuthUser>> getCurrentAdmin() async {
|
||||
try {
|
||||
DebugLogger.logApiRequest(url: '/auth/me', method: 'GET');
|
||||
|
||||
final response = await _apiClient.get('/auth/me');
|
||||
|
||||
DebugLogger.logApiResponse(
|
||||
url: '/auth/me',
|
||||
statusCode: response.statusCode,
|
||||
data: response.data,
|
||||
);
|
||||
|
||||
if (response.statusCode == 200 && response.data != null) {
|
||||
final responseData = response.data as Map<String, dynamic>;
|
||||
|
||||
// 응답 데이터 구조 검증
|
||||
DebugLogger.validateResponseStructure(
|
||||
responseData,
|
||||
['id', 'name', 'email'],
|
||||
responseName: 'CurrentAdmin',
|
||||
);
|
||||
|
||||
final authUser = DebugLogger.parseJsonWithLogging(
|
||||
responseData,
|
||||
AuthUser.fromJson,
|
||||
objectName: 'AuthUser',
|
||||
);
|
||||
|
||||
if (authUser != null) {
|
||||
DebugLogger.log(
|
||||
'getCurrentAdmin 성공',
|
||||
tag: 'API_SUCCESS',
|
||||
data: {
|
||||
'url': '/auth/me',
|
||||
'adminId': authUser.id,
|
||||
'adminEmail': authUser.email,
|
||||
'adminName': authUser.name,
|
||||
},
|
||||
);
|
||||
return Right(authUser);
|
||||
} else {
|
||||
return Left(ServerFailure(message: 'AuthUser 파싱 실패'));
|
||||
}
|
||||
} else {
|
||||
return Left(ServerFailure(
|
||||
message: response.statusMessage ?? '관리자 정보 조회 실패',
|
||||
));
|
||||
}
|
||||
} on DioException catch (e) {
|
||||
DebugLogger.logError(
|
||||
'getCurrentAdmin DioException',
|
||||
error: e,
|
||||
additionalData: {
|
||||
'type': e.type.toString(),
|
||||
'statusCode': e.response?.statusCode,
|
||||
},
|
||||
);
|
||||
|
||||
if (e.response?.statusCode == 401) {
|
||||
return Left(AuthenticationFailure(
|
||||
message: '인증이 필요합니다. 다시 로그인해주세요.',
|
||||
));
|
||||
}
|
||||
|
||||
return Left(ServerFailure(message: '관리자 정보 조회 중 오류가 발생했습니다.'));
|
||||
} catch (e, stackTrace) {
|
||||
DebugLogger.logError(
|
||||
'getCurrentAdmin 예상치 못한 예외',
|
||||
error: e,
|
||||
stackTrace: stackTrace,
|
||||
);
|
||||
return Left(ServerFailure(message: '관리자 정보 조회 중 오류가 발생했습니다.'));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Either<Failure, MessageResponse>> changePassword(ChangePasswordRequest request) async {
|
||||
try {
|
||||
DebugLogger.logApiRequest(url: '/auth/change-password', method: 'POST');
|
||||
|
||||
final response = await _apiClient.post(
|
||||
'/auth/change-password',
|
||||
data: request.toJson(),
|
||||
);
|
||||
|
||||
DebugLogger.logApiResponse(
|
||||
url: '/auth/change-password',
|
||||
statusCode: response.statusCode,
|
||||
data: response.data,
|
||||
);
|
||||
|
||||
if (response.statusCode == 200 && response.data != null) {
|
||||
final responseData = response.data as Map<String, dynamic>;
|
||||
|
||||
// 응답 데이터 구조 검증
|
||||
DebugLogger.validateResponseStructure(
|
||||
responseData,
|
||||
['message'],
|
||||
responseName: 'ChangePasswordResponse',
|
||||
);
|
||||
|
||||
final messageResponse = DebugLogger.parseJsonWithLogging(
|
||||
responseData,
|
||||
MessageResponse.fromJson,
|
||||
objectName: 'MessageResponse',
|
||||
);
|
||||
|
||||
if (messageResponse != null) {
|
||||
DebugLogger.log(
|
||||
'changePassword 성공',
|
||||
tag: 'API_SUCCESS',
|
||||
data: {
|
||||
'url': '/auth/change-password',
|
||||
'message': messageResponse.message,
|
||||
},
|
||||
);
|
||||
return Right(messageResponse);
|
||||
} else {
|
||||
return Left(ServerFailure(message: 'MessageResponse 파싱 실패'));
|
||||
}
|
||||
} else {
|
||||
return Left(ServerFailure(
|
||||
message: response.statusMessage ?? '비밀번호 변경 실패',
|
||||
));
|
||||
}
|
||||
} on DioException catch (e) {
|
||||
DebugLogger.logError(
|
||||
'changePassword DioException',
|
||||
error: e,
|
||||
additionalData: {
|
||||
'type': e.type.toString(),
|
||||
'statusCode': e.response?.statusCode,
|
||||
},
|
||||
);
|
||||
|
||||
if (e.response?.statusCode == 401) {
|
||||
return Left(AuthenticationFailure(
|
||||
message: '기존 비밀번호가 올바르지 않습니다.',
|
||||
));
|
||||
} else if (e.response?.statusCode == 400) {
|
||||
return Left(ValidationFailure(
|
||||
message: '비밀번호 형식이 올바르지 않습니다.',
|
||||
));
|
||||
}
|
||||
|
||||
return Left(ServerFailure(message: '비밀번호 변경 중 오류가 발생했습니다.'));
|
||||
} catch (e, stackTrace) {
|
||||
DebugLogger.logError(
|
||||
'changePassword 예상치 못한 예외',
|
||||
error: e,
|
||||
stackTrace: stackTrace,
|
||||
);
|
||||
return Left(ServerFailure(message: '비밀번호 변경 중 오류가 발생했습니다.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user