{"version":3,"file":"rpa_two_factor_auth_setting.ts-Dh3UbFhG.js","sources":["../../../../../app/javascript/components/templates/rpaTwoFactorAuthSetting/RpaTwoFactorAuthSettingForm.tsx","../../../../../app/javascript/components/templates/rpaTwoFactorAuthSetting/RpaTwoFactorAuthSettingCreateButton.tsx","../../../../../app/javascript/components/templates/rpaTwoFactorAuthSetting/RpaTwoFactorAuthSettingDropdown.tsx","../../../../../app/javascript/entries/reactEntries/rpa_two_factor_auth_setting.ts"],"sourcesContent":["import React from \"react\";\nimport style from \"./RpaTwoFactorAuthSetting.module.scss\";\nimport { RpaTwoFactorAuthSetting } from \"../../../types/types\";\nimport { DirectUpload } from \"@rails/activestorage\";\nimport axios from \"axios\";\nimport { useTranslation } from \"react-i18next\";\naxios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\ntype Props = {\n rpaTwoFactorAuthSetting: RpaTwoFactorAuthSetting;\n setRpaTwoFactorAuthSetting: (rpaTwoFactorAuthSetting: RpaTwoFactorAuthSetting) => void;\n client: {\n code: string;\n };\n codeResult: string;\n setCodeResult: (codeResult: string) => void;\n direct_uploads_url: string;\n qrCodeFilename: string;\n};\ninterface Blob {\n signed_id: string;\n}\n\nconst RpaTwoFactorAuthSettingForm = ({\n rpaTwoFactorAuthSetting,\n setRpaTwoFactorAuthSetting,\n client,\n codeResult,\n setCodeResult,\n direct_uploads_url,\n qrCodeFilename,\n}: Props) => {\n const { t } = useTranslation();\n\n const handleFileUpload = async (event: React.ChangeEvent) => {\n const file = event.target.files[0];\n if (!file) return;\n\n try {\n const imageBitmap = await createImageBitmap(file);\n const barcodeDetector = new BarcodeDetector({ formats: [\"qr_code\"] });\n\n const barcodes = await barcodeDetector.detect(imageBitmap);\n\n if (barcodes.length > 0) {\n const qrCodeData = barcodes[0].rawValue;\n const extractedParams = extractParamsFromQrCode(qrCodeData);\n if (extractedParams.secret) {\n const upload = new DirectUpload(file, direct_uploads_url);\n try {\n const blob = await createUploadPromise(upload);\n\n setRpaTwoFactorAuthSetting({\n ...rpaTwoFactorAuthSetting,\n secret_key: extractedParams.secret,\n digest: (extractedParams.algorithm || \"sha1\").toLowerCase(),\n digits: parseInt(extractedParams.digits) || 6,\n interval: parseInt(extractedParams.period) || 30,\n qr_code: blob.signed_id,\n errors: { ...rpaTwoFactorAuthSetting.errors, qr_code: [] },\n });\n } catch (error) {\n // 何もしない\n }\n } else {\n setRpaTwoFactorAuthSetting({\n ...rpaTwoFactorAuthSetting,\n errors: {\n ...rpaTwoFactorAuthSetting.errors,\n qr_code: [t(\"RpaTwoFactorAuthSetting.QRコードから2要素認証情報を取得できませんでした。\")],\n },\n });\n }\n } else {\n setRpaTwoFactorAuthSetting({\n ...rpaTwoFactorAuthSetting,\n errors: {\n ...rpaTwoFactorAuthSetting.errors,\n qr_code: [t(\"RpaTwoFactorAuthSetting.QRコードを検出できませんでした。\")],\n },\n });\n }\n } catch (error) {\n setRpaTwoFactorAuthSetting({\n ...rpaTwoFactorAuthSetting,\n errors: {\n ...rpaTwoFactorAuthSetting.errors,\n qr_code: [t(\"RpaTwoFactorAuthSetting.QRコードの読み取りに失敗しました。\")],\n },\n });\n }\n };\n\n const createUploadPromise = (upload: Upload): Promise => {\n return new Promise((resolve, reject) => {\n upload.create((error, blob) => {\n if (error) {\n reject(error);\n } else {\n resolve(blob);\n }\n });\n });\n };\n\n // Example QR code URL: otpauth://totp/[issuer]:[accountname]?secret=[secret]&issuer=[issuer]&algorithm=SHA1&digits=6&period=30\n const extractParamsFromQrCode = (qrCodeData) => {\n const url = new URL(qrCodeData);\n const params = {};\n for (const [key, value] of url.searchParams.entries()) {\n params[key] = value;\n }\n return params;\n };\n\n const testRpaTwoFactorAuthSetting = async () => {\n if (!rpaTwoFactorAuthSetting.secret_key) {\n setRpaTwoFactorAuthSetting({\n ...rpaTwoFactorAuthSetting,\n errors: {\n ...rpaTwoFactorAuthSetting.errors,\n qr_code: [t(\"RpaTwoFactorAuthSetting.QRコードをアップロードしてください。\")],\n },\n });\n return;\n }\n\n await axios\n .post(`/${client.code}/rpa_two_factor_auth_settings/test`, {\n rpa_two_factor_auth_setting: rpaTwoFactorAuthSetting,\n })\n .then((response) => {\n if (response.data.code) {\n setCodeResult(response.data.code);\n setRpaTwoFactorAuthSetting({ ...rpaTwoFactorAuthSetting, errors: response.data.errors });\n }\n })\n .catch((error) => {\n if (error.response.status === 422) {\n setRpaTwoFactorAuthSetting({ ...rpaTwoFactorAuthSetting, errors: error.response.data.errors });\n }\n });\n };\n\n return (\n <>\n
\n {t(\n \"RpaTwoFactorAuthSetting.2要素認証の設定時に表示されるQRコードをアップロードして、2要素認証時に必要なコードを生成します。\",\n )}\n
\n {t(\"RpaTwoFactorAuthSetting.QRコードをアップロードしたらテストをクリックしてください。\")}\n
\n {t(\n \"RpaTwoFactorAuthSetting.テストをクリック後に認証コードが表示されたら、保存するをクリックしてください。(Authentificator等のアプリと同じ数字が表示されていれば、正しく設定が完了しています)\",\n )}\n
\n
\n \n setRpaTwoFactorAuthSetting({ ...rpaTwoFactorAuthSetting, service_name: e.target.value })}\n />\n {rpaTwoFactorAuthSetting.errors?.service_name && (\n
{rpaTwoFactorAuthSetting.errors.service_name.join(\",\")}
\n )}\n
\n
\n <>\n
\n \n
\n 0\n ? \" is-invalid\"\n : \"\"\n }`}\n type=\"file\"\n name=\"rpa_two_factor_auth_setting[qr_code]\"\n id=\"rpa_two_factor_auth_setting_qr_code\"\n onChange={handleFileUpload}\n />\n {rpaTwoFactorAuthSetting.errors?.qr_code && (\n
{rpaTwoFactorAuthSetting.errors.qr_code.join(\",\")}
\n )}\n \n
\n
\n \n \n\n \n\n \n\n \n
\n\n \n {codeResult ? t(\"RpaTwoFactorAuthSetting.再テスト\") : t(\"RpaTwoFactorAuthSetting.テスト\")}\n \n {codeResult && (\n
\n
\n
\n
{t(\"RpaTwoFactorAuthSetting.認証コード\")}
\n
{codeResult}
\n
\n
\n
\n )}\n \n );\n};\n\nexport default RpaTwoFactorAuthSettingForm;\n","import React, { useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { RpaTwoFactorAuthSetting } from \"../../../types/types\";\nimport style from \"./RpaTwoFactorAuthSetting.module.scss\";\nimport useModal from \"../../../hooks/useModal\";\nimport RpaTwoFactorAuthSettingForm from \"./RpaTwoFactorAuthSettingForm\";\nimport axios from \"axios\";\nimport useLanguageChange from \"../../../hooks/useLanguageChange\";\naxios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\ntype Props = {\n locale: string;\n client: {\n id: number;\n code: string;\n };\n memberId: number;\n digestOptions: Array;\n direct_uploads_url: string;\n};\n\nconst RpaTwoFactorAuthSettingCreateButton = ({\n locale,\n client,\n memberId,\n digestOptions,\n direct_uploads_url,\n}: Props) => {\n const { t } = useLanguageChange(locale);\n const { modalRef, openModal, closeModal } = useModal();\n // https://www.notion.so/yoom-jp/2-6c81432a1ae14ee48531baac4ab51fe3 より各デフォルト値を決定している\n const [formData, setFormData] = useState({\n client_id: client.id,\n owner_id: memberId,\n service_name: \"\",\n secret_key: \"\",\n digest: digestOptions[0],\n digits: 6,\n interval: 30,\n });\n const [codeResult, setCodeResult] = useState(\"\");\n\n const createRpaTwoFactorAuthSetting = async () => {\n await axios\n .post(`/${client.code}/rpa_two_factor_auth_settings`, { rpa_two_factor_auth_setting: formData })\n .then((response) => {\n if (response.data.redirect_url) {\n window.location.href = response.data.redirect_url;\n }\n })\n .catch((error) => {\n if (error.response.status === 422) {\n setFormData({ ...formData, errors: error.response.data.errors });\n }\n });\n };\n\n return (\n
\n \n \n
\n {/* @ts-ignore */}\n \n \n {t(\"RpaTwoFactorAuthSettingCreateButton.2要素認証の設定\")}\n \n \n \n
\n \n
\n
\n \n \n \n {t(\"RpaTwoFactorAuthSettingCreateButton.追加\")}\n \n \n
\n
\n
\n );\n};\n\nexport default RpaTwoFactorAuthSettingCreateButton;\n","import React, { useState } from \"react\";\nimport { Modal, Dropdown } from \"react-bootstrap\";\nimport { RpaTwoFactorAuthSetting } from \"../../../types/types\";\nimport style from \"./RpaTwoFactorAuthSetting.module.scss\";\nimport useModal from \"../../../hooks/useModal\";\nimport RpaTwoFactorAuthSettingForm from \"./RpaTwoFactorAuthSettingForm\";\nimport axios from \"axios\";\nimport useLanguageChange from \"../../../hooks/useLanguageChange\";\naxios.defaults.headers.common[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\ntype Props = {\n locale: string;\n client: {\n id: number;\n code: string;\n };\n memberId: number;\n rpaTwoFactorAuthSetting: RpaTwoFactorAuthSetting;\n digestOptions: Array;\n direct_uploads_url: string;\n qrCodeFilename: string;\n};\n\ninterface CustomToggleProps {\n children: React.ReactNode;\n onClick: (event: React.MouseEvent) => void;\n}\n\nconst RpaTwoFactorAuthSettingDropdown = ({\n locale,\n client,\n memberId,\n rpaTwoFactorAuthSetting,\n digestOptions,\n direct_uploads_url,\n qrCodeFilename,\n}: Props) => {\n const { t } = useLanguageChange(locale);\n const { modalRef, openModal, closeModal } = useModal();\n const [formData, setFormData] = useState({\n id: rpaTwoFactorAuthSetting.id,\n client_id: client.id,\n owner_id: memberId,\n service_name: rpaTwoFactorAuthSetting.service_name,\n secret_key: rpaTwoFactorAuthSetting.secret_key,\n digest: rpaTwoFactorAuthSetting.digest,\n digits: rpaTwoFactorAuthSetting.digits,\n interval: rpaTwoFactorAuthSetting.interval,\n qr_code: rpaTwoFactorAuthSetting.qr_code,\n });\n const [codeResult, setCodeResult] = useState(\"\");\n\n const deleteRpaTwoFactorAuthSetting = async () => {\n await axios\n .delete(`/${client.code}/rpa_two_factor_auth_settings/${rpaTwoFactorAuthSetting.id}`)\n .then((response) => {\n window.location.href = response.data.redirect_url;\n });\n };\n\n const updateRpaTwoFactorAuthSetting = async () => {\n await axios\n .patch(`/${client.code}/rpa_two_factor_auth_settings/${rpaTwoFactorAuthSetting.id}`, {\n rpa_two_factor_auth_setting: formData,\n })\n .then((response) => {\n if (response.data.redirect_url) {\n window.location.href = response.data.redirect_url;\n }\n })\n .catch((error) => {\n if (error.response.status === 422) {\n setFormData({ ...formData, errors: error.response.data.errors });\n }\n });\n };\n\n const CustomToggle = React.forwardRef(({ children, onClick }, ref) => (\n {\n e.preventDefault();\n onClick(e);\n }}\n className=\"my-app-detail-menu\"\n >\n {children}\n \n ));\n\n return (\n
\n \n \n ・・・\n \n \n
\n \n {t(\"RpaTwoFactorAuthSettingDropdown.編集する\")}\n \n {\n if (window.confirm(t(\"RpaTwoFactorAuthSettingDropdown.本当に削除しますか?\"))) {\n deleteRpaTwoFactorAuthSetting();\n }\n }}\n className=\"yoom-text-error hover-white px-2\"\n >\n {t(\"RpaTwoFactorAuthSettingDropdown.削除する\")}\n \n
\n \n
\n \n
\n {/* @ts-ignore */}\n \n \n {t(\"RpaTwoFactorAuthSettingDropdown.2要素認証の設定を編集\")}\n \n \n \n
\n \n
\n
\n \n \n \n {t(\"RpaTwoFactorAuthSettingDropdown.更新\")}\n \n \n
\n
\n
\n );\n};\n\nexport default RpaTwoFactorAuthSettingDropdown;\n","import ReactOnRails from \"react-on-rails\";\nimport RpaTwoFactorAuthSettingCreateButton from \"../../components/templates/rpaTwoFactorAuthSetting/RpaTwoFactorAuthSettingCreateButton\";\nimport RpaTwoFactorAuthSettingDropdown from \"../../components/templates/rpaTwoFactorAuthSetting/RpaTwoFactorAuthSettingDropdown\";\nReactOnRails.register({\n RpaTwoFactorAuthSettingCreateButton,\n RpaTwoFactorAuthSettingDropdown,\n});\n"],"names":["axios","RpaTwoFactorAuthSettingForm","rpaTwoFactorAuthSetting","setRpaTwoFactorAuthSetting","client","codeResult","setCodeResult","direct_uploads_url","qrCodeFilename","t","useTranslation","handleFileUpload","event","file","imageBitmap","barcodes","qrCodeData","extractedParams","extractParamsFromQrCode","upload","DirectUpload","blob","createUploadPromise","resolve","reject","error","url","params","key","value","testRpaTwoFactorAuthSetting","response","jsxs","Fragment","jsx","_a","e","_b","_c","_d","style","RpaTwoFactorAuthSettingCreateButton","locale","memberId","digestOptions","useLanguageChange","modalRef","openModal","closeModal","useModal","formData","setFormData","useState","createRpaTwoFactorAuthSetting","Modal","RpaTwoFactorAuthSettingDropdown","deleteRpaTwoFactorAuthSetting","updateRpaTwoFactorAuthSetting","CustomToggle","React","children","onClick","ref","Dropdown","ReactOnRails"],"mappings":"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"}