spring:
  application:
    name: user-service

  datasource:
    url: jdbc:h2:mem:testdb;MODE=MYSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
    username: sa
    password: 
    driver-class-name: org.h2.Driver
    initialization-mode: always
#    schema: classpath:h2/schema.sql
    data: classpath:h2/data.sql
  jpa:
    hibernate:
      generate-ddl: true
      ddl-auto: create-drop
      dialect: org.hibernate.dialect.MySQL5Dialect
    properties:
      hibernate:
        format_sql: true
        default_batch_fetch_size: 1000
    show-sql: true
  h2:
    console:
      enabled: true
      path: /h2
  cache:
    jcache:
      config: classpath:ehcache.xml
  mail: # 비밀번호 변경 이메일 발송
    host: smtp.gmail.com # smtp host
    port: 587 # smtp port
    username: email_username # 계정
    password: 'email_password' # 비밀번호 - 구글 보안 2단계 인증 해제, 보안 수준이 낮은 앱의 액세스 허용(https://myaccount.google.com/lesssecureapps)
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
  security:
    # oauth2 를 사용하려면 아래 google, naver, kakao 의 client-id, client-secret 을 발급받아야 한다.
    oauth2:
      client:
        registration:
          # /oauth2/authorization/google
          google:
            client-id: google_client_id # TODO
            client-secret: google_client_secret # TODO
            scope: profile,email
          # 네이버는 Spring Security를 공식 지원하지 않기 때문에 CommonOAuth2Provider 에서 해주는 값들을 수동으로 입력한다.
          # /oauth2/authorization/naver
          naver:
            client-id: naver_client_id # TODO
            client-secret: naver_client_secret # TODO
            redirect_uri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
            authorization_grant_type: authorization_code
            scope: name,email,profile_image
            client-name: Naver
          # /oauth2/authorization/kakao
          kakao:
            client-id: kakao_client_id # TODO
            client-secret: kakao_client_secret # TODO
            redirect-uri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
            client-authentication-method: POST
            authorization-grant-type: authorization_code
            scope: profile_nickname, account_email
            client-name: Kakao
        provider:
          naver:
            authorization_uri: https://nid.naver.com/oauth2.0/authorize
            token_uri: https://nid.naver.com/oauth2.0/token
            user-info-uri: https://openapi.naver.com/v1/nid/me
            # 기준이 되는 user_name 의 이름을 네이버에서는 response로 지정해야한다. (네이버 회원 조회시 반환되는 JSON 형태 때문이다)
            # response를 user_name으로 지정하고 이후 자바 코드로 response의 id를 user_name으로 지정한다. (스프링 시큐리티에서 하위 필드를 명시할 수 없기 때문)
            user_name_attribute: response
          kakao:
            authorization_uri: https://kauth.kakao.com/oauth/authorize
            token_uri: https://kauth.kakao.com/oauth/token
            user-info-uri: https://kapi.kakao.com/v2/user/me
            user_name_attribute: id

  logging.level:
    org.hibernate.SQL: debug
    org.hibernate.type: trace

file:
  directory: ${user.home}/msa-attach-volume
messages:
  directory: ${file.directory}/messages

# jwt token
token:
  expiration_time: 7200000
  refresh_time: 86400000
  secret: egovframe_token_secret

# ftp server
ftp:
  enabled: false # ftp 사용 여부, FTP 서버에 최상위 디렉토리 자동 생성 및 구현체를 결정하게 된다.

# eureka 가 포함되면 eureka server 도 등록되므로 해제한다.
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
