목표: 2주~4주 내로 개발 가능한 소규모 그룹웨어 MVP 구축기능 범위: 회원관리, 팀 업무 관리, 사내 협업 플랫폼, GitHub 연동 포함기본 방침: 프론트엔드 미구성, 백엔드 중심 개발, 이후 확장 가능회원 등록, 조회, 수정, 삭제로그인/로그아웃역할 및 권한
그룹웨어 시스템 ERD 설계 개요 이 문서에서는 우리 그룹웨어 시스템의 데이터 구조를 ERD(Entity-Relationship Diagram) 형식으로 정리합니다. 지금까지 구상한 테이블과 관계를 기반으로 설계하여, 프로젝트의 핵심 데이터를 명확히 파악할 수 있도
일친 개발 세팅을 하며 queryDSL을 적용하는데엥! 이게뭐람 5.0.0 취약점 발견?그동안 써왔던 버전이기도 하고 오래동안 업데이트 된 기억이 없어 관련 자료를 찾아봤다.제미니가 말하길 이런 취약점이 발견되었다고 하는데? 아니 그러면 이거 쓰던 사람들은 어쩌고요??
현재 프로젝트는 sql 관련 세팅 (repo, querydsl 세팅등) 정도로 해두었다. 이번 포스팅에는 모든 리스폰스를 처리하는 dto를 통해 일관된 구조로 응답을 내려보도록 하겠다. 먼저 내가 원하는 형식의 dto를 하나 생성한다 /dto/Response.clas
이번 포스팅은 비즈니스 로직을 시작하기 전 마지막 단계로AOP를 통해 공통 에러를 처리해보는 시간을 가지겠다.먼저 AOP가 무엇인가 부터 간단하게 설명하자면 Aspect Oriented Programming, 우리나라 말로는 관점지향 프로그래밍 정도로 불린다그래서 이
이번 포스팅은 회원가입을 포스팅해보겠다먼저 이번 포스팅에 필요한 의존성이다인증 인가의 경우상대적으로 간단하고 순서상 회원가입이 되어야하기때문에 회원가입을 먼저 개발해보자비즈니스에 맞게 회원가입 dto를 작성해보자내 비즈니스에서는 받아야할 정보가 username(아이디로
이번 포스팅에서는 드디어 회원 인증/인가 부분인 로그인을 구현하도록 하겠다먼저 다른 일반적인 방식과는 특이하게 UserDetailsService를 상속받지않고 구현하는것으로 포스팅을 하겠다!우선 암호화 키를 하나 설정해준다.다만 이 암호화 키 또한 환경변수로 둬서 노출
이제 토큰 생성을 만들었으니 로그인 기능을 구현해보자이번 포스팅은 UserService 쪽에 로그인 메서드를 만드는 간단한 작업이다간단한 유효성 검사와 토큰 발급이 포함된 로그인 서비스 코드이다.jpa나 쿼리사용, resp와 같은건 본인에 맞게 잘 응용해서 만들어서 사
이번 포스팅에선 Spring security와 로그인을 합치기 위해첫번째로 필터를 개발하도록 하겠다.필터의 역할은 클라이언트가 요청할 때마다 헤더의 담긴 jwt 토큰을 읽어 유효성 검증을 통해 유효하다면 SecurityContext에 올려주고, 유효하지않다면 인증실패처
이제 security config 파일에서 필터체인을 걸며 해야하는 부분이다CORS, CSRF, 폼 로그인: 모두 비활성화로컬에서만 돌릴 서버기 때문에 전부 비활성화Stateless 모드로 세션 비활성화sessionManagement().sessionCreationPo
일반적으로 로그인한 사용자의 정보가 필요하면 컨트롤러에서를 인자로 받아 사용한다.근데 내가 실제로 사용해봤을 땐 번거롭기도하고 코드복잡도도 올라간다고 느껴서 편리하게 사용 가능한 어노테이션을 직접 만들어보겠다.우선 어노테이션 선언 파일을 하나 만들어준다그리고 이 어노테
※ 참고: 추가 설계 예정.
저번 포스팅에서 공통 반환 dto를 생성 할 때 제네릭 타입으로 선언해둬서 반환으로 원하는 모든 타입을 넣을 수 있다.그렇다면 입맛대로 새로 만든 리스폰스 클래스도 반환타입으로 지정이 가능하다는건데그 점에서 페이지네이션 기능이 담긴 dto를 만들어서 해당 기능이 필요할
이제 유저쪽 api를 만들시간이다.유저 api는| 엔드포인트 | 메서드 | 요청 데이터 | 응답 예시 | 설명 | 비고 |\|--------------\|---------\|--------------\|------------\|-------\|-------\|| /ap
Dto 단계에서 validation으로 걸 수도 있지만 그렇게 해버리면 유효성 검증이 dto에 너무 의존하여 dto를 재사용할 때 번거롭거나 새로 만들어야 할 수도 있을 것 같았다.그래서 유틸메서드로 하나 만들어서 사용하도록 해보겠다.이것이 null 값이나 빈칸에 대한
이제 dto별 유효성 검증을 하도록 하겠다.이전에 만든 메서드가 있긴있지만 해당 메서드는 여러번 dto가 재사용될 때 유효성 검증 항목이 상이할 때만 사용하고 일반적으론 편하게 Spring Validation을 쓰도록 하겠다.먼저 의존성을 받아준다build.gradle
깃헙에 등록된 repo의 정보를 등록해야할 차례가 왔다.그럴려면 깃허브의 api를 호출해야할 필요가 있고, repo를 등록할 때 유효성을 먼저 검증하도록 하겠다.주로 api를 스프링에서 호출할 때 사용하는 방식으로는주로 RestTemplate와 WebClinet를 이용