Commit Graph

120 Commits

Author SHA1 Message Date
179e5897bf fix: X-Service-Code 미들웨어 경로 제외 수정 (#59)'
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/60
2026-02-10 01:26:36 +00:00
SEAN
5d49a2ce49 feat: 이메일 중복 체크 API 구현 (#58)
POST /v1/in/auth/email/check 엔드포인트 추가.
기존 EmailExistsAsync 활용하여 이메일 사용 가능 여부 반환.
2026-02-10 10:23:25 +09:00
SEAN
f798b290ec fix: X-Service-Code 미들웨어 경로 제외 수정 (#59)
auth, account, public, service 경로를 X-Service-Code 검증 대상에서 제외.
device, message, push, stats, file 경로만 X-Service-Code 헤더 필요.
Swagger OperationFilter도 동일하게 수정.
2026-02-10 10:20:43 +09:00
94b0787bf8 feat: 회원가입 API 구현 (#56)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/57
2026-02-10 01:06:59 +00:00
SEAN
16550dbff3 feat: 회원가입 API 구현 (#56)
- POST /v1/in/auth/signup 엔드포인트 추가 (AllowAnonymous)
- SignupRequestDto/SignupResponseDto 생성
- AuthService.SignupAsync 구현 (이메일 중복검사, AdminCode 생성, BCrypt 해싱)
- ApiResponse<T>.Success(data, msg) 오버로드 추가
2026-02-10 10:04:58 +09:00
b5b015255e feat: 서비스 수정 API 구현 (#54)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/55
2026-02-10 00:57:44 +00:00
SEAN
e1bab0cce6 feat: 서비스 수정 API 구현 (#54) 2026-02-10 09:44:36 +09:00
de679f6f7e feat: 서비스 등록 API 구현 (#52)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/53
2026-02-10 00:41:50 +00:00
SEAN
21dc6e608c feat: 서비스 등록 API 구현 (#52) 2026-02-10 09:38:56 +09:00
9762052dd6 feat: IP 화이트리스트 관리 API 구현 (#50)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/51
2026-02-09 15:55:01 +00:00
c8a3d616c3 feat: IP 화이트리스트 관리 API 구현 (#50)
- IP 목록 조회, 추가, 삭제 API 구현
- IPv4 형식 검증 추가
- 중복 IP 체크 로직 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 00:52:41 +09:00
e335f762bd feat: APNs/FCM 키 등록 및 조회 API 구현 (#48)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/49
2026-02-09 15:33:07 +00:00
94e0b92780 feat: APNs/FCM 키 등록 및 조회 API 구현 (#48)
- APNs 키 등록 API (POST /v1/in/service/{serviceCode}/apns)
- FCM 키 등록 API (POST /v1/in/service/{serviceCode}/fcm)
- 키 정보 조회 API (POST /v1/in/service/{serviceCode}/credentials)
- AES-256 암호화로 민감 정보 저장
- 조회 시 메타 정보만 반환 (Private Key 미노출)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 00:28:47 +09:00
3b4b1873a3 feat: API Key 재발급 API 구현 (#46)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/47
2026-02-09 15:16:21 +00:00
4cb54e4c41 feat: API Key 재발급 API 구현 (#46)
- ApiKeyRefreshResponseDto 추가
- IServiceManagementService.RefreshApiKeyAsync 인터페이스 추가
- ServiceManagementService.RefreshApiKeyAsync 구현 (32~64자 랜덤 키 생성)
- ServiceController.RefreshApiKeyAsync 엔드포인트 추가
2026-02-10 00:13:16 +09:00
3d793c652b feat: 서비스 관리 API 구현 (#44)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/45
2026-02-09 15:04:05 +00:00
cac56761f4 feat: 서비스 관리 API 구현 (#44)
- ServiceController: 서비스 목록/상세/상태변경 엔드포인트
- ServiceManagementService: 비즈니스 로직 구현
- Service DTOs: 요청/응답 DTO 4종
- DI 등록

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 00:01:33 +09:00
b58662b520 feat: 운영자 계정 CRUD API 구현 (#42)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/43
2026-02-09 14:54:42 +00:00
b6939c0fa9 feat: 운영자 계정 CRUD API 구현 (#42)
- AccountController: 운영자 CRUD 엔드포인트 (create, list, detail, update, delete)
- AccountService: 비즈니스 로직 구현
- Account DTOs: 요청/응답 DTO 5종
- ErrorCodes: Forbidden 코드 추가
- DI 등록

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 23:51:04 +09:00
e0bf0adf70 feat: 관리자 비밀번호 변경 API 구현 (#40)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/41
2026-02-09 14:24:13 +00:00
9b9ca64b10 feat: 관리자 비밀번호 변경 API 구현 (#40)
- ChangePasswordRequestDto 추가
- IAuthService/AuthService에 ChangePasswordAsync 구현
- AuthController에 POST /v1/in/auth/password/change 엔드포인트 추가
- 현재 비밀번호 검증 및 BCrypt 해싱 적용

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 23:22:28 +09:00
5eb3635719 feat: 토큰 갱신 및 로그아웃 API 구현 (#38)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/39
2026-02-09 14:17:46 +00:00
336dcf8193 feat: 토큰 갱신 및 로그아웃 API 구현 (#38)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 23:08:29 +09:00
f037977102 feat: 관리자 로그인 API 구현 (#36)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/37
2026-02-09 13:53:43 +00:00
b11c8dc918 feat: 관리자 로그인 API 구현 (#36)
- LoginRequestDto, LoginResponseDto 추가
- IAuthService, AuthService 구현 (BCrypt 비밀번호 검증)
- AdminRepository 구현 (GetByEmailAsync)
- AuthController 추가 (POST /v1/in/auth/login)
- DI 등록 (IAuthService, IAdminRepository)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 22:16:25 +09:00
0ccef1e10f feat: Sandbox 모드 미들웨어 구현 (#34)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/35
2026-02-09 08:33:40 +00:00
SEAN
9185afd5e9 feat: Sandbox 모드 미들웨어 구현 (#34)
- SandboxMiddleware 추가: X-SPMS-TEST 헤더로 테스트 모드 감지
- HttpContext.Items["IsSandbox"] 플래그 설정
- 미들웨어 파이프라인 14번 위치에 등록

Closes #34
2026-02-09 17:32:04 +09:00
c49807c985 feat: X-Service-Code / X-API-KEY 서비스 식별 미들웨어 구현 (#32)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/33
2026-02-09 08:26:51 +00:00
SEAN
df8a8e2e5b feat: X-Service-Code / X-API-KEY 서비스 식별 미들웨어 구현 (#32)
- ServiceRepository: IServiceRepository 구현 (GetByServiceCode, GetByApiKey)
- ServiceCodeMiddleware: X-Service-Code 헤더 검증, DB 조회, 서비스 상태 확인
- ApiKeyMiddleware: /v1/in/device/* 경로 X-API-KEY 검증
- ApplicationBuilderExtensions: 미들웨어 파이프라인 12~13번 등록
- DependencyInjection: IServiceRepository DI 등록

Closes #32
2026-02-09 17:25:19 +09:00
4270e70f09 feat: API Rate Limiting 및 Swagger UI 구현 (#30)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/31
2026-02-09 08:13:30 +00:00
SEAN
58b94c6298 feat: API Rate Limiting 및 Swagger UI 구현 (#30)
- ASP.NET Core 내장 Rate Limiting (FixedWindow, IP 기반 분당 100회)
- 한도 초과 시 HTTP 429 + ApiResponse(에러코드 106) 반환
- Swashbuckle.AspNetCore 6.9.0 기반 Swagger UI 추가
- 도메인별 API 문서 그룹 (all, public, auth 등 10개)
- JWT Bearer 인증 UI (Authorize 버튼)
- X-Service-Code/X-API-KEY 커스텀 헤더 자동 표시 필터
- Microsoft.AspNetCore.OpenApi 제거 (Swashbuckle과 호환 충돌)

Closes #30
2026-02-09 17:11:46 +09:00
fb0da8669d feat: E2EE 암호화 유틸리티 구현 (#28)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/29
2026-02-09 07:36:55 +00:00
SEAN
27f33f809b feat: E2EE 암호화 유틸리티 구현 (#28)
- AesEncryption: AES-256-CBC 암호화/복호화
- RsaEncryption: RSA-2048 키 쌍 생성/암복호화
- E2EEService: 하이브리드 암복호화 (요청 복호화, 응답 암호화)
- TimestampValidator: 타임스탬프 검증 (±30초)
- SecureTransportAttribute: Action Filter (보안등급 3 엔드포인트용)
- DI 등록: IE2EEService → E2EEService (Singleton)

Closes #28
2026-02-09 16:33:38 +09:00
0070ae58b9 feat: DI 컨테이너 및 서비스 등록 구조화 (#26)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/27
2026-02-09 07:28:03 +00:00
SEAN
cd8270c5c0 feat: DI 컨테이너 및 서비스 등록 구조화 (#26)
- Infrastructure/DependencyInjection.cs: AddInfrastructure() 확장 메서드
- Application/DependencyInjection.cs: AddApplication() 확장 메서드
- API/Extensions/ApplicationBuilderExtensions.cs: UseMiddlewarePipeline() 확장 메서드
- Program.cs 정리 (DI/파이프라인 분리)

Closes #26
2026-02-09 16:25:44 +09:00
SEAN
3125726e2c fix: Development 환경에서 UseHttpsRedirection 비활성화 (#24)
All checks were successful
SPMS_API/pipeline/head This commit looks good
2026-02-09 15:33:56 +09:00
SEAN
65b4207f94 revert: Health Check GET 메서드 제거, POST만 유지 (#24)
All checks were successful
SPMS_API/pipeline/head This commit looks good
2026-02-09 15:28:04 +09:00
SEAN
9107726c3b fix: Health Check 엔드포인트에 GET 메서드 추가 (#24)
All checks were successful
SPMS_API/pipeline/head This commit looks good
2026-02-09 15:26:34 +09:00
3f439e4d4e feat: Health Check 엔드포인트 구현 (#24)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/25
2026-02-09 06:20:49 +00:00
SEAN
a9c944a27d feat: Health Check 엔드포인트 구현 (#24)
- PublicController 생성 (POST /v1/out/health)
- MariaDB 연결 확인 (SELECT 1)
- Redis, RabbitMQ 연결 확인 (Phase 2에서 구현 예정, not_configured 상태)
- 정상: HTTP 200 + ApiResponse.Success / 이상: HTTP 503 + 상세 상태
2026-02-09 15:17:45 +09:00
9bd39669f3 feat: Serilog 구조적 로깅 설정 (#22)
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/23
2026-02-09 06:13:10 +00:00
SEAN
d6b15c3cd8 feat: Serilog 구조적 로깅 설정 (#22)
- appsettings.json/Development.json에 Serilog 섹션 추가 (Console/File Sink, Rolling Daily)
- RequestIdMiddleware 구현 (X-Request-ID 헤더 발급/반환)
- Program.cs에 Serilog 호스트 빌더 + UseSerilogRequestLogging 등록
- 환경별 로그 레벨 분리 (Development: Debug, Production: Warning)
2026-02-09 15:10:17 +09:00
f3714ff8fb feat: JWT 인증 모듈 구현 (#20)
Some checks failed
SPMS_API/pipeline/head There was a failure building this commit
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/21
2026-02-09 06:05:11 +00:00
SEAN
2d30aaf212 feat: JWT 인증 모듈 구현 (#20)
- IJwtService 인터페이스 (Application Layer)
- JwtSettings POCO (Options Pattern)
- JwtService 구현 (Access Token 생성/검증, Refresh Token 생성)
- AddJwtAuthentication/AddAuthorizationPolicies 확장 메서드
- Program.cs에 인증/인가 미들웨어 등록 (파이프라인 순서 10~11번)
- NuGet: System.IdentityModel.Tokens.Jwt, Microsoft.AspNetCore.Authentication.JwtBearer
2026-02-09 14:59:36 +09:00
24e1ccbfef feat: Generic Repository 및 UnitOfWork 패턴 구현 (#18)
Some checks failed
SPMS_API/pipeline/head There was a failure building this commit
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/19
2026-02-09 05:47:19 +00:00
SEAN
787190f512 feat: Generic Repository 및 UnitOfWork 패턴 구현 (#18)
- IRepository<T> 구현체: CRUD, 페이징, 조건 검색 지원
- IUnitOfWork 구현체: 트랜잭션 관리 (Begin/Commit/Rollback)
- Program.cs에 DI 등록 (AddScoped)

Closes #18
2026-02-09 14:44:31 +09:00
3293c38360 feat: SpmsException 및 글로벌 예외 처리 미들웨어 구현 (#16)
Some checks failed
SPMS_API/pipeline/head There was a failure building this commit
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/17
2026-02-09 05:37:59 +00:00
SEAN
a9f6a436c4 feat: SpmsException 및 글로벌 예외 처리 미들웨어 구현 (#16) 2026-02-09 14:33:37 +09:00
f380b348a9 feat: ApiResponse<T> 공통 응답 포맷 구현 (#14)
Some checks failed
SPMS_API/pipeline/head There was a failure building this commit
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/15
2026-02-09 05:27:31 +00:00
SEAN
4f0a4b9bf9 feat: ApiResponse<T> 공통 응답 포맷 구현 (#14) 2026-02-09 13:57:37 +09:00