1 2<!DOCTYPE html> 3<html> 4<head> 5 <!-- Ver 2.0 --> 6 <title>ë¡ê·¸ì¸</title> 7 <link rel="apple-touch-icon" href="/images/eventus-icon_iphone.png?220325"> 8 9 10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 11 <meta name="format-detection" content="telephone=no" /> 12 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"> 13 <meta name="naver-site-verification" content="6abb99506d19b79d2c3fe7bfb92cafc4c17f40e4" /> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 15 <meta name="msapplication-tap-highlight" content="no"> 16 <meta name="description" content="ë´ê° ìíë íì¬ë¥¼ ê°ìµíê±°ë, ì°¸ì¬í ì ìë íë«í¼ - ì´ë²¤í°ì¤"> 17 <meta name="keywords" content="íì¬ëª¨ì§,íì¬ íë«í¼,모ì íë«í¼, íì¬ì´ì,모ì,ì´ë²¤í¸,íì´ë¸ë¦¬ë ì´ë²¤í¸, ì¶ì² íì¬, ì¨ë¼ì¸ íì¬, ì¨ë¹ë"> 18 19 <meta property="og:type" content="website"> 20 <meta property="og:title" content="ë¡ê·¸ì¸" /> 21 <meta property="og:description" content="ë´ê° ìíë íì¬ë¥¼ ê°ìµíê±°ë, ì°¸ì¬í ì ìë íë«í¼ - ì´ë²¤í°ì¤"> 22 <meta property="og:image" content="https://event-us.kr/images/eventus_thumbnail2.jpg?fit=640%2C360" /> 23 <meta property="og:image:secure_url" content="https://event-us.kr/images/eventus_thumbnail2.jpg?fit=640%2C360" /> 24 <meta property="og:image:width" content="1000" /> 25 <meta property="og:image:height" content="343" /> 26 <meta property="og:url" content="https://event-us.kr/"> 27 28 <meta property="fb:app_id" content="136314230510204" /> 29 30 <link rel="canonical" href="https://event-us.kr/account/login"> 31 <!-- GrowthFit Google Tag Manager --> 32 <meta name="naver-site-verification" content="3704d95cf4764b65ca1cfea40f2d1af2d21572f2" /> 33 <meta name="google-site-verification" content="vpzujpK-hobMlPNOk1yRN5aj31iVrls2qq-r9sAQtS0" /> 34
34<script>
vendor: 495 bytes, lines 34-42
34 35 (function (w, d, s, l, i) { 36 w[l] = w[l] || []; w[l].push({ 37 'gtm.start': 38 new Date().getTime(), event: 'gtm.js' 39 }); var f = d.getElementsByTagName(s)[0], 40 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 41 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 42 })(window, document, 'script', 'dataLayer', '
42GTM-WXXCN9W
vendor: 3 bytes, line 42
42');
42</script>
42 43 <!-- End GrowthFit Google Tag Manager --> 44
44<script type="text/javascript" charset="UTF-8" src="//t1.daumcdn.net/adfit/static/kp.js"></script>
44 45
45<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.6.8/axios.min.js"></script>
45 46 47 <!-- Nachocode SDK ì´ê¸°í í¨ì를 먼ì ì ì --> 48
48<script> 49 (async () => { 50 if (window.Nachocode) { 51 try { 52 await Nachocode.initAsync('CoJZITgcvIxPdPNaAriQ', { logger: true }); 53 /*await Nachocode.initAsync('EsOxDvKpXITLAEBWHWYh', { logger: true });*/ 54 55 if (Nachocode.env.isApp()) { 56 // ì± íê²½ììë§ ëìí ë¡ì§ì ìì±í©ëë¤. 57 } 58 } catch (error) { 59 console.error('nachocode Client SDK ì´ê¸°í ì¤í¨:', error); 60 } 61 } else { 62 console.error('nachocode Client SDKê° ë¡ëëì§ ìììµëë¤.'); 63 } 64 })(); 65 </script>
65 66 67 <!-- CDN ë¡ë --> 68
68<script src="https://cdn.nachocode.io/nachocode/client-sdk/@latest/client-sdk.min.js"></script>
68 69 70 71 72 </script>
72 73 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 73 bytes, lines 73-74
73 74 <script async src="https://www.googletagmanager.com/gtag/js?id=
74UA-75736254-1
vendor: 21 bytes, lines 74-75
74"></script> 75
75<script> 76 if (typeof kakaoPixel !== 'undefined') { 77 kakaoPixel('4997877247864322440').pageView(); 78 }
vendor: 529 bytes, lines 78-87
78 79 80 (function (w, d, s, l, i) { 81 w[l] = w[l] || []; w[l].push({ 82 'gtm.start': 83 new Date().getTime(), event: 'gtm.js' 84 }); var f = d.getElementsByTagName(s)[0], 85 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 86 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 87 })(window, document, 'script', 'dataLayer', '
87GTM-PDVW6RC
vendor: 19 bytes, lines 87-89
87'); 88 89
vendor: 171 bytes, lines 89-93
89window.dataLayer = window.dataLayer || []; 90 function gtag() { dataLayer.push(arguments); } 91 gtag('js', new Date()); 92 93 gtag('config', '
93UA-75736254-1
vendor: 13 bytes, lines 93-94
93'); 94
94</script>
94 95
95<script src="/contents/js/log.es5.min.js" defer></script>
vendor: 71 bytes, lines 95-97
95 96 97 <script async src="https://www.googletagmanager.com/gtag/js?id=
97G-Z3JJ3P1SEG
vendor: 17 bytes, lines 97-98
97"></script> 98
98<script> 99
vendor: 157 bytes, lines 99-102
99window.dataLayer = window.dataLayer || []; 100 function gtag() { dataLayer.push(arguments); } 101 gtag('js', new Date()); 102 gtag('config', '
102G-Z3JJ3P1SEG
vendor: 189 bytes, lines 102-105
102', { 103 'user_id': 'l2dX0YoAjO4EYEQNmfSB7q-wV69zQrH1H1-8jjV4gpSuOJQzB58MczQGB9s44vE7hoQFA2aVJ3Okw8UMZq3zzh-V62wHb-nn84R44sg4qarv3KkSfSAJx5d49_DIEf3K6Vd9Gg2' 104 }); 105
105gtag('set', 'user_properties', { 106 'crm_id': 'l2dX0YoAjO4EYEQNmfSB7q-wV69zQrH1H1-8jjV4gpSuOJQzB58MczQGB9s44vE7hoQFA2aVJ3Okw8UMZq3zzh-V62wHb-nn84R44sg4qarv3KkSfSAJx5d49_DIEf3K6Vd9Gg2' 107 }); 108 </script>
108 109
109<script> 110 (function () { 111 'use strict'; 112 113 var color = { 114 brown: "color:#560000;font-size:11px;", 115 red: "color:#d83128;font-size:11px;", 116 yellow: "color:#ea991b;font-size:11px;", 117 green: "color:#93ba2f;font-size:11px;", 118 blue: "color:#4da4e0;font-size:11px;", 119 purple: [ 120 "color:#1d4ed8;font-size:11px;", 121 "color:#4338ca;font-size:11px;", 122 "color:#6d28d9;font-size:11px;", 123 "color:#5b21b6;font-size:11px;", 124 "color:#6b21a8;font-size:11px;", 125 "color:#581c87;font-size:11px;", 126 "color:#4c1d95;font-size:13px;", 127 ], 128 }; 129 130 if (typeof console === "object" && console.log && typeof console.log === "function") { 131 const msg = "%c _____ _ \ 132 \n%c| ___| | | \ 133 \n%c| |__ __ __ ___ _ __ | |_ ______ _ _ ___ \ 134 \n%c| __| \\ \\ / / / _ \\| '_ \\ | __||______|| | | |/ __|\ 135 \n%c| |___ \\ V / | __/| | | || |_ | |_| |\\__ \\ \ 136 \n%c|____/ \\_/ \\___||_| |_| \\__| \\__,_||___/ \ 137 \n%c íì¬ì í¨ê» íë 모ë ìê° ì´ë²¤í°ì¤\n"; 138 if (isUA('chrome') && !isUA('edge')) { 139 console.log( 140 msg, 141 color.purple[0], 142 color.purple[1], 143 color.purple[2], 144 color.purple[3], 145 color.purple[4], 146 color.purple[5], 147 color.purple[6], 148 ); 149 } else { 150 console.log(msg.replaceAll("%c", "")); 151 } 152 console.log("\x3e \x3e \x3e https://event-us.workfit.info/\n") 153 } 154 155 function isUA(userAgent) { 156 return navigator.userAgent.toLowerCase().indexOf(userAgent) > -1; 157 } 158 fetch(`/home/inflowsessionsave?referrer=${encodeURIComponent(document.referrer)}`) 159 .catch(error => console.error('Error:', error)); 160 })(); 161 </script>
161 162
162<script type="text/javascript"> 163 (function (w, d, a) { 164 w.__beusablerumclient__ = { 165 load: function (src) { 166 var b = d.createElement("script"); 167 b.src = src; b.async = true; b.type = "text/javascript"; 168 d.getElementsByTagName("head")[0].appendChild(b); 169 } 170 }; w.__beusablerumclient__.load(a + "?url=" + encodeURIComponent(d.URL)); 171 })(window, document, "//rum.beusable.net/load/b190312e135117u861"); 172 </script>
172 173
173<script src="/Content/dist/js/preload.js?651080f95fcecbb1"></script>
173<style>body { 174 opacity: 0; 175 } 176 177 body[loaded] { 178 opacity: 1; 179 }</style>
179<script>function docReady(e) { 180 'complete' === document.readyState || 'interactive' === document.readyState 181 ? setTimeout(e, 1) 182 : document.addEventListener('DOMContentLoaded', e); 183 } 184 docReady(() => { 185 document.querySelector('body').setAttribute('loaded', ''); 186 });</script>
186 187
187<script defer="defer" src="/Content/dist/js/chunk-vendors.js?651080f95fcecbb1"></script>
187<script defer="defer" src="/Content/dist/js/default.js?651080f95fcecbb1"></script>
187<link href="/Content/dist/css/default.css?651080f95fcecbb1" rel="stylesheet"> 188 189 <style> 190 #google_translate_element * { 191 font-family: 'Spoqa Han Sans Neo', sans-serif; 192 margin: 0; 193 padding: 0; 194 } 195 196 .goog-te-gadget-simple { 197 background: transparent; 198 border: none; 199 white-space: nowrap; 200 } 201 202 .skiptranslate { 203 display: none !important; 204 } 205 </style> 206 207
207<script> 208 const asp = { 209 user: { 210 get isAuthenticated() { 211 return false; 212 }, 213 get name() { 214 return ''; 215 }, 216 get email() { 217 return ''; 218 }, 219 get encodedRawUrl() { 220 return '%2faccount%2flogin%3fReturnUrl%3d%252Fmypage%252FFavoriteEvent'; 221 }, 222 }, 223 get blobUrl(){ 224 return 'https://eventusstorage.blob.core.windows.net/evs' 225 }, 226 }; 227 </script>
227 228 229
229<script type="application/ld+json"> 230 231 { 232 "@context": "http://schema.org", 233 "@type": "Organization", 234 "name": "ì´ë²¤í°ì¤(Event-us)", 235 "url": "https://event-us.kr", 236 "logo": "https://event-us.kr/Content/neweventus/Image/eventus_logo.png", 237 "description": "ì´ë²¤í°ì¤(Event-us)ë íì¬ ì´ì, ì ì², ì°¸ê°ì ê´ë¦¬ ë° B2B 리ë ì ëë ì´ì ì ì§ìíë ì¬ì¸ì ì´ë²¤í¸ íë«í¼ì ëë¤. 2014ë ë¶í° 11ë ê° êµë´ ì´ë²¤í¸ íë«í¼ ì ê³ë¥¼ ì ëíë©° ì¶ì ë ì 문ì±ì¼ë¡ ì 뢰ë°ë ìë¹ì¤ë¥¼ ì ê³µí©ëë¤.", 238 "foundingDate":"2014-09-05", 239 "sameAs": [ 240 "https://www.facebook.com/eventus.korea", 241 "https://www.linkedin.com/company/event-us/", 242 "https://www.instagram.com/event.with.us/", 243 "https://www.youtube.com/channel/UCotb2ainbLyD59J88M0XXxw", 244 "https://blog.naver.com/withitblog", 245 "https://event-us.kr/hostcenter/blog", 246 "https://blog.event-us.kr/eventus-solution" 247 ] 248 } 249 250 </script>
250 251 252
252<script type="text/javascript"> 253 _linkedin_partner_id = "4074420"; 254 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 255 window._linkedin_data_partner_ids.push(_linkedin_partner_id); 256 </script>
256 257
257<script type="text/javascript"> 258 (function (l) { 259 if (!l) { 260 window.lintrk = function (a, b) { window.lintrk.q.push([a, b]) }; 261 window.lintrk.q = [] 262 } 263 var s = document.getElementsByTagName("script")[0]; 264 var b = document.createElement("script"); 265 b.type = "text/javascript"; b.async = true; 266 b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; 267 s.parentNode.insertBefore(b, s); 268 })(window.lintrk); 269 </script>
269 270 <noscript> 271 <img height="1" width="1" style="display: none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=4074420&fmt=gif" /> 272 </noscript> 273
273<script src="/contents/js/log.es5.min.js" defer></script>
273 274</head> 275 276<body class=""> 277 <!-- GrowthFit Google Tag Manager (noscript) -->
vendor: 83 bytes, lines 277-279
277 278 <noscript> 279 <iframe src="https://www.googletagmanager.com/ns.html?id=
279GTM-WXXCN9W
vendor: 111 bytes, lines 279-282
279" 280 height="0" width="0" style="display:none;visibility:hidden"></iframe> 281 </noscript> 282
282<!-- End GrowthFit Google Tag Manager (noscript) --> 283 284 <noscript> 285 <img height="1" width="1" src="https://www.facebook.com/tr?id=467831983562863&ev=PageView&noscript=1" /> 286 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PDVW6RC" 287 height="0" width="0" style="display: none; visibility: hidden"> 288 </iframe> 289 </noscript> 290 <div id="uiAlerts"> 291 292 <ev-modal level="alert" :open="isOpen" :position="position" 293 :dismissible="isBottomSheet && !hideCloseButton && onClose !== false" @dismiss="closeAction" 294 :class="[position === 'center' ? 'max-w-sm' : '', { 'text-center': confirmTheme || iconTheme }]"> 295 <template #title v-if="title"> 296 297 <div class="mx-auto mb-5 h-1 w-10 rounded-full bg-gray-200 sm:hidden" v-if="isBottomSheet"></div> 298 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-primary-50" 299 v-if="iconTheme === 'lock'"> 300 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-primary-500" viewBox="0 0 24 24" 301 fill="none" stroke-width="1.5" stroke="currentColor"> 302 <path stroke-linecap="round" stroke-linejoin="round" 303 d="M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" /> 304 </svg> 305 </div> 306 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-success-50" 307 v-if="confirmTheme === 'success'"> 308 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-success-500" viewBox="0 0 20 20" 309 fill="currentColor"> 310 <path fill-rule="evenodd" 311 d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" 312 clip-rule="evenodd" /> 313 </svg> 314 </div> 315 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-danger-50" 316 v-if="confirmTheme === 'danger'"> 317 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-danger-500" viewBox="0 0 20 20" 318 fill="currentColor" aria-hidden="true"> 319 <path fill-rule="evenodd" 320 d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" 321 clip-rule="evenodd" /> 322 </svg> 323 </div> 324 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-danger-50" 325 v-if="confirmTheme === 'delete'"> 326 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-danger-500" viewBox="0 0 24 24" 327 fill="none" stroke-width="1.5" stroke="currentColor"> 328 <path stroke-linecap="round" stroke-linejoin="round" 329 d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" /> 330 </svg> 331 </div> 332 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-warning-50" 333 v-if="confirmTheme === 'warning'"> 334 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-warning-500" viewBox="0 0 24 24" 335 fill="none" stroke-width="1.5" stroke="currentColor"> 336 <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75
336a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" /> 337 </svg> 338 </div> 339 <div class="flex justify-center items-center mx-auto mb-6 w-12 h-12 rounded-full bg-info-50" 340 v-if="confirmTheme === 'copy'"> 341 <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 text-info-50" viewBox="0 0 24 24" fill="none"> 342 <path d="M15.666 3.888C15.5327 3.4163 15.2489 3.00105 14.858 2.70538C14.467 2.40972 13.9902 2.24982 13.5 2.25H10.5C9.47 2.25 8.6 2.943 8.334 3.888M15.666 3.888C15.721 4.082 15.75 4.288 15.75 4.5C15.75 4.69891 15.671 4.88968 15.5303 5.03033C15.3897 5.17098 15.1989 5.25 15 5.25H9C8.80109 5.25 8.61032 5.17098 8.46967 5.03033C8.32902 4.88968 8.25 4.69891 8.25 4.5C8.25 4.288 8.28 4.082 8.334 3.888M15.666 3.888C16.312 3.937 16.954 3.998 17.593 4.072C18.693 4.2 19.5 5.149 19.5 6.257V19.5C19.5 20.0967 19.2629 20.669 18.841 21.091C18.419 21.5129 17.8467 21.75 17.25 21.75H6.75C6.15326 21.75 5.58097 21.5129 5.15901 21.091C4.73705 20.669 4.5 20.0967 4.5 19.5V6.257C4.5 5.149 5.306 4.2 6.407 4.072C7.04804 3.99778 7.6905 3.93643 8.334 3.888" stroke="#245DCB" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 343 </svg> 344 </div> 345 <div class="font-bold text-base">{{ title }}</div> 346 </template> 347 <template #description v-if="description"> 348 <div class="whitespace-pre-line mt-2" v-dompurify-html="description"> 349 </div> 350 </template> 351 352 <template v-if="stacked"> 353 <div class="space-y-2"> 354 <ev-button v-if="!hideConfirmButton && onConfirm" class="bg-primary-500" @click="confirmAction" 355 :disabled="isProcessing"> 356 <span v-if="isProcessing" class="inline-flex items-center justify-center gap-2"> 357 <span>{{ processingTitle ?? 'ì§í ì¤' }}</span> 358 <svg class="animate-spin w-4 h-4" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 359 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 360 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"></path> 361 </svg> 362 </span> 363 <template v-else>{{ confirmTitle ?? 'íì¸' }}</template> 364 </ev-button> 365 <ev-button small v-if="!hideCloseButton && onClose !== false" 366 class="border-0 bg-transparent shadow-none text-gray-500" @click="closeAction" :disabled="isProcessing"> 367 {{ closeTitle ?? 'ë«ê¸°' }} 368 </ev-button> 369 </div> 370 </template> 371 <template v-else-if="confirmTheme"> 372 <div class="flex space-x-4"> 373 <ev-button small v-if="!hideCloseButton && onClose !== false" @click="closeAction" :disabled="isProcessing"> 374 {{ closeTitle ?? 'ë«ê¸°' }} 375 </ev-button> 376 <ev-button small v-if="!hideConfirmButton" @click="confirmAction" 377 :class="[ confirmButtonClass[confirmTheme] ]" :disabled="isProcessing"> 378 <span v-if="isProcessing" class="inline-flex items-center justify-center gap-2"> 379 <span>{{ processingTitle ?? 'ì§í ì¤' }}</span> 380 <svg class="animate-spin w-4 h-4" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 381 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 382 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"></path> 383 </svg> 384 </span> 385 <template v-else>{{ confirmTitle ?? 'íì¸' }}</template> 386 </ev-button> 387 </div> 388 </template> 389 <template v-else> 390 <div class="flex space-x-2"> 391 <ev-button small v-if="!hideCloseButton" class="flex-1" @click="closeAction" :disabled="isProcessing"> 392 {{ closeTitle ?? 'ë«ê¸°' }} 393 </ev-button> 394 <ev-button small :class="[ 'flex-1', confirmTheme === 'danger' ? 'bg-danger-500' : 'bg-primary-500' ]" 395 @click="confirmAction" v-if="!hideConfirmButton && onConfirm" :disabled="isProcessing">
396 <span v-if="isProcessing" class="inline-flex items-center justify-center gap-2"> 397 <span>{{ processingTitle ?? 'ì§í ì¤' }}</span> 398 <svg class="animate-spin w-4 h-4" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 399 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 400 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z"></path> 401 </svg> 402 </span> 403 <template v-else>{{ confirmTitle ?? 'íì¸' }}</template> 404 </ev-button> 405 </div> 406 </template> 407 </ev-modal> 408</div>
409<script> 410 docReady(() => { 411 ui.createApp({ 412 data() { 413 return { 414 isOpen: false, 415 title: null, 416 description: null, 417 onClose: null, 418 closeTitle: null, 419 onConfirm: null, 420 confirmTitle: null, 421 confirmTheme: null, 422 hideCloseButton: false, 423 hideConfirmButton: false, 424 isProcessing: false, 425 loadingOnConfirm: false, 426 processingTitle: null, 427 position: 'center', 428 iconTheme: null, 429 stacked: false, 430 431 confirmButtonClass: { 432 success: 'bg-primary-500', 433 danger: 'bg-danger-500', 434 delete: 'bg-danger-500', 435 warning: 'bg-primary-500', 436 copy: 'bg-primary-500', 437 }, 438 }; 439 }, 440 computed: { 441 isBottomSheet() { 442 return String(this.position).split(' ').indexOf('bottom') !== -1; 443 }, 444 }, 445 methods: { 446 closeAction() { 447 if (this.isProcessing) return; 448 if (typeof this.onClose === 'function') { 449 this.onClose(); 450 } 451 this.isOpen = false; 452 }, 453 confirmAction() { 454 if (this.isProcessing) return; 455 if (typeof this.onConfirm === 'function') { 456 const result = this.onConfirm(); 457 if (this.loadingOnConfirm && result && typeof result.then === 'function') { 458 this.isProcessing = true; 459 const self = this; 460 result.finally(() => { 461 self.isProcessing = false; 462 }); 463 return; 464 } 465 } 466 this.isOpen = false; 467 }, 468 }, 469 mounted() { 470 const self = this; 471 ui.alertClose = function () { 472 self.isProcessing = false; 473 self.isOpen = false; 474 }; 475 ui.alert = function (model) { 476 Object.assign(self, { 477 title: null, 478 description: null, 479 onClose: null, 480 closeTitle: null, 481 onConfirm: null, 482 confirmTitle: null, 483 confirmTheme: null, 484 hideCloseButton: false,
485 hideConfirmButton: false, 486 isProcessing: false, 487 loadingOnConfirm: false, 488 processingTitle: null, 489 position: 'center', 490 iconTheme: null, 491 stacked: false, 492 493 confirmButtonClass: { 494 success: 'bg-primary-500', 495 danger: 'bg-danger-500', 496 delete: 'bg-danger-500', 497 warning: 'bg-primary-500', 498 copy: 'bg-primary-500', 499 }, 500 }); 501 if (typeof model === 'string') { 502 self.title = model; 503 } else if (typeof model === 'object') { 504 Object.assign(self, model); 505 } 506 self.$nextTick(() => { 507 self.isOpen = true; 508 }); 509 }; 510 ui.favorite = function (id, callback) { 511 axios 512 .post('/useraction/favoriteevent', { 513 id, 514 location: location.pathname, 515 }) 516 .then(function ({ data }) { 517 if (data.Message === 'NeedLogin') { 518 ui.needLoginAlert(function () { 519 util.newTab('/account/login?afterAction'); 520 window._loginCallBack = function () { 521 ui.favorite(id, callback); 522 }; 523 }); 524 525 return; 526 } 527 if (data.IsSuccess) { 528 if (data.Message === 'Added') { 529 ui.alert('ê´ì¬ íì¬ì ì¶ê° íìµëë¤'); 530 mixpanel.track('favorite_item', { 531 item_id: id, 532 item_name: data.EventTitle, 533 item_brand: data.Channel, 534 }); 535 } else { 536 ui.alert('ê´ì¬ íì¬ìì ìì íìµëë¤'); 537 } 538 if (typeof callback === 'function') { 539 callback(data.Message === 'Added'); 540 } 541 } 542 }); 543 }; 544 ui.subscribe = function (subdomain, callback) { 545 axios.post('/useraction/usersubscribe', { subdomain }).then(({ data }) => { 546 if (data.Message === 'NeedLogin') { 547 ui.needLoginAlert(function () { 548 util.newTab('/account/login?afterAction'); 549 window._loginCallBack = function () { 550 ui.subscribe(subdomain, callback); 551 }; 552 }); 553 554 return; 555 } 556 if (data.IsSuccess) { 557 if (data.Message === 'Added') { 558 mixpanel.track('channel_subscribe', { channel_id: subdomain }); 559 ui.alert({ 560 title: 'ì±ëì 구ë íìµëë¤.', 561 description: '구ë ì±ëì ìë¡ì´ íì¬ê° ê°ì¤ëë©´ ë©ì¼ë¡ ìë ¤ëë ¤ì.', 562 confirmTheme: 'success', 563 confirmTitle: '구ë ì±ë ë°ë¡ê°ê¸°', 564 closeTitle: 'ê³ì ì´í´ë³´ê¸°', 565 onConfirm() { 566 location.href = '/mypage/subscriptions'; 567 }, 568 }); 569 gtag('event', 'channel_subscribe', { 570 channel: subdomain, 571 items: [ 572 { 573 index: 'channel_subscribe', 574 }, 575 ], 576 }); 577 } else { 578 mixpanel.track('channel_subscribe_cancel', { channel_id: subdomain }); 579 ui.alert({ 580 title: '구ë ì ì·¨ì íìµëë¤.', 581 description: 582 '구ë ì±ëìì ìì íìµëë¤.\nëì´ì ìë¡ì´ íì¬ ì림 ë©ì¼ì ë°ì ì ììµëë¤.', 583 closeTitle: 'íì¸', 584 }); 585 gtag('event', 'channel_subscribe_cancel', { 586 channel: subdomain, 587 items: [ 588 { 589 index: 'channel_subscribe_cancel', 590 }, 591 ], 592 }); 593 } 594 if (typeof callback === 'function') { 595 callback(data.Message === 'Added'); 596 } 597 } 598 }); 599 }; 600 ui.subscribeAlert = function (subdomain, callback) { 601 axios.post('/useraction/toggleusersubscribealert', { subdomain }).then(({ data }) => { 602 if (data.Message === 'NeedLogin') { 603 ui.needLoginAlert(function () { 604 util.newTab('/account/login?afterAction'); 605 window._loginCallBack = function () { 606 ui.subscribeAlert(subdomain, callback); 607 }; 608 }); 609 610 return; 611 } 612 if (data.IsSuccess) { 613 if (data.Message === 'Added') { 614 ui.alert({
615 title: 'ì±ëìëì ì¤ì íìµëë¤.', 616 description: '구ë ì±ëì ìë¡ì´ íì¬ê° ê°ì¤ëë©´ ë©ì¼ë¡ ìë ¤ëë ¤ì.', 617 confirmTheme: 'success', 618 confirmTitle: '구ë ì±ë ë°ë¡ê°ê¸°', 619 closeTitle: 'ê³ì ì´í´ë³´ê¸°', 620 onConfirm() { 621 location.href = '/mypage/subscriptions'; 622 }, 623 }); 624 } else { 625 ui.alert({ 626 title: 'ì±ëìëì í´ì íìµëë¤.', 627 description: 'ëì´ì ìë¡ì´ íì¬ ì림 ë©ì¼ì ë°ì ì ììµëë¤.', 628 closeTitle: 'íì¸', 629 }); 630 } 631 if (typeof callback === 'function') { 632 callback(data.Message === 'Added'); 633 } 634 } 635 }); 636 }; 637 ui.needLoginAlert = function (onConfirm) { 638 ui.alert({ 639 title: 'ë¡ê·¸ì¸ì´ íìí ìë¹ì¤ì ëë¤.', 640 description: 'ë¡ê·¸ì¸ íì´ì§ë¡ ì´ëíìê² ìµëê¹?', 641 closeTitle: 'ì·¨ì', 642 onConfirm: onConfirm, 643 }); 644 }; 645 }, 646 }).mount('#uiAlerts'); 647 }); 648</script>
648 649 650 651 <div id="uiToast" class="print:hidden"> 652 <ui-transition-root as="template" enter="transition-opacity duration-500" enter-from="opacity-0" 653 enter-to="opacity-100" leave="transition-opacity duration-500" leave-from="opacity-100" leave-to="opacity-0" 654 :show="isOpen"> 655 <div class="fixed left-0 right-0 top-0 z-[300] p-4 w-full sm:left-auto" :class="[maxWidthClass]"> 656 657 <div class="flex justify-between p-4 rounded-md border" :class="{ 658 'bg-success-50 border-success-300': theme === 'success', 659 'bg-danger-50 border-danger-300': theme === 'danger', 660 'bg-info-50 border-info-300': theme === 'info', 661 'bg-gray-50 border-gray-300' : theme === 'disabled' || !theme 662 }"> 663 <div class="flex items-center"> 664 <span class="mr-2.5 text-white"> 665 <template v-if="theme === 'success'"> 666 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-success-400"> 667 <path fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z" clip-rule="evenodd" /> 668 </svg> 669 670 </template> 671 <template v-else-if="theme === 'danger'"> 672 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" 673 stroke="currentColor" class="w-6 h-6 fill-danger-400"> 674 <path stroke-linecap="round" stroke-linejoin="round" 675 d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> 676 </svg> 677 </template> 678 <template v-else-if="theme === 'disabled'"> 679 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6 fill-gray-400"> 680 <path fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z" clip-rule="evenodd" /> 681 </svg> 682 683 </template> 684 <template v-else> 685 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" 686 stroke="currentColor" class="w-6 h-6 fill-info-400"> 687 <path stroke-linecap="round" stroke-linejoin="round" 688 d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" /> 689 </svg> 690 </template> 691 </span> 692 <span class="text-xs"> 693 {{ message }} 694 </span> 695 </div> 696 <div class="flex items-center"> 697 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 cursor-pointer text-gray-500 " @click="isOpen = false" > 698 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" /> 699 </svg> 700 </div> 701 </div> 702 </div> 703 </ui-transition-root> 704</div>
705<script> 706 docReady(() => { 707 function getOptions() { 708 return { 709 theme: 'info', 710 maxwidth: 'max-w-sm', 711 message: '', 712 onOpen: null, 713 onClose: null, 714 onLocation: null, 715 duration: 5000, 716 }; 717 } 718 ui.createApp({ 719 data() { 720 const data = Object.assign( 721 { 722 isOpen: false, 723 }, 724 getOptions(), 725 ); 726 727 return data; 728 }, 729 computed: { 730 maxWidthClass() { 731 const maxWidthMap = { 732 'max-w-xs': 'sm:max-w-xs', 733 'max-w-sm': 'sm:max-w-sm', 734 'max-w-md': 'sm:max-w-md', 735 'max-w-lg': 'sm:max-w-lg', 736 'max-w-xl': 'sm:max-w-xl', 737 'max-w-2xl': 'sm:max-w-2xl', 738 }; 739 740 return maxWidthMap[this.maxwidth] || this.maxwidth; 741 }, 742 }, 743 mounted() { 744 const self = this; 745 ui.toast = function (model, theme, maxwidth) { 746 Object.assign(self, getOptions()); 747 if (typeof model === 'object') { 748 Object.assign(self, model); 749 } else { 750 self.message = model; 751 } 752 if (theme) { 753 self.theme = theme; 754 } 755 if (maxwidth) { 756 self.maxwidth = maxwidth; 757 } 758 self.$nextTick(() => { 759 if (typeof self.onOpen === 'function') { 760 self.onOpen(); 761 } 762 self.isOpen = true; 763 setTimeout(() => { 764 if (typeof self.onClose === 'function') { 765 self.onClose(); 766 } 767 self.isOpen = false; 768 }, self.duration); 769 }); 770 }; 771 }, 772 }).mount('#uiToast'); 773 }); 774</script>
774 775 776<div class="container min-h-screen flex flex-col items-center"> 777 <div class="w-full flex-1 flex sm:items-center"> 778 <div class="mx-auto w-full py-8"> 779 780 781<style> 782 .g_id_signin iframe { 783 width: 64px !important; 784 height: 44px !important; 785 } 786</style> 787<div id="app"> 788 <div class="flex"> 789 <div class="mx-auto w-full max-w-sm space-y-8 flex flex-col justify-center text-center"> 790 <a class="flex items-center justify-center" href="/"> 791 <svg class="w-auto h-10" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 56.965 25.467"><g><g transform="translate(28.416 14.918)"><path d="M66.549 33.4v5.987a2.055 2.055 0 0 1-.179.8 1.385 1.385 0 0 1-.447.536 1.3 1.3 0 0 1-.849.268 1.34 1.34 0 0 1-.849-.268 1.385 1.385 0 0 1-.447-.536 2.055 2.055 0 0 1-.179-.8V33.4h1.072v5.987a.67.67 0 0 0 .134.491l.223.089a.313.313 0 0 0 .313-.268.715.715 0 0 0 .045-.268V33.4z" fill="#5c3fbf" transform="translate(-63.6 -33.395)"></path><path d="M77.146 35.4a2.457 2.457 0 0 0-.089-.715c-.089-.223-.179-.357-.357-.357s-.357.313-.357.76a1.7 1.7 0 0 0 .268.8l.581.894a11.573 11.573 0 0 1 .715 1.162 2.591 2.591 0 0 1 .313 1.162 2.368 2.368 0 0 1-.313 1.3 1.608 1.608 0 0 1-2.547-.089 3.217 3.217 0 0 1-.268-1.519l1.072-.089a2.815 2.815 0 0 0 .089.849c.089.223.179.4.447.4s.447-.357.447-.8a1.876 1.876 0 0 0-.268-.8l-.268-.447-.711-1.032a4.289 4.289 0 0 1-.536-1.162 2.011 2.011 0 0 1-.089-.581 2.1 2.1 0 0 1 .313-1.162 1.34 1.34 0 0 1 1.117-.581 1.3 1.3 0 0 1 1.251.67 2.9 2.9 0 0 1 .268 1.34z" fill="#5c3fbf" transform="translate(-69.953 -33.389)"></path></g><path d="M86.562 13.493H53.5V0h33.062zm-31.5-1.564h29.981V1.564H55.064z" fill="#5c3fbf" transform="translate(-29.597)"></path><path d="M25.467 25.467H0V0h25.467z" fill="#5c3fbf"></path><path d="M70.835 40.238H53.5V26.7h17.335zm-15.771-1.564h14.208v-10.41H55.064z" fill="#5c3fbf" transform="translate(-29.597 -14.771)"></path><g transform="translate(28.46 2.993)"><path d="M63.7 6.7h2.5v1.162h-1.383v1.966h1.028v1.206h-1.028v2.055h1.43v1.117H63.7z" fill="#5c3fbf" transform="translate(-63.7 -6.7)"></path><path d="M76.923 6.7H78l-1.162 7.506h-1.121L74.6 6.7h1.072l.536 4.11v.313h.045v-.313z" fill="#5c3fbf" transform="translate(-69.73 -6.7)"></path><path d="M87.9 6.7h2.5v1.162h-1.43v1.966H90v1.206h-1.028v2.055H90.4v1.117h-2.5z" fill="#5c3fbf" transform="translate(-77.088 -6.7)"></path><path d="M100.562 10.319l-.089-.357h-.045v4.244H99.4V6.7h.983l1.072 3.887.089.357h.045V6.7h1.028v7.506h-.983z" fill="#5c3fbf" transform="translate(-83.45 -6.7)"></path><path d="M112.2 7.862V6.7h3.172v1.162h-1.028v6.344h-1.117V7.862z" fill="#5c3fbf" transform="translate(-90.531 -6.7)"></path></g></g><g transform="translate(7.551 6.523)"><path fill="#ffc200" d="M0 0H10.008V2.895H0z"></path><path d="M23.557 28.1H16.9v-2.9h7.193z" fill="#fff" transform="translate(-16.9 -20.464)"></path><path d="M0 0H10.231V2.895H0z" fill="#fff" transform="translate(0 9.472)"></path></g></svg> 792 </a> 793 <div class="text-xl md:text-2xl font-bold"> 794 <span v-if="!show2FA && language === 'ko'">ë¤ì ë§ëì ë°ê°ìì!</span> 795 <span v-else-if="!show2FA">Great to see you back!</span> 796 <span v-else-if="language === 'ko'">2ë¨ê³ ì¸ì¦</span> 797 <span v-else>Two-Factor Authentication</span> 798 </div> 799 800 <!-- ë¡ê·¸ì¸ í¼ --> 801 <div class="sm:mt-12" v-if="!show2FA"> 802 <form @submit.prevent="submit" novalidate> 803 <input name="__RequestVerificationToken" type="hidden" value="P9B8Y2tGhagOwnoKI14dQh_UhwehvMcei0LqhcZjWUGSe8YvhRbZApghaOweUchRcTKcUUxY5yGG4HYhc-7TrT9vnP41" /> 804 <input name="Sub" type="hidden" hidden /> 805 <input name="AbsolutePath" type="hidden" value="" hidden /> 806 <div class="space-y-6 text-left"> 807 <ev-input id="email" name="Email" type="email" tabindex="1" :invalid="isError" ref="email" 808 v-model="email" vaildation required>
809 <span v-if="language === 'ko'">ì´ë©ì¼(ID)</span> 810 <span v-else>Email(ID)</span> 811 </ev-input> 812 <ev-input id="password" name="Password" type="password" tabindex="2" :invalid="isError" 813 ref="password" vaildation required> 814 <span v-if="language === 'ko'">ë¹ë°ë²í¸</span> 815 <span v-else>Password</span> 816 </ev-input> 817 <div v-show="requireCaptcha" class="flex justify-center"> 818 <div ref="captchaContainer" data-sitekey="6Lf0m7EtAAAAACHOXbjjcmGxDFmbLnuK1I-Um5vq"></div> 819 </div> 820 <div class="text-danger-500" v-show="isError"> 821 <span v-if="language === 'ko'">ì´ë©ì¼ ëë ë¹ë°ë²í¸ë¥¼ íì¸íì¸ì</span> 822 <span v-else>Confirm email or password</span> 823 </div> 824 <div class="text-danger-500" v-show="isLocked"> 825 <template v-if="lockoutMinutes"> 826 <span v-if="language === 'ko'">ë¡ê·¸ì¸ ì¤í¨ê° ë°ë³µëì´ ê³ì ì´ ì ê²¼ìµëë¤. ì½ {{ lockoutMinutes }}ë¶ ë¤ ìëì¼ë¡ í립ëë¤. ì´ë©ì¼ë¡ ê°ì í ê³ì ì <a class="underline" href="/account/forgotpassword" target="_blank">ë¹ë°ë²í¸ 찾기</a>ë¡ ë¹ë°ë²í¸ë¥¼ ì¬ì¤ì íë©´ ë°ë¡ í립ëë¤.</span> 827 <span v-else>Too many failed sign-in attempts locked this account. It unlocks automatically in about {{ lockoutMinutes }} minute(s). Email-registered accounts can unlock right away by resetting the password via <a class="underline" href="/account/forgotpassword" target="_blank">Forgot password</a>.</span> 828 </template> 829 <template v-else> 830 <span v-if="language === 'ko'">ê³ì ì´ ì 겨 ìì´ ë¡ê·¸ì¸í ì ììµëë¤. ê³ ê°ì¼í°ë¡ 문ìí´ ì£¼ì¸ì.</span> 831 <span v-else>This account is locked and cannot sign in. Please contact support.</span> 832 </template> 833 </div> 834 <div> 835 <div class="flex justify-between"> 836 <ev-checkbox name="RememberMe" v-model="isRemember" tabindex="3"> 837 <span v-if="language === 'ko'">ë¡ê·¸ì¸ ì ì§</span> 838 <span v-else>Stay logged in</span> 839 </ev-checkbox> 840 <a class="text-primary-500 underline" href="/account/forgotpassword" target="_blank"> 841 <span v-if="language === 'ko'">ë¹ë°ë²í¸ 찾기</span> 842 <span v-else>Forgot Password</span> 843 </a> 844 </div> 845 <div v-show="isRemember"> 846 <div class="mt-1 text-gray-500"> 847 <span v-if="language === 'ko'">ê°ì¸ì ë³´ ë³´í¸ë¥¼ ìí´ ê°ì¸ 기기ììë§ ì¬ì©íì¸ì</span> 848 <span v-else>Use only on personal devices for the protection of personal information.</span> 849 </div> 850 </div> 851 </div> 852 <div class="relative"> 853 <div v-if="lastLoginMethod === 'eventus'" 854 class="pointer-events-none absolute -top-8 left-1/2 z-10 -translate-x-1/2 whitespace-nowrap"> 855 <div class="relative rounded-md bg-primary-500 px-2 py-1 text-xs text-white"> 856 <span v-if="language === 'ko'">ìµê·¼ ë¡ê·¸ì¸</span><span v-else>Recent</span>
857 <span class="absolute -bottom-1 left-1/2 h-2 w-2 -translate-x-1/2 rotate-45 bg-primary-500"></span> 858 </div> 859 </div> 860 <ev-button class="bg-primary-500" type="submit" :disabled="onRequest"> 861 <span v-if="language === 'ko'">ë¡ê·¸ì¸</span> 862 <span v-else>Login</span> 863 </ev-button> 864 </div> 865 </div> 866 </form> 867 </div> 868 869 <!-- 2FA ì½ë ì ë ¥ í¼ --> 870 <div class="sm:mt-12" v-if="show2FA"> 871 <div class="text-gray-600 mb-6"> 872 <span v-if="language === 'ko'">ì¸ì¦ ì±(Google Authenticator, Microsoft Authenticator ë±)ìì 6ì리 ì½ë를 ì ë ¥í´ì£¼ì¸ì.</span> 873 <span v-else>Enter the 6-digit code from your authenticator app.</span> 874 </div> 875 <form @submit.prevent="submit2FA" novalidate> 876 <input name="__RequestVerificationToken" type="hidden" value="rCIaZ2aW-tzp-nMh1K_ZBqqxJRUB2ywTyrphF2yDXM5JPjuq7khLe6n-MjoKx3qmDjFLFNCJyojX8Ti86ISAC1e5o3Y1" /> 877 <div class="space-y-6 text-left"> 878 <ev-input id="twoFactorCode" type="text" tabindex="1" :invalid="is2FAError" ref="twoFactorCode" 879 v-model="twoFactorCode" maxlength="6" pattern="[0-9]*" inputmode="numeric" 880 autocomplete="one-time-code" vaildation required> 881 <span v-if="language === 'ko'">ì¸ì¦ ì½ë</span> 882 <span v-else>
882Authentication Code</span> 883 </ev-input> 884 <div class="text-danger-500" v-show="is2FAError"> 885 {{ twoFAErrorMessage }} 886 </div> 887 <div> 888 <ev-checkbox v-model="rememberMachine" tabindex="2"> 889 <span v-if="language === 'ko'">ì´ ê¸°ê¸°ììë ë¤ìë¶í° 2ë¨ê³ ì¸ì¦ ìëµ</span> 890 <span v-else>Skip 2FA on this device next time</span> 891 </ev-checkbox> 892 </div> 893 <ev-button class="bg-primary-500" type="submit" :disabled="onRequest"> 894 <span v-if="language === 'ko'">íì¸</span> 895 <span v-else>Verify</span> 896 </ev-button> 897 <ev-button class="bg-white text-gray-500 border-gray-300 hover:bg-gray-50 shadow-none" type="button" @click="cancel2FA"> 898 <span v-if="language === 'ko'">ì·¨ì</span> 899 <span v-else>Cancel</span> 900 </ev-button> 901 </div> 902 </form> 903 </div> 904 905 <div class="sm:mt-10" v-if="!show2FA"> 906 907 908<div class="text-sm"> 909 <span v-if="language === 'ko'">SNS ê³ì ì¼ë¡ ë¡ê·¸ì¸/íìê°ì </span> 910 <span v-else>Sign in/register with a social media account</span> 911</div> 912<div class="flex flex-row space-x-4 justify-center mt-4"> 913 914 <div class="relative flex items-center justify-center"> 915 <div v-if="lastLoginMethod === 'google'" 916 class="pointer-events-none absolute -top-9 left-1/2 z-10 -translate-x-1/2 whitespace-nowrap"> 917 <div class="relative rounded-md bg-primary-500 px-2 py-1 text-xs text-white"> 918 <span v-if="language === 'ko'">ìµê·¼ ë¡ê·¸ì¸</span><span v-else>Recent</span> 919 <span class="absolute -bottom-1 left-1/2 h-2 w-2 -translate-x-1/2 rotate-45 bg-primary-500"></span> 920 </div> 921 </div> 922 <ev-button data-login-method="google" class="h-12 w-12 p-0 rounded-full flex items-center justify-center border border-gray-200" onclick="googleLogin()"> 923 <svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="10 10 20 20"> 924 <g> 925 <path d="M29.6 20.227a11.49 11.49 0 0 0-.182-2.045H20v3.868h5.382a4.6 4.6 0 0 1-2 3.018v2.509h3.232a9.753 9.753 0 0 0 2.986-7.35z" style="fill:#4285f4"/> 926 <path d="M20 30a9.547 9.547 0 0 0 6.618-2.423l-3.232-2.509A6.033 6.033 0 0 1 14.4 21.9h-3.336v2.591A10 10 0 0 0 20 30z" style="fill:#34a853"/> 927 <path d="M14.4 21.9a5.913 5.913 0 0 1 0-3.8v-2.591h-3.336a10.013 10.013 0 0 0 0 8.982z" style="fill:#fbbc04"/> 928 <path d="M20 13.977a5.4 5.4 0 0 1 3.823 1.5l2.868-2.877A9.611 9.611 0 0 0 20 10a10 10 0 0 0-8.936 5.509L14.4 18.1a5.96 5.96 0 0 1 5.6-4.123z" style="fill:#e94235"/> 929 </g> 930 </svg> 931 <span class="sr-only"> 932 <span v-if="language === 'ko'">êµ¬ê¸ ë¡ê·¸ì¸</span> 933 <span v-else>Google Login</span> 934 </span> 935 </ev-button> 936 </div> 937 938 <div class="relative flex items-center justify-center"> 939 <div v-if="lastLoginMethod === 'naver'" 940 class="pointer-events-none absolute -top-9 left-1/2 z-10 -translate-x-1/2 whitespace-nowrap"> 941 <div class="relative rounded-md bg-primary-500 px-2 py-1 text-xs text-white"> 942 <span v-if="language === 'ko'">ìµê·¼ ë¡ê·¸ì¸</span><span v-else>Recent</span> 943 <span class="absolute -bottom-1 left-1/2 h-2 w-2 -translate-x-1/2 rotate-45 bg-primary-500"></span> 944 </div> 945 </div> 946 <ev-button data-login-method="naver" class="bg-[#03c75a] rounded-full h-12 w-12 p-0 border-none flex items-center justify-center" onclick="naverLogin()"> 947 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" data-name="그룹 8392" width="21" height="18" viewBox="0 0 21 18"> 948 <path data-name="ì¬ê°í 5227" d="M0 0h21v18H0z" style="fill:none"/> 949 <path data-name="í¨ì¤ 5638" d="m170.744 255.583-5.837-8.385h-4.839v15.668h5.069v-8.385l5.837 8.385h4.839V247.2h-5.069z" transform="translate(-157.569 -246.197)" style="fill:#fff"/> 950 </svg>
951 <span class="sr-only"> 952 <span v-if="language === 'ko'">ë¤ì´ë² ë¡ê·¸ì¸</span> 953 <span v-else>Naver Login</span> 954 </span> 955 </ev-button> 956 </div> 957 958 <div class="relative flex items-center justify-center"> 959 <div v-if="lastLoginMethod === 'kakao'" 960 class="pointer-events-none absolute -top-9 left-1/2 z-10 -translate-x-1/2 whitespace-nowrap"> 961 <div class="relative rounded-md bg-primary-500 px-2 py-1 text-xs text-white"> 962 <span v-if="language === 'ko'">ìµê·¼ ë¡ê·¸ì¸</span><span v-else>Recent</span> 963 <span class="absolute -bottom-1 left-1/2 h-2 w-2 -translate-x-1/2 rotate-45 bg-primary-500"></span> 964 </div> 965 </div> 966 <ev-button data-login-method="kakao" class="bg-[#fee500] rounded-full h-12 w-12 p-0 border-none flex items-center justify-center" onclick="kakaoLogin()"> 967 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" data-name="그룹 8392" width="21" height="18" viewBox="0 0 21 18"> 968 <path data-name="í¨ì¤ 5635" d="M10.538 1.713c4.418 0 8 2.91 8 6.5s-3.582 6.5-8 6.5a9.7 9.7 0 0 1-2.094-.234c-.389-.08-2.992 1.618-3.548 1.4-.392-.152 1.153-2.274.66-2.581a6.08 6.08 0 0 1-3.018-5.085c0-3.59 3.582-6.5 8-6.5z"/> 969 <path data-name="ì¬ê°í 5227" d="M0 0h21v18H0z" style="fill:none"/> 970 </svg> 971 <span class="sr-only"> 972 <span v-if="language === 'ko'">ì¹´ì¹´ì¤ ë¡ê·¸ì¸</span> 973 <span v-else>Kakao Login</span> 974 </span> 975 </ev-button> 976 </div> 977</div> 978 979<!--Google One-Tap--> 980<div id="g_id_onload" 981 style="display:none;" 982 data-client_id="985112695392-lbq9d35mgi0goivepmhmfou4poccfdjs.apps.googleusercontent.com" 983 data-context="signin" 984 data-ux_mode="popup" 985 data-login_uri="https://event-us.kr/account/GoogleSdkLoginCallback" 986 data-use_fedcm_for_prompt="true" 987 data-itp_support="true"> 988</div> 989<!--End of Google One-Tap--> 990 991 </div> 992 993 <div class="flex flex-col space-y-6" v-if="!show2FA"> 994 <ev-button class="bg-white text-primary-500 outline-primary-500 border-primary-500 hover:bg-primary-50 shadow-none" href="/account/usersignup"> 995 <span v-if="language === 'ko'">íìê°ì </span> 996 <span v-else>Sign up</span> 997 </ev-button> 998 <div class="flex items-center"> 999 <div class="border-t flex-1"></div> 1000 </div> 1001 <div class="text-center"> 1002 <a class="text-gray-500 text-sm" href="/account/nonmemberconfirm"> 1003 <span v-if="language === 'ko'">ë¹íì ì ì²ì¡°í ></span> 1004 <span v-else>Check applications as guest ></span> 1005 </a> 1006 </div> 1007 </div> 1008 </div> 1009 </div> 1010</div> 1011 1012 1013 </div> 1014 </div> 1015 <div class="w-full"> 1016 1017 </div> 1018</div> 1019 1020 1021 1022 1023
1023<script>/* global Kakao */ 1024 // eslint-disable-next-line no-unused-vars 1025 function kakaoLogin() { 1026 Kakao.Auth.login({ 1027 success: function (authObj) { 1028 mixpanel.track("login", { "method": "kakao" }); 1029 location.href = 1030 `/Account/Kakao?AccessTokren=${authObj.access_token}&ReturnUrl=` + 1031 encodeURIComponent('?ReturnUrl=%2Fmypage%2FFavoriteEvent'); 1032 }, 1033 fail: function (err) { 1034 alert(JSON.stringify(err)); 1035 }, 1036 }); 1037 } 1038</script>
1038 1039
1039<script> 1040 function naverLogin() { // eslint-disable-line 1041 mixpanel.track("login", { "method": "naver" }); 1042 const createA = document.createElement('a'); 1043 createA.setAttribute('href', 'https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=RvwOc7rJXusOU6HMP_3N&redirect_uri=https://event-us.kr/account/naversignin&state=56395038'); 1044 createA.click(); 1045 } 1046</script>
1046 1047 1048
1049<script> 1050 function googleLogin() { 1051 if (exitInAppBrowser().isExit) { 1052 return; 1053 } 1054 1055 const url = 'https://accounts.google.com/o/oauth2/v2/auth' + 1056 '?client_id=985112695392-lbq9d35mgi0goivepmhmfou4poccfdjs.apps.googleusercontent.com' + 1057 '&redirect_uri=https://event-us.kr/account/GoogleOAuthLoginCallback' + 1058 '&response_type=code' + 1059 '&state=b06157fc49cc489390e5aa8213f50080' + 1060 '&scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile' + 1061 '&access_type=offline'; 1062 1063 location.href = url; 1064 } 1065 1066 function exitInAppBrowser() { 1067 var useragt = navigator.userAgent.toLowerCase(); 1068 var target_url = location.href; 1069 if (useragt.match(/kakaotalk/i)) { 1070 //ì¹´ì¹´ì¤í¡ ì¸ë¶ë¸ë¼ì°ì ë¡ í¸ì¶ 1071 location.href = 'kakaotalk://web/openExternal?url=' + encodeURIComponent(target_url); 1072 return { isExit: true }; 1073 } else if (useragt.match(/line/i)) { 1074 //ë¼ì¸ ì¸ë¶ë¸ë¼ì°ì ë¡ í¸ì¶ 1075 if (target_url.indexOf('?') !== -1) { 1076 location.href = target_url + '&openExternalBrowser=1'; 1077 } else { 1078 location.href = target_url + '?openExternalBrowser=1'; 1079 } 1080 return { isExit: true }; 1081 } else if (useragt.match(/inapp|naver|snapchat|wirtschaftswoche|thunderbird|instagram|everytimeapp|whatsApp|electron|wadiz|aliapp|zumapp|iphone(.*)whale|kakaostory|band|twitter|DaumApps|DaumDevice\/mobile|FB_IAB|FB4A|FBAN|FBIOS|FBSS|trill\/[^1]/i)) { 1082 //ê·¸ì¸ ë¤ë¥¸ ì¸ì±ë¤ 1083 if (useragt.match(/iphone|ipad|ipod/i)) { 1084 //ìì´í°ì ê°ì ë¡ ì¬í리를 ì¤íí ì ìì... ìë¬ê° ë¨ê² ì§ë§ ê·¸ë¥ ëëë¤. 1085 return { isExit: false }; 1086 } else { 1087 //ìëë¡ì´ëë Chromeì´ ì¤ì¹ëì´ ìì¼ë¯ë¡ ê°ì ë¡ ì¤í´ì¤ííë¤. 1088 location.href = 'intent://' + target_url.replace(/https?:\/\//i, '') + '#Intent;scheme=https;package=com.android.chrome;end'; 1089 return { isExit: true }; 1090 } 1091 } 1092 1093 return { isExit: false }; 1094 } 1095</script>
1095 1096 1097
1097<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
1097 1098
1098<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/sha256.js"></script>
1098 1099
1099<script src="https://accounts.google.com/gsi/client" async></script>
1099 1100
1100<script> 1101/* global CryptoJS */ 1102const App = { 1103 data() { 1104 return { 1105 email: '', 1106 onRequest: false, 1107 isRemember: false, 1108 lastLoginMethod: '', 1109 isError: false, 1110 isLocked: false, 1111 lockoutMinutes: null, 1112 requireCaptcha: false, 1113 captchaWidgetId: null, 1114 captchaScriptRequested: false, 1115 language: 'ko', 1116 // 2FA ê´ë ¨ ìí 1117 show2FA: false, 1118 twoFactorCode: '', 1119 is2FAError: false, 1120 twoFAErrorMessage: '', 1121 rememberMachine: false, 1122 twoFAReturnUrl: '/', 1123 }; 1124 }, 1125 watch: { 1126 show2FA(value) { 1127 // ë¡ê·¸ì¸ í¼ì´ v-ifë¡ ì ê±°ëë©´ 기존 ìì ¯ë í기ëë¤. 1128 if (value) { 1129 this.captchaWidgetId = null; 1130 } else if (this.requireCaptcha) { 1131 this.showCaptcha(); 1132 } 1133 }, 1134 }, 1135 methods: { 1136 showCaptcha() { 1137 this.requireCaptcha = true; 1138 this.$nextTick(() => { 1139 if (window.grecaptcha?.enterprise?.render) { 1140 this.renderCaptcha(); 1141 } else if (!this.captchaScriptRequested) { 1142 this.captchaScriptRequested = true; 1143 window.onLoginRecaptchaLoaded = () => this.renderCaptcha(); 1144 const script = document.createElement('script'); 1145 const language = this.language === 'ko' ? 'ko' : 'en'; 1146 script.src = 'https://www.google.com/recaptcha/enterprise.js?render=explicit&onload=onLoginRecaptchaLoaded&hl=' + language; 1147 script.async = true; 1148 script.defer = true; 1149 // ë¡ë ì¤í¨(ì¼ì ë¤í¸ìí¬ ì¥ì )ë©´ ë¤ì showCaptcha ìì ë¤ì ìëíë¤ â ìëë©´ ìë¡ê³ 침 ì ê¹ì§ ìì ¯ì´ ìì ë¹ì´ ìë¤. 1150 script.onerror = () => { 1151 this.captchaScriptRequested = false; 1152 script.remove(); 1153 }; 1154 document.head.appendChild(script); 1155 } 1156 }); 1157 }, 1158 renderCaptcha() { 1159 const container = this.$refs.captchaContainer; 1160 if (!container || this.captchaWidgetId !== null) return; 1161 this.captchaWidgetId = grecaptcha.enterprise.render(container, { 1162 sitekey: container.dataset.sitekey, 1163 action: 'LOGIN', 1164 }); 1165 }, 1166 resetCaptcha() { 1167 if (this.captchaWidgetId !== null) { 1168 grecaptcha.enterprise.reset(this.captchaWidgetId); 1169 } 1170 }, 1171 submit(event) { 1172 const self = this; 1173 if (self.isError) { 1174 self.isError = false; 1175 } 1176 self.isLocked = false; 1177 if (self.onRequest || ui.checkInvalidRefs(self, ['email', 'password'])) { 1178 return; 1179 } 1180 self.onRequest = true; 1181 let runCallback = false; 1182 axios 1183 .post('/account/login', new FormData(event.target)) 1184 .then((response) => { 1185 switch (response.data.Success) { 1186 case 'OK': 1187 self.handleLoginSuccess(response.data, runCallback); 1188 break; 1189 case '2FA': 1190 // 2ë¨ê³ ì¸ì¦ íì - 2FA ì ë ¥ í¼ íì 1191 self.show2FA = true; 1192 self.twoFAReturnUrl = response.data.returnUrl || '/'; 1193 self.onRequest = false; 1194 self.$nextTick(() => { 1195 if (self.$refs.twoFactorCode) { 1196 self.$refs.twoFactorCode.$el?.querySelector('input')?.focus(); 1197 } 1198 }); 1199 break; 1200 case 'LOCKED': 1201 self.resetCaptcha(); 1202 // ì¤í¨ ëì ì ê¸ â ë¹ë°ë²í¸ê° ë§ìë ì ê¸ì´ í릴 ëê¹ì§ ë¤ì´ì¬ ì ìë¤. ìë ì ê¸ì´ë©´ ë¨ì ë¶ì´ ì¨ë¤(ì´ì ì ê¸ì null). 1203 self.lockoutMinutes = response.data.RetryAfterMinutes || null;
1204 self.isLocked = true; 1205 self.onRequest = false; 1206 break; 1207 case 'CAPTCHA': 1208 self.resetCaptcha(); 1209 self.showCaptcha(); 1210 self.onRequest = false; 1211 break; 1212 case 'ERROR': 1213 self.resetCaptcha(); 1214 self.isError = true; 1215 self.onRequest = false; 1216 break; 1217 case 'NOT': 1218 default: 1219 self.resetCaptcha(); 1220 if (response.data.RequireCaptcha) self.showCaptcha(); 1221 else self.requireCaptcha = false; // ë¤ë¥¸ ê³ì ì¼ë¡ ë°ê¿ 3í 미ë§ì´ë©´ ìì ¯Â·ìë´ë¥¼ ë´ë¦°ë¤ 1222 setTimeout(() => { 1223 self.isError = true; 1224 self.onRequest = false; 1225 }, 300); 1226 break; 1227 } 1228 }) 1229 .catch(() => { 1230 self.resetCaptcha(); 1231 self.isError = true; 1232 self.onRequest = false; 1233 }); 1234 }, 1235 submit2FA() { 1236 const self = this; 1237 if (self.is2FAError) { 1238 self.is2FAError = false; 1239 } 1240 if (self.onRequest || !self.twoFactorCode || self.twoFactorCode.length < 6) { 1241 self.is2FAError = true; 1242 self.twoFAErrorMessage = self.language === 'ko' ? '6ì리 ì½ë를 ì ë ¥í´ì£¼ì¸ì.' : 'Please enter a 6-digit code.'; 1243 return; 1244 } 1245 self.onRequest = true; 1246 // antiforgery ê²ì¦(ìë² [ValidateAntiForgeryToken])ì í¼ íëì í í°ë§ ì½ì¼ë¯ë¡ JSON ëì FormDataë¡ ë³´ë¸ë¤. 1247 // ë¡ê·¸ì¸ í¼ì v-ifë¡ DOMìì ì ê±°ëë¯ë¡ í í°ì 2FA í¼ ìì ë ëìì ì½ëë¤(#772 íê·). 1248 const tokenInput = document.querySelector('input[name="__RequestVerificationToken"]'); 1249 if (!tokenInput) { 1250 self.is2FAError = true; 1251 self.twoFAErrorMessage = self.language === 'ko' ? 'ë³´ì í í°ì ì°¾ì ì ììµëë¤. íì´ì§ë¥¼ ìë¡ê³ 침í ë¤ ë¤ì ìëí´ì£¼ì¸ì.' : 'Security token missing. Please refresh the page and try again.'; 1252 self.onRequest = false; 1253 return; 1254 } 1255 const fd = new FormData(); 1256 fd.append('__RequestVerificationToken', tokenInput.value); 1257 fd.append('code', self.twoFactorCode); 1258 fd.append('returnUrl', self.twoFAReturnUrl || '/'); 1259 fd.append('rememberMe', self.isRemember); 1260 fd.append('rememberMachine', self.rememberMachine); 1261 axios 1262 .post('/account/verifyAuthenticatorCode', fd) 1263 .then((response) => { 1264 if (response.data.Success) { 1265 self.handleLoginSuccess(response.data, false); 1266 } else { 1267 self.is2FAError = true; 1268 self.twoFAErrorMessage = response.data.Error || (self.language === 'ko' ? 'ì¸ì¦ì ì¤í¨íìµëë¤.' : 'Authentication failed.'); 1269 self.onRequest = false; 1270 } 1271 }) 1272 .catch(() => { 1273 self.is2FAError = true; 1274 self.twoFAErrorMessage = self.language === 'ko' ? 'ìë¬ê° ë°ìíìµëë¤.' : 'An error occurred.'; 1275 self.onRequest = false; 1276 }); 1277 }, 1278 cancel2FA() { 1279 this.show2FA = false; 1280 this.twoFactorCode = ''; 1281 this.is2FAError = false; 1282 this.twoFAErrorMessage = ''; 1283 this.rememberMachine = false; 1284 }, 1285 handleLoginSuccess(data, runCallback) { 1286 const self = this; 1287 try { localStorage.setItem('eventus_last_login_method', 'eventus'); } catch (e) { /* ignore */ } 1288 window.util.checkUserDeviceMapping(data.UserId); 1289 mixpanel.identify(data.Email); 1290 gtag('set', 'user_properties', { 1291 crm_id: data.UserId, 1292 }); 1293 gtag('event', 'login', { 1294 method: 'eventus', 1295 }); 1296 mixpanel.track("login", { "method": "eventus" }); 1297 mixpanel.people.set('mail_confirm', data.EmailConfirmed); 1298 dataLayer.push({ 1299 event: 'login', 1300 eventCategory: 'ë¡ê·¸ì¸', 1301 eventAction: 'ë²í¼í´ë¦', 1302 eventLable: 'ë¡ê·¸ì¸ë²í¼í´ë¦', 1303 eventCallback: function () { 1304 if (runCallback) { 1305 return; 1306 } else { 1307 runCallback = true; 1308 } 1309 if (location.search.indexOf('afterAction') !== -1) { 1310 if (typeof window.opener._loginCallBack === 'function') { 1311 window.opener._loginCallBack(); 1312 } 1313 window.close(); 1314 return; 1315 } 1316 1317 if (data.IsApp) { 1318 location.href = `/${data.subdomain}/ps?ver=new&eventType=${data.eventType}`; 1319 } else if (data.IsApp === false) { 1320 axios 1321 .post('/app/create', { 1322 value: 'eventus', 1323 title: 'eventus', 1324 where: 'Empty', 1325 }) 1326 .then((response) => { 1327 if (response.data.success) { 1328 location.href = `/${response.data.channel}
1328/ps?ver=new&eventType=${response.data.eventType}`; 1329 } 1330 }); 1331 } else { 1332 let url = data.url.replace( 1333 /&email=([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/, 1334 '', 1335 ); 1336 if (!url.includes('?')) { 1337 url = url.replace('&', '?'); 1338 } 1339 url = url.replace(/groupid=g/gi, 'groupid=G').replace(/&%3bGroupNum/gi,'&GroupNum'); 1340 location.replace(url.replace(/%2F/gi, '/')); 1341 } 1342 }, 1343 }); 1344 }, 1345 }, 1346 created() { 1347 document.addEventListener('languageChanged', (e) => { 1348 this.language = e.detail.language; 1349 }); 1350 }, 1351 mounted() { 1352 const self = this; 1353 try { self.lastLoginMethod = localStorage.getItem('eventus_last_login_method') || ''; } catch (e) { /* ignore */ } 1354 document.addEventListener('click', (e) => { 1355 const el = e.target.closest && e.target.closest('[data-login-method]'); 1356 if (el) { 1357 try { localStorage.setItem('eventus_last_login_method', el.getAttribute('data-login-method')); } catch (e2) { /* ignore */ } 1358 } 1359 }); 1360 const urlParams = new URLSearchParams(window.location.search); 1361 const emailParam = urlParams.get('eventusEmail')?.replace(/ /gi, '+'); 1362 if (emailParam) { 1363 const decrypted = CryptoJS.AES.decrypt(emailParam, 'ApplicantLogin'); 1364 const text = decrypted.toString(CryptoJS.enc.Utf8); 1365 self.email = text; 1366 } 1367 }, 1368}; 1369 1370docReady(() => { 1371 ui.createApp(App).mount('#app'); 1372 mixpanel.track("login_view", {"method": "eventus"}); 1373 1374 // ìì ê°ì ì´ ìë¸ ì´ë©ì¼ ì¶©ëë¡ ë§í ëëìì¨ ê²½ì°ìë§ ì¬ì 를 ì린ë¤. 1375 // ì¬ì ìì´ ë¡ê·¸ì¸ íë©´ì ë¨ì´ì§ë©´ ê°ì ìì ë²í¼ì ë¤ì ëë¬ ì ìë¦¬ë¡ ëìì¨ë¤. 1376 const socialSignupError = ""; 1377 if (socialSignupError) { 1378 ui.alert({ title: socialSignupError, confirmTheme: 'danger', hideConfirmButton: true }); 1379 } 1380}); 1381 </script>
1381 1382 1383 1384 1385<!--구ê¸ë²ì ì½ë--> 1386<div id="google_translate_element_applicant" style="display:none;"> 1387</div> 1388
1389<script> 1390 function appendGoogleTranslateScript() { 1391 const script = document.createElement('script'); 1392 script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateInit'; 1393 document.head.appendChild(script); 1394 } 1395 1396 window.setLanguage = function setLanguage(language) { 1397 // Google ë²ì trigger 1398 const selectbox = document.querySelector('.goog-te-combo'); 1399 selectbox.value = language; 1400 selectbox.dispatchEvent(new Event('change')); 1401 1402 // ì´ë²¤í¸ dispatch ì ì¿ í¤ê° ìê±°ë ì못 ì¤ì ëë ì¼ì´ì¤ ë°©ì§ 1403 const interval = setInterval(() => { 1404 const langCookie = getLangCookie(); 1405 if (langCookie !== language) { 1406 selectbox.value = language; 1407 selectbox.dispatchEvent(new Event('change')); 1408 } else { 1409 clearInterval(interval); 1410 } 1411 }, 100); 1412 1413 // ì´ë²¤í¸ ë°í 1414 const event = new CustomEvent('languageChanged', { 1415 detail: { 1416 language: language, 1417 }, 1418 }); 1419 document.dispatchEvent(event); 1420 } 1421 1422 window.googleTranslateInit = function googleTranslateInit() { 1423 new google.translate.TranslateElement( 1424 { 1425 pageLanguage: 'ko', 1426 includedLanguages: 'ko,en', 1427 autoDisplay: false, 1428 }, 1429 'google_translate_element_applicant', 1430 ); 1431 1432 // Google ë²ì ë¡ë íì¸ í ì¸ì´ê° ì¤ì 1433 const interval = setInterval(() => { 1434 if (document.querySelector('.goog-te-combo')?.children?.length > 0) { 1435 clearInterval(interval); 1436 1437 const language = getLangCookie(); // ì¿ í¤ ì°ì 1438 if (language) { 1439 setLanguage(language); 1440 } else { 1441 // Global íì¬ && ë¸ë¼ì°ì ì¸ì´ê° ì¸êµì´ë©´ ìë ë²ì 1442 if ('False' === 'True' && !window.navigator.language.includes('ko')) { 1443 setLanguage('en'); 1444 } 1445 } 1446 } 1447 }, 100); 1448 1449 const googleTranslateIframeStyle = document.createElement('style'); 1450 googleTranslateIframeStyle.innerHTML = ` 1451 .skiptranslate { 1452 display: none !important; 1453 } 1454 html > body { 1455 top: 0 !important; 1456 } 1457 `; 1458 document.head.appendChild(googleTranslateIframeStyle); 1459 } 1460 1461 function getLangCookie() { 1462 const gtCookie = getCookie('googtrans'); 1463 if (gtCookie) { 1464 const lang = gtCookie.split('/')[2].split('-')[0]; 1465 return lang; 1466 } 1467 return null; 1468 } 1469 1470 function getCookie(name) { 1471 const nameEQ = name + "="; 1472 const ca = document.cookie.split(';'); 1473 for (let i = 0; i < ca.length; i++) { 1474 let c = ca[i]; 1475 while (c.charAt(0) === ' ') c = c.substring(1, c.length); 1476 if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); 1477 } 1478 return null; 1479 } 1480 1481 function setCookie(name, value, days) { 1482 let expires = ""; 1483 if (days) { 1484 const intDays = parseInt(days); 1485 if (isNaN(intDays)) { 1486 throw new Error('매ê°ë³ìê° ì못ëììµëë¤. daysë ì«ìì¬ì¼ í©ëë¤.') 1487 } 1488 const date = new Date(); 1489 date.setTime(date.getTime() + (intDays * 24 * 60 * 60 * 1000)); 1490 expires = "; expires=" + date.toUTCString(); 1491 } 1492 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 1493 } 1494 1495 // ë¤ë¡ê°ê¸° ì Google ë²ìì´ ì¬ë¼ì§ë íì ë°©ì§ 1496 window.addEventListener('pageshow', (e) => { 1497 if (e.persisted && !document.querySelector('.goog-te-combo')) { 1498 appendGoogleTranslateScript(); 1499 } 1500 });
1501 1502 window.getLangCookie = getLangCookie; 1503 1504 appendGoogleTranslateScript(); 1505</script>
1505 1506<!--구ê¸ë²ì ì½ë ë--> 1507 1508
1508<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js" 1509 integrity="sha512-CNgIRecGo7nphbeZ04Sc13ka07paqdeTu0WR1IM4kNcpmBAUSHSQX0FslNhTDadL4O5SAGapGt4FodqL8My0mA==" 1510 crossorigin="anonymous" referrerpolicy="no-referrer"></script>
1510 1511
1511<script src="/Content/neweventus/lib/html2/1.3.2/html2canvas.min.js"></script>
1511 1512
1512<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
1512 1513 1514
1514<script> 1515 // SDK 1516 Kakao.init('2b4978da5d2625e633561e5eacc9be14'); 1517 window.fbAsyncInit = function () { 1518 FB.init({ 1519 appId: '136314230510204', 1520 autoLogAppEvents: true, 1521 xfbml: true, 1522 version: 'v3.2', 1523 }); 1524 }; 1525 (function (d, s, id) { 1526 const fjs = d.getElementsByTagName(s)[0]; 1527 if (d.getElementById(id)) { 1528 return; 1529 } 1530 const js = d.createElement(s); 1531 js.id = id; 1532 js.src = 'https://connect.facebook.net/en_US/sdk.js'; 1533 fjs.parentNode.insertBefore(js, fjs); 1534 })(document, 'script', 'facebook-jssdk'); 1535 //facebook Analytics 1536 (function (f, b, e, v, n, t, s) { 1537 if (f.fbq) return; n = f.fbq = function () { 1538 n.callMethod ? 1539 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 1540 }; 1541 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; 1542 n.queue = []; t = b.createElement(e); t.async = !0; 1543 t.src = v; s = b.getElementsByTagName(e)[0]; 1544 s.parentNode.insertBefore(t, s) 1545 })(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); 1546 </script>
1546 1547 1548
1548<script type="text/javascript" src="https://wcs.naver.net/wcslog.js"></script>
1548 1549 1550 1551 1552
1552<script> 1553 //ë¤ì´ë² analytics 1554 if (!wcs_add) var wcs_add = {}; 1555 wcs_add["wa"] = "s_239ba85b9cf2"; 1556 if (!_nasa) var _nasa = {}; 1557 if (window.wcs) { 1558 wcs.inflow("event-us.kr"); 1559 wcs_do(_nasa); 1560 } 1561 </script>
1561 1562
1562<script> 1563 function getQueryParam(url, param) { 1564 // Expects a raw URL 1565 param = param.replace(/[[]/, "\[").replace(/[]]/, "\]"); 1566 1567 var regexS = "[\?&]" + param + "=([^&#]*)", 1568 regex = new RegExp(regexS), 1569 results = regex.exec(url); 1570 1571 if (results === null || (results && typeof (results[1]) !== 'string' && results[1].length)) { 1572 return ''; 1573 } else { 1574 return decodeURIComponent(results[1]).replace(/\W/gi, ' '); 1575 } 1576 }; 1577 1578 function campaignParams() { 1579 1580 // campaign_keywords sets the UTM tags to parse for 1581 var campaign_keywords = 'utm_source utm_medium utm_campaign utm_content utm_term'.split(' ') 1582 , kw = '' 1583 , last_params = {} 1584 , first_params = {}; 1585 1586 var index; 1587 1588 //save UTM tags parsed from the URL as a key-value pair 1589 //used to set last-touch UTM properties 1590 for (index = 0;
1590 index < campaign_keywords.length; ++index) { 1591 kw = getQueryParam(document.URL, campaign_keywords[index]); 1592 if (kw.length) { 1593 last_params[campaign_keywords[index] + ' [last touch]'] = kw; 1594 } 1595 } 1596 1597 //save UTM tags parsed from the URL as a key-value pair 1598 //used to set first-touch UTM properties 1599 for (index = 0; index < campaign_keywords.length; ++index) { 1600 kw = getQueryParam(document.URL, campaign_keywords[index]); 1601 if (kw.length) { 1602 first_params[campaign_keywords[index] + ' [first touch]'] = kw; 1603 } 1604 } 1605 1606 //set last-touch UTM tags as profile properties 1607 mixpanel.people.set(last_params); 1608 //update last-touch UTM super property with the latest value 1609 mixpanel.register(last_params); 1610 1611 //set first-touch UTM tag as profile property 1612 //will be skipped if the property is already present 1613 mixpanel.people.set_once(first_params); 1614 1615 } 1616 1617 window.onload = function () { 1618 if (typeof mixpanel !== 'undefined') { 1619 campaignParams(); 1620 } else { 1621 console.error('Mixpanel is not initialized yet. Retrying...'); 1622 1623 // Retry ë¡ì§ ì¶ê° (ìµë 5í ìë, 1ì´ ê°ê²©) 1624 let attempts = 0; 1625 const maxAttempts = 5; 1626 const interval = setInterval(() => { 1627 if (typeof mixpanel !== 'undefined') { 1628 clearInterval(interval); 1629 console.log('Mixpanel initialized. Executing campaignParams...'); 1630 campaignParams(); 1631 } else if (++attempts >= maxAttempts) { 1632 clearInterval(interval); 1633 console.error('Mixpanel initialization failed after maximum attempts.'); 1634 } 1635 }, 1000); 1636 } 1637 }; 1638 </script>
1638 1639</body> 1640</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.