- TIL -
구현 목표)
타임리프를 사용해서 간단하게 회원을 관리할 수 있는 백오피스 페이지를 구현하고 있는데 이때 관리자를 토큰 값을 기준으로 판별하는 코드가 추가되었다.
이 코드를 테스트하기 위해 미리 관리자를 생성할 필요가 있었고 서버 실행 시점에 초기화 작업을 위해 사용되는 @PostContruct 어노테이션을 활용해서 기본 admin 계정을 생성해보고자 했다.
구현 코드)
package com.randomchat.main.service;
import com.randomchat.main.domain.users.Users;
import com.randomchat.main.repository.users.UsersRepository;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class CreateDefaultAdmin {
private final BCryptPasswordEncoder bCryptPasswordEncoder;
private final UsersRepository usersRepository;
@PostConstruct
public void createDefaultAdmin() {
// 관리자 계정이 존재하는 경우 관리자 계정 생성을 패스
if(usersRepository.findByEmail("admin").isPresent()) return;
String email = "admin";
String password = bCryptPasswordEncoder.encode("admin");
String nickname = "admin";
Users user = new Users();
Users admin = user.createAdmin(email, password, nickname);
usersRepository.save(admin);
}
}
CreateDefaultAdmin.class 를 생성하여 컴포넌트로 선언
createDefaultAdmin() 메소드를 생성하여 @PostConstruct 어노테이션을 붙여줌으로써 CreateDefaultAdmin 빈이 초기화 되고 의존성 주입이 완료된 시점에 해당 메소드를 실행하게 설정
서버 실행 시 시작되는 코드이므로 admin 계정이 이미 존재하는 경우(서버를 재부팅하거나 재배포하는 과정) 관리자 계정을 생성하지 않고 넘어가게끔 if 문을 사용해서 관리
728x90
'TIL' 카테고리의 다른 글
[TIL] 2024.01.07 - Thymeleaf 를 사용해서 백오피스 구현해보기 1 ( 로그인 구현 ) (1) | 2025.01.07 |
---|---|
[TIL] 2024.12.30 - JDBC 드라이버 표준 시간대 설정 (0) | 2024.12.30 |
[TIL] 2024.12.26 - AuthenticationManager stackOverFlow 문제 해결(feat. 커밋로그) (1) | 2024.12.26 |
[TIL] 2024.12.25 - Nginx 를 사용해 React 세부 페이지 서빙하기 (2) | 2024.12.25 |
[TIL] 2024.12.24 - nginx 포트 충돌 오류 해결 (docker, docker compose 충돌) (1) | 2024.12.24 |