Skip to content

dinahland/spring-advanced

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📋 Todo Management API

개인 일정의 효율적인 관리를 도와주는 Spring Boot 기반의 REST API입니다. JWT 기반 인증, 실시간 날씨 정보 연동, 댓글 시스템, 담당자 배정 기능을 제공하며, Spring AOP를 적용한 관리자 접근 로깅 시스템을 핵심 기능으로 구현했습니다.


주요 기능

🔐 가입/로그인

  • 회원가입: 가입 시 USER, ADMIN 권한 구분 (POST /auth/signup)
  • 로그인: 이메일 & 비밀번호 입력 (POST /auth/signin)
  • 인증/인가: 회원가입 및 로그인 성공 시 JWT 토큰 발급

🙍‍♀️ 사용자 관리

  • 사용자 정보 조회: 사용자 ID, 이메일 조회 (GET /users/{userId})
  • 비밀번호 변경: 기존 비밀번호 확인 후 변경 (PUT /users)

📋 일정 관리

  • 일정 생성: 제목, 내용과 함께 당일 날씨 정보 자동 저장 (POST /todos)
  • 일정 목록 조회: 페이징을 사용한 일정 목록 조회 (GET /todos?page=1&size=10)
  • 특정 일정 조회: 지정된 일정 조회 (GET /todos/{todoId})

👥 담당자 시스템

  • 담당자 등록: 일정에 담당자 지정 등록 (POST /todos/{todoId}/managers)
  • 담당자 목록 조회: 일정에 배정된 담당자 목록 조회 (GET /todos/{todoId}/managers)
  • 담당자 삭제: 배정 담당자 삭제 (DELETE /todos/{todoId}/managers/{managerId})

💬 댓글 시스템

  • 댓글 작성: 일정에 댓글 작성 (POST /todos/{todoId}/comments)
  • 댓글 조회: 일정별 댓글 목록 조회 (GET /todos/{todoId}/comments)

👩‍💼 관리자 기능

  • 사용자 권한 변경: 지정 사용자 권한 변경 (PATCH /admin/users/{userId})
  • 댓글 삭제: 모든 댓글 삭제 권한 (DELETE /admin/comments/{commentId})
  • 관리자 접근 로깅: 관리자 권한이 필요한 API 접근 시 로그 기록 (AOP 적용)

인증 및 권한

JWT 토큰

  • 발급: 로그인/회원가입 시 자동 발급
  • 유효기간: 1시간
  • 헤더 형식: Authorization: Bearer {token}

권한 레벨

  • USER: 일반 사용자
  • ADMIN: 관리자

🔍 AOP 기반 관리자 접근 로깅 시스템

핵심 기능 개요

본 프로젝트의 핵심은 Spring AOP(Aspect-Oriented Programming)를 활용한 관리자 권한 접근 로깅 시스템입니다. @LogAdminAccess 커스텀 어노테이션이 적용된 관리자 전용 API 메서드에 접근 시 자동으로 로그를 기록합니다.

✨ 시스템 필요성

  • 보안 모니터링: 권한 남용이나 비정상적인 관리자 활동을 실시간으로 감지
  • 책임 추적성: 데이터 변경이나 삭제에 대한 명확한 책임 소재 파악

⚡ AOP 적용의 기술적 장점

  • 관심사 분리: 횡단 관심사(로깅)를 각각의 비즈니스 로직과 분리함으로써 단일 책임 원칙 준수
  • 코드 중복 제거: 단일 클래스가 로깅에 대한 로직을 집중 관리함으로써 불필요한 코드 중복 막음
  • 유지보수성 향상: 로깅 시스템 변경 또는 관리자 메서드 추가 시 코드 수정 최소화

로그 내용

  • 요청 ID: JWT 토큰에서 추출한 사용자 ID
  • 요청 시각: API 호출 타임스탬프
  • 요청 URL: API 호출 URL
  • 요청 본문: 요청 본문이 있는 경우 출력, 없는 경우 "요청 본문 없음"
  • 응답 본문: 메서드 실행 결과 데이터 출력, 없는 경우 "응답 본문 없음"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%