export const useAuthStore = defineStore('authStore', () => {
  const auth = ref({
    seq: '',          // 시퀀스
    id: '',          // 아이디   
    name: '',        // 이름
    email: '',        // 이메일
    companyName: '',  // 회사명
    phone: '',      // 전화번호
    companyId: '',        // 아이디
    accessToken: '',      // 토큰
    refreshToken: '',     // 갱신토큰   
  })

                              // 전체 조회
  const getCompanyId = computed(() => auth.value.companyId)             // 아이디 조회
  const getSeq = computed(() => auth.value.seq)             // 시퀀스 조회
  const getUserId = computed(() => auth.value.id)             // 아이디 조회
  const getUserName = computed(() => auth.value.name)             // 이름 조회
  const getUserEmail = computed(() => auth.value.email)             // 이메일 조회
  const getCompanyName = computed(() => auth.value.companyName)             // 회사명 조회
  const getUserPhone = computed(() => auth.value.phone)             // 관리자 핸드폰 조회
  const getAccessToken = computed(() => auth.value.accessToken)         // 토큰 조회
  const getRefreshToken = computed(() => auth.value.refreshToken)       // 리프레시토큰 조회
       // 점검공지

  function setAuth(payload){
    auth.value.companyId = payload.user.COMP_ID
    auth.value.seq = payload.user.SEQ
    auth.value.id = payload.user.ID
    auth.value.name = payload.user.NAME
    auth.value.email = payload.user.EMAIL
    auth.value.companyName = payload.user.COMP_NAME
    auth.value.phone = payload.user.PHONE
    auth.value.accessToken = payload.accessToken
    auth.value.refreshToken = payload.refreshToken    
  }

  function setAccessToken(token){
    auth.value.accessToken = token
  }
  
  function setRefreshToken(token){
    auth.value.refreshToken = token
  }


  // logout
  function setLogout(){
    auth.value.companyId = ''
    auth.value.accessToken = ''
    auth.value.refreshToken = ''    
    // Pinia persist가 사용하는 localStorage 키 삭제
    localStorage.removeItem('authStore');
  }

  return { auth, getCompanyId, getAccessToken, getRefreshToken, setAuth, setAccessToken, setRefreshToken, setLogout, getSeq, getUserId, getUserName, getUserEmail, getCompanyName, getUserPhone  }
}, {persist: { storage: persistedState.localStorage}})

