package kr.itn.itnhub.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @param displayName 업무메모·연락이력·보고서의 작성자로 찍히는 이름(요구사항 [22]).
 *                    예전에는 로그인 아이디(admin)가 그대로 찍혔다. 비워 두면 아이디를 쓴다.
 */
@ConfigurationProperties(prefix = "app.admin")
public record AdminProperties(String username, String password, String displayName) {

    /** 화면에 보일 이름. 설정이 없으면 로그인 아이디로 떨어진다. */
    public String displayNameOrUsername() {
        return (displayName == null || displayName.isBlank()) ? username : displayName;
    }

    // record 기본 toString()은 password를 그대로 노출한다. 로그에 실수로 찍혀도
    // 원문이 남지 않도록 마스킹한다.
    @Override
    public String toString() {
        return "AdminProperties[username=%s, password=****, displayName=%s]"
                .formatted(username, displayName);
    }
}
