[{"data":1,"prerenderedAt":1286},["ShallowReactive",2],{"navigation":3,"\u002Fcomposables\u002Fuse-ensure-csrf":170,"\u002Fcomposables\u002Fuse-ensure-csrf-surround":1281},[4,18,43,75,103,120,134],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-simple-icons-laravel",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Sanctum","\u002Fsanctum","2.sanctum",[23,28,33,38],{"title":24,"path":25,"stem":26,"icon":27},"Configuration","\u002Fsanctum\u002Fconfiguration","2.sanctum\u002F1.configuration","i-lucide-cog",{"title":29,"path":30,"stem":31,"icon":32},"Cookie Authentication","\u002Fsanctum\u002Fcookie","2.sanctum\u002F2.cookie","i-lucide-cookie",{"title":34,"path":35,"stem":36,"icon":37},"Sanctum 2FA Flow","\u002Fsanctum\u002Ftwo-factor","2.sanctum\u002F3.two-factor","i-lucide-shield-check",{"title":39,"path":40,"stem":41,"icon":42},"Server Proxy","\u002Fsanctum\u002Fproxy","2.sanctum\u002F4.proxy","i-lucide-waypoints",{"title":44,"path":45,"stem":46,"children":47,"page":17},"Passport","\u002Fpassport","3.passport",[48,51,56,61,66,70],{"title":24,"path":49,"stem":50,"icon":27},"\u002Fpassport\u002Fconfiguration","3.passport\u002F1.configuration",{"title":52,"path":53,"stem":54,"icon":55},"Login & Logout","\u002Fpassport\u002Flogin-logout","3.passport\u002F2.login-logout","i-lucide-log-in",{"title":57,"path":58,"stem":59,"icon":60},"Token Management","\u002Fpassport\u002Ftokens","3.passport\u002F3.tokens","i-lucide-key",{"title":62,"path":63,"stem":64,"icon":65},"Two-Factor Authentication","\u002Fpassport\u002Ftwo-factor","3.passport\u002F4.two-factor","i-lucide-shield",{"title":67,"path":68,"stem":69,"icon":37},"Middleware & Route Protection","\u002Fpassport\u002Fmiddleware","3.passport\u002F5.middleware",{"title":71,"path":72,"stem":73,"icon":74},"Examples & Use Cases","\u002Fpassport\u002Fexamples","3.passport\u002F6.examples","i-lucide-code",{"title":76,"path":77,"stem":78,"children":79,"page":17},"Composables","\u002Fcomposables","4.composables",[80,84,89,94,99],{"title":76,"path":81,"stem":82,"icon":83},"\u002Fcomposables\u002Fcomposables","4.composables\u002F1.composables","i-lucide-code-2",{"title":85,"path":86,"stem":87,"icon":88},"$autx","\u002Fcomposables\u002Fautx","4.composables\u002F2.autx","i-lucide-globe",{"title":90,"path":91,"stem":92,"icon":93},"useAuthConfig","\u002Fcomposables\u002Fuse-auth-config","4.composables\u002F3.use-auth-config","i-lucide-settings",{"title":95,"path":96,"stem":97,"icon":98},"useAuthStore","\u002Fcomposables\u002Fuse-auth-store","4.composables\u002F4.use-auth-store","i-lucide-database",{"title":100,"path":101,"stem":102,"icon":37},"useEnsureCsrf","\u002Fcomposables\u002Fuse-ensure-csrf","4.composables\u002F5.use-ensure-csrf",{"title":104,"path":105,"stem":106,"children":107,"page":17},"Middleware","\u002Fmiddleware","5.middleware",[108,111,116],{"title":104,"path":109,"stem":110,"icon":37},"\u002Fmiddleware\u002Fmiddleware","5.middleware\u002F1.middleware",{"title":112,"path":113,"stem":114,"icon":115},"auth","\u002Fmiddleware\u002Fauth","5.middleware\u002F2.auth","i-lucide-lock",{"title":117,"path":118,"stem":119,"icon":65},"two-factor","\u002Fmiddleware\u002Ftwo-factor","5.middleware\u002F3.two-factor",{"title":121,"path":122,"stem":123,"children":124,"page":17},"Hooks","\u002Fhooks","6.hooks",[125,129],{"title":121,"path":126,"stem":127,"icon":128},"\u002Fhooks\u002Fhooks","6.hooks\u002F1.hooks","i-lucide-webhook",{"title":130,"path":131,"stem":132,"icon":133},"prepare:types","\u002Fhooks\u002Fprepare-types","6.hooks\u002F2.prepare-types","i-lucide-file-code",{"title":135,"path":136,"stem":137,"children":138,"page":17},"Advanced","\u002Fadvanced","7.advanced",[139,143,148,152,156,161,165],{"title":135,"path":140,"stem":141,"icon":142},"\u002Fadvanced\u002Fadvanced","7.advanced\u002F1.advanced","i-lucide-settings-2",{"title":144,"path":145,"stem":146,"icon":147},"Custom Configuration","\u002Fadvanced\u002Fcustom-configuration","7.advanced\u002F2.custom-configuration","i-lucide-sliders",{"title":149,"path":150,"stem":151,"icon":32},"Cookie Configuration","\u002Fadvanced\u002Fcookie-configuration","7.advanced\u002F3.cookie-configuration",{"title":153,"path":154,"stem":155,"icon":133},"TypeScript Integration","\u002Fadvanced\u002Ftypescript-integration","7.advanced\u002F4.typescript-integration",{"title":157,"path":158,"stem":159,"icon":160},"Module Aliases","\u002Fadvanced\u002Fmodule-aliases","7.advanced\u002F5.module-aliases","i-lucide-square-library",{"title":162,"path":163,"stem":164,"icon":37},"Security Features","\u002Fadvanced\u002Fsecurity-features","7.advanced\u002F6.security-features",{"title":166,"path":167,"stem":168,"icon":169},"Runtime Configuration","\u002Fadvanced\u002Fruntime-configuration","7.advanced\u002F7.runtime-configuration","i-lucide-server",{"id":171,"title":100,"body":172,"description":1274,"extension":1275,"links":1276,"meta":1277,"navigation":1278,"path":101,"seo":1279,"stem":102,"__hash__":1280},"docs\u002F4.composables\u002F5.use-ensure-csrf.md",{"type":173,"value":174,"toc":1255},"minimark",[175,182,187,217,220,262,266,269,296,300,305,319,323,442,446,478,482,550,554,707,711,715,721,769,773,776,815,819,822,842,846,852,863,866,883,887,1226,1230,1251],[176,177,178,181],"p",{},[179,180,100],"code",{}," is a composable that ensures a CSRF token is available for Sanctum authentication. It automatically fetches the CSRF token if it doesn't exist and synchronizes it with the auth headers.",[183,184,186],"h2",{"id":185},"usage","Usage",[188,189,194],"pre",{"className":190,"code":191,"language":192,"meta":193,"style":193},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await useEnsureCsrf();\n","typescript","",[179,195,196],{"__ignoreMap":193},[197,198,201,205,209,213],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"s7zQu","await",[197,206,208],{"class":207},"s2Zo4"," useEnsureCsrf",[197,210,212],{"class":211},"sTEyZ","()",[197,214,216],{"class":215},"sMK4o",";\n",[176,218,219],{},"Or with an explicit auth instance:",[188,221,223],{"className":190,"code":222,"language":192,"meta":193,"style":193},"const { $auth } = useNuxtApp();\nawait useEnsureCsrf($auth);\n",[179,224,225,250],{"__ignoreMap":193},[197,226,227,231,234,237,240,243,246,248],{"class":199,"line":200},[197,228,230],{"class":229},"spNyl","const",[197,232,233],{"class":215}," {",[197,235,236],{"class":211}," $auth ",[197,238,239],{"class":215},"}",[197,241,242],{"class":215}," =",[197,244,245],{"class":207}," useNuxtApp",[197,247,212],{"class":211},[197,249,216],{"class":215},[197,251,253,255,257,260],{"class":199,"line":252},2,[197,254,204],{"class":203},[197,256,208],{"class":207},[197,258,259],{"class":211},"($auth)",[197,261,216],{"class":215},[183,263,265],{"id":264},"behavior","Behavior",[176,267,268],{},"The composable follows this logic:",[270,271,272,284,290],"ol",{},[273,274,275,279,280,283],"li",{},[276,277,278],"strong",{},"Check for existing CSRF token",": Looks for the ",[179,281,282],{},"XSRF-TOKEN"," cookie",[273,285,286,289],{},[276,287,288],{},"If token exists",": Synchronizes it with the auth headers and returns",[273,291,292,295],{},[276,293,294],{},"If token doesn't exist",": Fetches a new CSRF token from the configured endpoint",[183,297,299],{"id":298},"examples","Examples",[301,302,304],"h3",{"id":303},"basic-usage","Basic Usage",[188,306,307],{"className":190,"code":191,"language":192,"meta":193,"style":193},[179,308,309],{"__ignoreMap":193},[197,310,311,313,315,317],{"class":199,"line":200},[197,312,204],{"class":203},[197,314,208],{"class":207},[197,316,212],{"class":211},[197,318,216],{"class":215},[301,320,322],{"id":321},"before-custom-request","Before Custom Request",[188,324,326],{"className":190,"code":325,"language":192,"meta":193,"style":193},"\u002F\u002F Ensure CSRF token before making a custom request\nawait useEnsureCsrf();\n\nconst data = await $fetch('\u002Fapi\u002Fcustom', {\n  method: 'POST',\n  body: { data: 'value' }\n});\n",[179,327,328,334,344,351,386,407,432],{"__ignoreMap":193},[197,329,330],{"class":199,"line":200},[197,331,333],{"class":332},"sHwdD","\u002F\u002F Ensure CSRF token before making a custom request\n",[197,335,336,338,340,342],{"class":199,"line":252},[197,337,204],{"class":203},[197,339,208],{"class":207},[197,341,212],{"class":211},[197,343,216],{"class":215},[197,345,347],{"class":199,"line":346},3,[197,348,350],{"emptyLinePlaceholder":349},true,"\n",[197,352,354,356,359,362,365,368,371,374,378,380,383],{"class":199,"line":353},4,[197,355,230],{"class":229},[197,357,358],{"class":211}," data ",[197,360,361],{"class":215},"=",[197,363,364],{"class":203}," await",[197,366,367],{"class":207}," $fetch",[197,369,370],{"class":211},"(",[197,372,373],{"class":215},"'",[197,375,377],{"class":376},"sfazB","\u002Fapi\u002Fcustom",[197,379,373],{"class":215},[197,381,382],{"class":215},",",[197,384,385],{"class":215}," {\n",[197,387,389,393,396,399,402,404],{"class":199,"line":388},5,[197,390,392],{"class":391},"swJcz","  method",[197,394,395],{"class":215},":",[197,397,398],{"class":215}," '",[197,400,401],{"class":376},"POST",[197,403,373],{"class":215},[197,405,406],{"class":215},",\n",[197,408,410,413,415,417,420,422,424,427,429],{"class":199,"line":409},6,[197,411,412],{"class":391},"  body",[197,414,395],{"class":215},[197,416,233],{"class":215},[197,418,419],{"class":391}," data",[197,421,395],{"class":215},[197,423,398],{"class":215},[197,425,426],{"class":376},"value",[197,428,373],{"class":215},[197,430,431],{"class":215}," }\n",[197,433,435,437,440],{"class":199,"line":434},7,[197,436,239],{"class":215},[197,438,439],{"class":211},")",[197,441,216],{"class":215},[301,443,445],{"id":444},"with-auth-instance","With Auth Instance",[188,447,448],{"className":190,"code":222,"language":192,"meta":193,"style":193},[179,449,450,468],{"__ignoreMap":193},[197,451,452,454,456,458,460,462,464,466],{"class":199,"line":200},[197,453,230],{"class":229},[197,455,233],{"class":215},[197,457,236],{"class":211},[197,459,239],{"class":215},[197,461,242],{"class":215},[197,463,245],{"class":207},[197,465,212],{"class":211},[197,467,216],{"class":215},[197,469,470,472,474,476],{"class":199,"line":252},[197,471,204],{"class":203},[197,473,208],{"class":207},[197,475,259],{"class":211},[197,477,216],{"class":215},[301,479,481],{"id":480},"in-component-setup","In Component Setup",[188,483,485],{"className":190,"code":484,"language":192,"meta":193,"style":193},"\u003Cscript setup>\nonMounted(async () => {\n  \u002F\u002F Ensure CSRF token when component mounts\n  await useEnsureCsrf();\n});\n\u003C\u002Fscript>\n",[179,486,487,498,516,521,532,540],{"__ignoreMap":193},[197,488,489,492,495],{"class":199,"line":200},[197,490,491],{"class":215},"\u003C",[197,493,494],{"class":211},"script setup",[197,496,497],{"class":215},">\n",[197,499,500,503,505,508,511,514],{"class":199,"line":252},[197,501,502],{"class":207},"onMounted",[197,504,370],{"class":211},[197,506,507],{"class":229},"async",[197,509,510],{"class":215}," ()",[197,512,513],{"class":229}," =>",[197,515,385],{"class":215},[197,517,518],{"class":199,"line":346},[197,519,520],{"class":332},"  \u002F\u002F Ensure CSRF token when component mounts\n",[197,522,523,526,528,530],{"class":199,"line":353},[197,524,525],{"class":203},"  await",[197,527,208],{"class":207},[197,529,212],{"class":391},[197,531,216],{"class":215},[197,533,534,536,538],{"class":199,"line":388},[197,535,239],{"class":215},[197,537,439],{"class":211},[197,539,216],{"class":215},[197,541,542,545,548],{"class":199,"line":409},[197,543,544],{"class":215},"\u003C\u002F",[197,546,547],{"class":211},"script",[197,549,497],{"class":215},[301,551,553],{"id":552},"before-form-submission","Before Form Submission",[188,555,557],{"className":190,"code":556,"language":192,"meta":193,"style":193},"const handleSubmit = async () => {\n  \u002F\u002F Ensure CSRF token before submitting form\n  await useEnsureCsrf();\n\n  const { $auth } = useNuxtApp();\n  await $auth.login({\n    strategy: 'client',\n    email: form.value.email,\n    password: form.value.password\n  });\n};\n",[179,558,559,577,582,592,596,617,634,650,672,691,701],{"__ignoreMap":193},[197,560,561,563,566,568,571,573,575],{"class":199,"line":200},[197,562,230],{"class":229},[197,564,565],{"class":211}," handleSubmit ",[197,567,361],{"class":215},[197,569,570],{"class":229}," async",[197,572,510],{"class":215},[197,574,513],{"class":229},[197,576,385],{"class":215},[197,578,579],{"class":199,"line":252},[197,580,581],{"class":332},"  \u002F\u002F Ensure CSRF token before submitting form\n",[197,583,584,586,588,590],{"class":199,"line":346},[197,585,525],{"class":203},[197,587,208],{"class":207},[197,589,212],{"class":391},[197,591,216],{"class":215},[197,593,594],{"class":199,"line":353},[197,595,350],{"emptyLinePlaceholder":349},[197,597,598,601,603,606,609,611,613,615],{"class":199,"line":388},[197,599,600],{"class":229},"  const",[197,602,233],{"class":215},[197,604,605],{"class":211}," $auth",[197,607,608],{"class":215}," }",[197,610,242],{"class":215},[197,612,245],{"class":207},[197,614,212],{"class":391},[197,616,216],{"class":215},[197,618,619,621,623,626,629,631],{"class":199,"line":409},[197,620,525],{"class":203},[197,622,605],{"class":211},[197,624,625],{"class":215},".",[197,627,628],{"class":207},"login",[197,630,370],{"class":391},[197,632,633],{"class":215},"{\n",[197,635,636,639,641,643,646,648],{"class":199,"line":434},[197,637,638],{"class":391},"    strategy",[197,640,395],{"class":215},[197,642,398],{"class":215},[197,644,645],{"class":376},"client",[197,647,373],{"class":215},[197,649,406],{"class":215},[197,651,653,656,658,661,663,665,667,670],{"class":199,"line":652},8,[197,654,655],{"class":391},"    email",[197,657,395],{"class":215},[197,659,660],{"class":211}," form",[197,662,625],{"class":215},[197,664,426],{"class":211},[197,666,625],{"class":215},[197,668,669],{"class":211},"email",[197,671,406],{"class":215},[197,673,675,678,680,682,684,686,688],{"class":199,"line":674},9,[197,676,677],{"class":391},"    password",[197,679,395],{"class":215},[197,681,660],{"class":211},[197,683,625],{"class":215},[197,685,426],{"class":211},[197,687,625],{"class":215},[197,689,690],{"class":211},"password\n",[197,692,694,697,699],{"class":199,"line":693},10,[197,695,696],{"class":215},"  }",[197,698,439],{"class":391},[197,700,216],{"class":215},[197,702,704],{"class":199,"line":703},11,[197,705,706],{"class":215},"};\n",[183,708,710],{"id":709},"how-it-works","How It Works",[301,712,714],{"id":713},"cookie-check","Cookie Check",[176,716,717,718,720],{},"The composable checks for the ",[179,719,282],{}," cookie:",[188,722,724],{"className":190,"code":723,"language":192,"meta":193,"style":193},"const xsrf = useCookie\u003Cstring | null>('XSRF-TOKEN').value;\n",[179,725,726],{"__ignoreMap":193},[197,727,728,730,733,735,738,740,744,747,750,753,755,757,759,761,763,765,767],{"class":199,"line":200},[197,729,230],{"class":229},[197,731,732],{"class":211}," xsrf ",[197,734,361],{"class":215},[197,736,737],{"class":207}," useCookie",[197,739,491],{"class":215},[197,741,743],{"class":742},"sBMFI","string",[197,745,746],{"class":215}," |",[197,748,749],{"class":742}," null",[197,751,752],{"class":215},">",[197,754,370],{"class":211},[197,756,373],{"class":215},[197,758,282],{"class":376},[197,760,373],{"class":215},[197,762,439],{"class":211},[197,764,625],{"class":215},[197,766,426],{"class":211},[197,768,216],{"class":215},[301,770,772],{"id":771},"header-synchronization","Header Synchronization",[176,774,775],{},"If the cookie exists, it decodes and sets the header:",[188,777,779],{"className":190,"code":778,"language":192,"meta":193,"style":193},"$auth.headers.set('X-XSRF-TOKEN', decodeURIComponent(xsrf));\n",[179,780,781],{"__ignoreMap":193},[197,782,783,786,788,791,793,796,798,800,803,805,807,810,813],{"class":199,"line":200},[197,784,785],{"class":211},"$auth",[197,787,625],{"class":215},[197,789,790],{"class":211},"headers",[197,792,625],{"class":215},[197,794,795],{"class":207},"set",[197,797,370],{"class":211},[197,799,373],{"class":215},[197,801,802],{"class":376},"X-XSRF-TOKEN",[197,804,373],{"class":215},[197,806,382],{"class":215},[197,808,809],{"class":207}," decodeURIComponent",[197,811,812],{"class":211},"(xsrf))",[197,814,216],{"class":215},[301,816,818],{"id":817},"token-fetching","Token Fetching",[176,820,821],{},"If the cookie doesn't exist, it calls the auth instance's CSRF method:",[188,823,825],{"className":190,"code":824,"language":192,"meta":193,"style":193},"await $auth.csrfToken();\n",[179,826,827],{"__ignoreMap":193},[197,828,829,831,833,835,838,840],{"class":199,"line":200},[197,830,204],{"class":203},[197,832,605],{"class":211},[197,834,625],{"class":215},[197,836,837],{"class":207},"csrfToken",[197,839,212],{"class":211},[197,841,216],{"class":215},[183,843,845],{"id":844},"when-to-use","When to Use",[176,847,848,849,851],{},"You typically don't need to call ",[179,850,100],{}," directly because:",[853,854,855,860],"ul",{},[273,856,857,859],{},[179,858,85],{}," automatically calls it for POST, PUT, PATCH, DELETE requests",[273,861,862],{},"The auth module's built-in methods handle it internally",[176,864,865],{},"However, you might need it when:",[853,867,868,877,880],{},[273,869,870,871,874,875],{},"Making custom requests with ",[179,872,873],{},"$fetch"," instead of ",[179,876,85],{},[273,878,879],{},"Implementing custom authentication flows",[273,881,882],{},"Debugging CSRF-related issues",[183,884,886],{"id":885},"complete-example","Complete Example",[188,888,890],{"className":190,"code":889,"language":192,"meta":193,"style":193},"\u003Cscript setup>\nconst { $auth } = useNuxtApp();\n\nconst customRequest = async () => {\n  \u002F\u002F Ensure CSRF token before custom request\n  await useEnsureCsrf($auth);\n\n  \u002F\u002F Make custom request\n  const response = await $fetch('\u002Fapi\u002Fcustom', {\n    method: 'POST',\n    headers: {\n      \u002F\u002F CSRF header is already set by useEnsureCsrf\n    },\n    body: {\n      data: 'value'\n    }\n  });\n\n  return response;\n};\n\nconst submitForm = async () => {\n  \u002F\u002F Ensure CSRF before form submission\n  await useEnsureCsrf($auth);\n\n  \u002F\u002F Submit form data\n  await $auth.login({\n    strategy: 'client',\n    email: 'user@example.com',\n    password: 'password'\n  });\n};\n\u003C\u002Fscript>\n",[179,891,892,900,918,922,939,944,958,962,967,992,1007,1016,1022,1028,1038,1053,1059,1068,1073,1083,1088,1093,1111,1117,1132,1137,1143,1158,1173,1189,1203,1212,1217],{"__ignoreMap":193},[197,893,894,896,898],{"class":199,"line":200},[197,895,491],{"class":215},[197,897,494],{"class":211},[197,899,497],{"class":215},[197,901,902,904,906,908,910,912,914,916],{"class":199,"line":252},[197,903,230],{"class":229},[197,905,233],{"class":215},[197,907,236],{"class":211},[197,909,239],{"class":215},[197,911,242],{"class":215},[197,913,245],{"class":207},[197,915,212],{"class":211},[197,917,216],{"class":215},[197,919,920],{"class":199,"line":346},[197,921,350],{"emptyLinePlaceholder":349},[197,923,924,926,929,931,933,935,937],{"class":199,"line":353},[197,925,230],{"class":229},[197,927,928],{"class":211}," customRequest ",[197,930,361],{"class":215},[197,932,570],{"class":229},[197,934,510],{"class":215},[197,936,513],{"class":229},[197,938,385],{"class":215},[197,940,941],{"class":199,"line":388},[197,942,943],{"class":332},"  \u002F\u002F Ensure CSRF token before custom request\n",[197,945,946,948,950,952,954,956],{"class":199,"line":409},[197,947,525],{"class":203},[197,949,208],{"class":207},[197,951,370],{"class":391},[197,953,785],{"class":211},[197,955,439],{"class":391},[197,957,216],{"class":215},[197,959,960],{"class":199,"line":434},[197,961,350],{"emptyLinePlaceholder":349},[197,963,964],{"class":199,"line":652},[197,965,966],{"class":332},"  \u002F\u002F Make custom request\n",[197,968,969,971,974,976,978,980,982,984,986,988,990],{"class":199,"line":674},[197,970,600],{"class":229},[197,972,973],{"class":211}," response",[197,975,242],{"class":215},[197,977,364],{"class":203},[197,979,367],{"class":207},[197,981,370],{"class":391},[197,983,373],{"class":215},[197,985,377],{"class":376},[197,987,373],{"class":215},[197,989,382],{"class":215},[197,991,385],{"class":215},[197,993,994,997,999,1001,1003,1005],{"class":199,"line":693},[197,995,996],{"class":391},"    method",[197,998,395],{"class":215},[197,1000,398],{"class":215},[197,1002,401],{"class":376},[197,1004,373],{"class":215},[197,1006,406],{"class":215},[197,1008,1009,1012,1014],{"class":199,"line":703},[197,1010,1011],{"class":391},"    headers",[197,1013,395],{"class":215},[197,1015,385],{"class":215},[197,1017,1019],{"class":199,"line":1018},12,[197,1020,1021],{"class":332},"      \u002F\u002F CSRF header is already set by useEnsureCsrf\n",[197,1023,1025],{"class":199,"line":1024},13,[197,1026,1027],{"class":215},"    },\n",[197,1029,1031,1034,1036],{"class":199,"line":1030},14,[197,1032,1033],{"class":391},"    body",[197,1035,395],{"class":215},[197,1037,385],{"class":215},[197,1039,1041,1044,1046,1048,1050],{"class":199,"line":1040},15,[197,1042,1043],{"class":391},"      data",[197,1045,395],{"class":215},[197,1047,398],{"class":215},[197,1049,426],{"class":376},[197,1051,1052],{"class":215},"'\n",[197,1054,1056],{"class":199,"line":1055},16,[197,1057,1058],{"class":215},"    }\n",[197,1060,1062,1064,1066],{"class":199,"line":1061},17,[197,1063,696],{"class":215},[197,1065,439],{"class":391},[197,1067,216],{"class":215},[197,1069,1071],{"class":199,"line":1070},18,[197,1072,350],{"emptyLinePlaceholder":349},[197,1074,1076,1079,1081],{"class":199,"line":1075},19,[197,1077,1078],{"class":203},"  return",[197,1080,973],{"class":211},[197,1082,216],{"class":215},[197,1084,1086],{"class":199,"line":1085},20,[197,1087,706],{"class":215},[197,1089,1091],{"class":199,"line":1090},21,[197,1092,350],{"emptyLinePlaceholder":349},[197,1094,1096,1098,1101,1103,1105,1107,1109],{"class":199,"line":1095},22,[197,1097,230],{"class":229},[197,1099,1100],{"class":211}," submitForm ",[197,1102,361],{"class":215},[197,1104,570],{"class":229},[197,1106,510],{"class":215},[197,1108,513],{"class":229},[197,1110,385],{"class":215},[197,1112,1114],{"class":199,"line":1113},23,[197,1115,1116],{"class":332},"  \u002F\u002F Ensure CSRF before form submission\n",[197,1118,1120,1122,1124,1126,1128,1130],{"class":199,"line":1119},24,[197,1121,525],{"class":203},[197,1123,208],{"class":207},[197,1125,370],{"class":391},[197,1127,785],{"class":211},[197,1129,439],{"class":391},[197,1131,216],{"class":215},[197,1133,1135],{"class":199,"line":1134},25,[197,1136,350],{"emptyLinePlaceholder":349},[197,1138,1140],{"class":199,"line":1139},26,[197,1141,1142],{"class":332},"  \u002F\u002F Submit form data\n",[197,1144,1146,1148,1150,1152,1154,1156],{"class":199,"line":1145},27,[197,1147,525],{"class":203},[197,1149,605],{"class":211},[197,1151,625],{"class":215},[197,1153,628],{"class":207},[197,1155,370],{"class":391},[197,1157,633],{"class":215},[197,1159,1161,1163,1165,1167,1169,1171],{"class":199,"line":1160},28,[197,1162,638],{"class":391},[197,1164,395],{"class":215},[197,1166,398],{"class":215},[197,1168,645],{"class":376},[197,1170,373],{"class":215},[197,1172,406],{"class":215},[197,1174,1176,1178,1180,1182,1185,1187],{"class":199,"line":1175},29,[197,1177,655],{"class":391},[197,1179,395],{"class":215},[197,1181,398],{"class":215},[197,1183,1184],{"class":376},"user@example.com",[197,1186,373],{"class":215},[197,1188,406],{"class":215},[197,1190,1192,1194,1196,1198,1201],{"class":199,"line":1191},30,[197,1193,677],{"class":391},[197,1195,395],{"class":215},[197,1197,398],{"class":215},[197,1199,1200],{"class":376},"password",[197,1202,1052],{"class":215},[197,1204,1206,1208,1210],{"class":199,"line":1205},31,[197,1207,696],{"class":215},[197,1209,439],{"class":391},[197,1211,216],{"class":215},[197,1213,1215],{"class":199,"line":1214},32,[197,1216,706],{"class":215},[197,1218,1220,1222,1224],{"class":199,"line":1219},33,[197,1221,544],{"class":215},[197,1223,547],{"class":211},[197,1225,497],{"class":215},[183,1227,1229],{"id":1228},"notes","Notes",[853,1231,1232,1235,1238,1248],{},[273,1233,1234],{},"This composable is specific to the Sanctum provider",[273,1236,1237],{},"It has no effect when using the Passport provider",[273,1239,1240,1241,1244,1245],{},"The CSRF endpoint is configured via the ",[179,1242,1243],{},"csrf"," option in ",[179,1246,1247],{},"nuxt.config.ts",[273,1249,1250],{},"The composable is async and should be awaited",[1252,1253,1254],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":193,"searchDepth":200,"depth":252,"links":1256},[1257,1258,1259,1266,1271,1272,1273],{"id":185,"depth":252,"text":186},{"id":264,"depth":252,"text":265},{"id":298,"depth":252,"text":299,"children":1260},[1261,1262,1263,1264,1265],{"id":303,"depth":346,"text":304},{"id":321,"depth":346,"text":322},{"id":444,"depth":346,"text":445},{"id":480,"depth":346,"text":481},{"id":552,"depth":346,"text":553},{"id":709,"depth":252,"text":710,"children":1267},[1268,1269,1270],{"id":713,"depth":346,"text":714},{"id":771,"depth":346,"text":772},{"id":817,"depth":346,"text":818},{"id":844,"depth":252,"text":845},{"id":885,"depth":252,"text":886},{"id":1228,"depth":252,"text":1229},"Ensure CSRF token is available for Sanctum requests","md",null,{},{"icon":37},{"title":100,"description":1274},"UFEaG2nWGHrL-QvrJ6qm2JLEBhrMbTBpFMv1gdBcJn8",[1282,1284],{"title":95,"path":96,"stem":97,"description":1283,"icon":98,"children":-1},"Access authentication state",{"title":104,"path":109,"stem":110,"description":1285,"icon":37,"children":-1},"Route middleware for protecting application routes in Nuxt Umbu",1785126614675]