{"ast":null,"code":"var _jsxFileName = \"C:\\\\LDT\\\\DSPM\\\\Client\\\\src\\\\contexts\\\\AuthContext.js\",\n  _s = $RefreshSig$();\nimport React, { createContext, useState, useEffect, useRef } from \"react\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport const AuthContext = /*#__PURE__*/createContext();\nconst AUTO_LOGOUT_MINUTES = 30; // 30분\nconst AUTO_LOGOUT_TIME = AUTO_LOGOUT_MINUTES * 60 * 1000;\nexport function AuthProvider({\n  children\n}) {\n  _s();\n  const [user, setUser] = useState(null);\n  const timerRef = useRef();\n\n  // 자동 로그아웃 타이머 리셋 함수\n  const resetTimer = () => {\n    if (timerRef.current) clearTimeout(timerRef.current);\n    if (user) {\n      timerRef.current = setTimeout(() => {\n        setUser(null);\n        localStorage.removeItem(\"user\");\n        alert(\"장시간 활동이 없어 자동 로그아웃되었습니다.\");\n      }, AUTO_LOGOUT_TIME);\n    }\n  };\n\n  // 이벤트 등록/해제 & 타이머 관리\n  useEffect(() => {\n    if (!user) return; // 로그인 상태에서만 동작\n    const events = [\"mousemove\", \"mousedown\", \"click\", \"keydown\", \"scroll\", \"touchstart\"];\n    events.forEach(event => window.addEventListener(event, resetTimer));\n    resetTimer(); // 처음 mount 시 타이머 시작\n\n    return () => {\n      if (timerRef.current) clearTimeout(timerRef.current);\n      events.forEach(event => window.removeEventListener(event, resetTimer));\n    };\n    // user가 변경될 때마다 리셋\n  }, [user]);\n  useEffect(() => {\n    const saved = localStorage.getItem('user');\n    if (saved) setUser(JSON.parse(saved));\n  }, []);\n  const login = user => {\n    setUser(user);\n    localStorage.setItem('user', JSON.stringify(user));\n  };\n  const logout = () => {\n    setUser(null);\n    localStorage.removeItem('user');\n    if (timerRef.current) clearTimeout(timerRef.current);\n  };\n  return /*#__PURE__*/_jsxDEV(AuthContext.Provider, {\n    value: {\n      user,\n      login,\n      logout\n    },\n    children: children\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 55,\n    columnNumber: 5\n  }, this);\n}\n_s(AuthProvider, \"iL+Aoa951gRQoS26QhQLr39DQ+0=\");\n_c = AuthProvider;\nvar _c;\n$RefreshReg$(_c, \"AuthProvider\");","map":{"version":3,"names":["React","createContext","useState","useEffect","useRef","jsxDEV","_jsxDEV","AuthContext","AUTO_LOGOUT_MINUTES","AUTO_LOGOUT_TIME","AuthProvider","children","_s","user","setUser","timerRef","resetTimer","current","clearTimeout","setTimeout","localStorage","removeItem","alert","events","forEach","event","window","addEventListener","removeEventListener","saved","getItem","JSON","parse","login","setItem","stringify","logout","Provider","value","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["C:/LDT/DSPM/Client/src/contexts/AuthContext.js"],"sourcesContent":["import React, { createContext, useState, useEffect, useRef } from \"react\";\r\n\r\nexport const AuthContext = createContext();\r\n\r\nconst AUTO_LOGOUT_MINUTES = 30; // 30분\r\nconst AUTO_LOGOUT_TIME = AUTO_LOGOUT_MINUTES * 60 * 1000;\r\n\r\nexport function AuthProvider({ children }) {\r\n  const [user, setUser] = useState(null);\r\n  const timerRef = useRef();\r\n\r\n  // 자동 로그아웃 타이머 리셋 함수\r\n  const resetTimer = () => {\r\n    if (timerRef.current) clearTimeout(timerRef.current);\r\n    if (user) {\r\n      timerRef.current = setTimeout(() => {\r\n        setUser(null);\r\n        localStorage.removeItem(\"user\");\r\n        alert(\"장시간 활동이 없어 자동 로그아웃되었습니다.\");\r\n      }, AUTO_LOGOUT_TIME);\r\n    }\r\n  };\r\n\r\n  // 이벤트 등록/해제 & 타이머 관리\r\n  useEffect(() => {\r\n    if (!user) return; // 로그인 상태에서만 동작\r\n    const events = [\"mousemove\", \"mousedown\", \"click\", \"keydown\", \"scroll\", \"touchstart\"];\r\n    events.forEach(event => window.addEventListener(event, resetTimer));\r\n    resetTimer(); // 처음 mount 시 타이머 시작\r\n\r\n    return () => {\r\n      if (timerRef.current) clearTimeout(timerRef.current);\r\n      events.forEach(event => window.removeEventListener(event, resetTimer));\r\n    };\r\n    // user가 변경될 때마다 리셋\r\n  }, [user]);\r\n\r\n  useEffect(() => {\r\n    const saved = localStorage.getItem('user');\r\n    if (saved) setUser(JSON.parse(saved));\r\n  }, []);\r\n\r\n  const login = (user) => {\r\n    setUser(user);\r\n    localStorage.setItem('user', JSON.stringify(user));\r\n  };\r\n\r\n  const logout = () => {\r\n    setUser(null);\r\n    localStorage.removeItem('user');\r\n    if (timerRef.current) clearTimeout(timerRef.current);\r\n  };\r\n\r\n  return (\r\n    <AuthContext.Provider value={{ user, login, logout }}>\r\n      {children}\r\n    </AuthContext.Provider>\r\n  );\r\n}"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAAC,SAAAC,MAAA,IAAAC,OAAA;AAE1E,OAAO,MAAMC,WAAW,gBAAGN,aAAa,CAAC,CAAC;AAE1C,MAAMO,mBAAmB,GAAG,EAAE,CAAC,CAAC;AAChC,MAAMC,gBAAgB,GAAGD,mBAAmB,GAAG,EAAE,GAAG,IAAI;AAExD,OAAO,SAASE,YAAYA,CAAC;EAAEC;AAAS,CAAC,EAAE;EAAAC,EAAA;EACzC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGZ,QAAQ,CAAC,IAAI,CAAC;EACtC,MAAMa,QAAQ,GAAGX,MAAM,CAAC,CAAC;;EAEzB;EACA,MAAMY,UAAU,GAAGA,CAAA,KAAM;IACvB,IAAID,QAAQ,CAACE,OAAO,EAAEC,YAAY,CAACH,QAAQ,CAACE,OAAO,CAAC;IACpD,IAAIJ,IAAI,EAAE;MACRE,QAAQ,CAACE,OAAO,GAAGE,UAAU,CAAC,MAAM;QAClCL,OAAO,CAAC,IAAI,CAAC;QACbM,YAAY,CAACC,UAAU,CAAC,MAAM,CAAC;QAC/BC,KAAK,CAAC,0BAA0B,CAAC;MACnC,CAAC,EAAEb,gBAAgB,CAAC;IACtB;EACF,CAAC;;EAED;EACAN,SAAS,CAAC,MAAM;IACd,IAAI,CAACU,IAAI,EAAE,OAAO,CAAC;IACnB,MAAMU,MAAM,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;IACrFA,MAAM,CAACC,OAAO,CAACC,KAAK,IAAIC,MAAM,CAACC,gBAAgB,CAACF,KAAK,EAAET,UAAU,CAAC,CAAC;IACnEA,UAAU,CAAC,CAAC,CAAC,CAAC;;IAEd,OAAO,MAAM;MACX,IAAID,QAAQ,CAACE,OAAO,EAAEC,YAAY,CAACH,QAAQ,CAACE,OAAO,CAAC;MACpDM,MAAM,CAACC,OAAO,CAACC,KAAK,IAAIC,MAAM,CAACE,mBAAmB,CAACH,KAAK,EAAET,UAAU,CAAC,CAAC;IACxE,CAAC;IACD;EACF,CAAC,EAAE,CAACH,IAAI,CAAC,CAAC;EAEVV,SAAS,CAAC,MAAM;IACd,MAAM0B,KAAK,GAAGT,YAAY,CAACU,OAAO,CAAC,MAAM,CAAC;IAC1C,IAAID,KAAK,EAAEf,OAAO,CAACiB,IAAI,CAACC,KAAK,CAACH,KAAK,CAAC,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,KAAK,GAAIpB,IAAI,IAAK;IACtBC,OAAO,CAACD,IAAI,CAAC;IACbO,YAAY,CAACc,OAAO,CAAC,MAAM,EAAEH,IAAI,CAACI,SAAS,CAACtB,IAAI,CAAC,CAAC;EACpD,CAAC;EAED,MAAMuB,MAAM,GAAGA,CAAA,KAAM;IACnBtB,OAAO,CAAC,IAAI,CAAC;IACbM,YAAY,CAACC,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAIN,QAAQ,CAACE,OAAO,EAAEC,YAAY,CAACH,QAAQ,CAACE,OAAO,CAAC;EACtD,CAAC;EAED,oBACEX,OAAA,CAACC,WAAW,CAAC8B,QAAQ;IAACC,KAAK,EAAE;MAAEzB,IAAI;MAAEoB,KAAK;MAAEG;IAAO,CAAE;IAAAzB,QAAA,EAClDA;EAAQ;IAAA4B,QAAA,EAAAC,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OACW,CAAC;AAE3B;AAAC9B,EAAA,CAnDeF,YAAY;AAAAiC,EAAA,GAAZjC,YAAY;AAAA,IAAAiC,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}