@tapni/auth 0.0.91 → 0.0.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4477,7 +4477,7 @@ const De = {
4477
4477
  Ne.refreshToken({
4478
4478
  id: n.id,
4479
4479
  refreshToken: this.refreshToken,
4480
- refreshTokenAction: async () => await this.refreshTokenAction
4480
+ refreshTokenAction: () => this.refreshTokenAction
4481
4481
  }, this.$storage)
4482
4482
  );
4483
4483
  if (r && r.response && r.response.data.error === "ACCESS_DENIED")
@@ -99,7 +99,7 @@ Tanıştığınız herkesi etkileyin 😎 <br> Kendinize bir tane ayırın 👇`
99
99
  또는 궁금한 게 있으면,<br>
100
100
  저희에게 연락주세요`,referral_p5:"지금부터 돈을 벌기 시작하세요!",referral_p66:"제휴링크를 공유하고 돈을 벌어보세요!",referral_p6:`블로거, 인플루언서 또는 소셜 미디어 매니아라면 당사의 엠버서더 프로그램 에 완벽하게 적합합니다.
101
101
  브랜드를 홍보하고 할인 코드 또는 추천 링크를 사용하여 구입한 경우 20%의 수수료를 받으십시오.`,referral_p7:`탭니 엠버서더 프로그램에 등록하면 개인 추천 링크와 할인 코드가 발급됩니다.
102
- 웹 사이트 및 소셜 미디어에 공유하여 돈을 버는 동시에 최고의 연결 경험을 제공하십시오.`,referral_p8:"지불 메모",referral_p9:"Paypal (세계적인) 또는 계좌이체 (EU) <br> 최소 지급액은 25€입니다.",referral_p10:"지급 요청",referral_p11:"요청된 지불",your_connections:"나의 연결 기록",connections_p1:"사람들과 만나서 탭을 하세요.",connections_p2:"<br><br>지금까지 연결이 없습니다. <br> 탭을 시작해볼까요💥",connections_p3:"연결을 찾을 수 없습니다.",connection_success:"연결 요청을 보냈습니다.",exchange_success:"연락처를 교환했습니다.",create_free_account:"무료 Tapni 계정을 만들고 연락처를 최신 상태로 유지하십시오!",connection_edit:"연결 편집",connection_edit_success:"성공적으로 업데이트된 연결",connection_delete_success:"연결을 삭제했습니다.",search:"검색",devices_p1:"장치 호환성 목록",devices_p2:"탭니는 대부분의 최신 아이폰 및 안드로이드와 호환이 가능합니다.",devices_p3:"일부 안드로이드 폰은 NFC가 꺼져 있을 수 있습니다. 탭니가 안드로이드 장치에서 작동하지 않는 경우 설정에서 NFC를 검색하고 켜져 있는지 확인합니다.",devices_p4:"제어 센터에 iOS 14 NFC 위젯 포함",download_p1:"탭니 앱 다운로드",download_p2:"애플 및 안드로이드 기기에서 사용 가능",user_not_found:"사용자를 찾을 수 없음",user_not_found_p:"데이터베이스에서 사용자를 찾을 수 없습니다.🤷",taps:"탭",private_profile:"개인 프로필",private_profile_p:"은 개인 프로필입니다. <br> 프로필은 탭니 태그에서만 사용하며 표시됩니다.",profile_bio_p:"자기 소개를 해주세요.",add_to_contacts:"연락처에 추가",drag_and_drop_links:"링크를 원하는 순서대로 끌어서 놓기",no_links:"프로필에 링크가 없습니다.",add_link:"링크 추가",direct_link_p1:"방문자는 다음으로 자동 이동됩니다:",profile_not_active:"프로필이 현재 활성화되지 않았습니다. <br> 로그인을 해야 볼 수 있어요.",profile_not_public:"프로필이 현재 공개되지 않았습니다. <br> 누르신 분들만 볼 수 있습니다.",activate_profile_now:"프로필 활성화 완료",publish_profile_now:"지금 프로필을 공개하십시오.",link_add_p1:"링크 유형 선택",link_add_not_found:"링크를 찾을 수 없습니다. 🤷",link_add_not_found_p2:"즐겨찾는 플랫폼을 놓치셨다면, 저희에게 이메일을 보내주시기 바랍니다. (<b>support@tapni.com</b>) 아니면 소셜 미디어로 DM을 해주세요.(<b>@tapni</b>)",link_add_not_found_p3:"모든 플랫폼을 지원할 수 있도록 최선을 다하겠습니다. 😉",featured:"피처링",social_media:"소셜 미디어",contact:"연락처",finance:"금융",portfolio:"포트폴리오",music:"음악",business:"비지니스",fun:"재미",ecommerce:"전자상거래",more:"더 보기",email_username:"이메일 / 사용자 이름",username:"사용자 이름",password:"비밀번호",sign_in:"로그인",sign_in_with:"로그인",sign_in_with_new:"새 계정으로 로그인",sign_up_with:"등록하기",select_sign_method:"로그인 방법 선택",verify_account:"계정 확인",terms_by_signing_in:"회원님의 동의로 회원가입을 합니다.",terms_by_registering:"동의하시면 등록하여 주십시오.",terms_by_submitting:"이 양식을 제출하면 서비스 약관에 동의하는 것입니다",terms_of_service:"서비스 약관",and:"그리고",refresh:"새로 고침",privacy_policy:"개인 정보 보호 정책",create_account:"계정 만들기",reset_password:"비밀번호 재설정",reset_password_p1:"암호를 재설정할 수 없으면, <br> 언제든지 다음 주소로 연락하십시오.",reset_password_p2:"암호를 재설정할 수 없으면, <br> 언제든지 다음 주소로 연락하십시오.",create_new_account:"새 계정 만들기",maintenance_p1:"우리는 곧 돌아올 것이다.",maintenance_p2:"그동안 탭니 컬렉션 살펴보기",maintenance_p3:"탭니는 예정된 점검으로 인하여 잠시 중단되었습니다. <br> 몇 분 내로 다시 온라인 상태가 될 것입니다.",offline_p1:"인터넷에 연결되지 않음",offline_p2:"연결을 확인한 다음 페이지를 새로 고치십시오.",offline_p3_1:"오프라인일 때 이 QR 코드를 사용하여 연락처 카드를 공유할 수 있습니다.",offline_p3_2:"",products_p1:"만나는 모든 사람에게 깊은 인상을 남깁니다. 😎 <br> 지금 바로 구입하십시오 👇",cards:"카드",stickers:"스티커",keychains:"키 체인",explore_collection:"컬렉션 탐색",register:"등록",register_success:"거의 다 완료하였습니다. 이메일을 확인해 주세요.",register_success_modal:"다른 계정으로 로그인했습니다.",check_your_inbox:"첫 번째 링크를 추가 해 주세요.",tapni_tags:"탭니 태그",tapni_tags_p1:"프로필에 연결된 태그 구성",tapni_tags_p2:"프로필에 연결된 태그가 없습니다. <br> 지금 연결하세요!",verify_account_p1:"코드를 받지 못한 경우 다음을 확인하십시오. <br> 스팸 폴더 또는 연락주세요:",verify_account_success:"계정을 확인했습니다. 지금 비밀번호를 변경해 주세요.",verify_account_success2:"계정을 확인했습니다. 모두 완료 되었습니다.!🥳",welcome:"반갑습니다.",welcome_p1:"비지니스 카드의 미래까지",how_it_works:"작동 방식",already_registered:"이미 등록되어있습니다",error:"오류",success:"성공",copied:"클립보드에 복사됨",connect_validate:"두 개의 연락처 필드 중 하나를 제공해야 합니다.",connect_validate_name:"이름을 입력하십시오.",connect_validate_email:"유효한 이메일을 입력하세요",link_validate:"잘못된 링크 데이터입니다.",link_text_contact_card:"연락처 카드",link_text_custom_link:"사용자 지정 링크",link_text_menu:"메뉴",link_text_phone:"휴대폰",save_to_apple_wallet:"Apple 지갑에 저장",save_to_google_wallet:"Google 지갑에 저장",card:"카드",sticker:"상표",keychain:"키체인",band:"밴드",case:"사례",standee:"서다",decoded:"Decoded",wristbanditz:"Wristbanditz",update_p1:"오래된 앱 버전이 감지되었습니다",update_p2:"업데이트",update_p3:"앱을 최신 버전으로 업데이트하세요",company_domain:"귀하의 회사 도메인",search_company_domain:"회사 도메인 검색",enter_company_email:"회사 이메일을 입력하세요",company_not_found:"회사를 찾을 수 없음",ik_company_domain:"회사 도메인을 알고 있습니다",idk_company_domain:"회사 도메인을 모릅니다",continue:"계속",forbidden_rule:"이 옵션은 비활성화되어 있습니다. 회사 관리자에게 문의하십시오.",companyName:"회사 이름",createMarkerPlaceholder:"마커 생성 또는 선택",clickToCreateMarker:"마커를 만들려면 여기를 클릭하세요.",pleaseInviteUser:"데이터를 동기화하려면 사용자를 Tapni에 가입하도록 초대하세요.",connectionSynchronized:"연결 데이터가 자동으로 동기화됩니다.",viewProfile:"프로필보기",createConnectionHeader:"새 연결 추가",createConnectionButton:"추가하다",createConnectionSuccess:"연결이 생성되었습니다.",allow_company_management:"회사 관리 허용",company_join_request:"이 귀하의 프로필을 관리하고 이를 기업 계정에 연결하도록 요청하고 있습니다.",account_ownership_transfer:"귀하가 요청을 수락하면 귀하의 계정 소유권이 회사로 이전됩니다. 회사는 귀하의 프로필을 수정하고, 링크를 편집 및 추가하고, 연결을 확인하고, 비밀번호를 수정하고, 계정을 삭제하는 등의 작업을 수행할 수 있습니다. 요청을 수락하기 전에 회사에 확인하십시오.",request_expired:"요청이 만료되었습니다. 회사에 새 요청을 보내도록 요청하십시오.",request_expiration_desc:"보안 강화를 위해 요청은 전송된 후 14일 동안만 작동합니다.",invitation_link_not_valid:"초대 링크가 유효하지 않습니다!",invitation_link_not_valid2:"초대 이메일에서 버튼을 다시 클릭하거나 초대 링크를 복사합니다.",accept_request:"요청 수락",close:"닫다",request_accepted:"요청이 성공적으로 수락되었습니다.",companyEmail:"회사 이메일",companyPhone:"회사 전화",addBusinessInformations:"비즈니스 정보 추가",resetFilter:"초기화",selectMarkers:"마커 선택",filterConnectionsHeader:"필터 연결",selectConnectionType:"연결 유형 선택",all:"모두",direct:"직접",form:"형태",manually:"수동으로",scan:"주사",sortOptions:"정렬 옵션",date:"제작 일",fullName:"성명",descending:"내림차순",ascending:"오름차순",selectDateRange:"날짜 범위 선택",follow_up_reminder:"후속 알림",now:"지금",one_hour:"1 토",one_day:"1 일",three_days:"3 일",one_week:"일주",two_weeks:"이주",one_month:"개월",custom:"시간 선택",set_reminder:"알림 설정",select_date_time:"날짜 및 시간 선택",enter_reminder_text:"알림 텍스트 입력",reminder_created:"알림이 생성되었습니다.",connectionNameLabel:"연결 이름 입력",connectionEmailLabel:"개인 이메일 주소 입력",privatePhoneLabel:"개인 전화번호 입력",companyNameLabel:"회사 이름 입력",businessEmail:"비즈니스 이메일 주소",businessEmailLabel:"비즈니스 이메일 주소 입력",businessPhone:"회사 전화번호",businessPhoneLabel:"회사 전화번호 입력",noteLabel:"메모 입력",markersLabel:"연결 마커 추가",showScan:"스캔 표시",hideScan:"스캔 숨기기",create_connection:"연결 추가",create_manually:"수동으로 추가",create_using_scanner:"카드 스캐너를 사용하여 추가",companyTitle:"회사명",companyTitleLabel:"회사명 입력",allConnectionsLabel:"모든 연결 유형",directConnectionsLabel:"Tapni 사용자와 직접 앱 내 연결",formConnectionsLabel:"연결 양식에 채워진 연결",manualConnectionsLabel:"수동으로 생성된 연결",scanConnectionsLabel:"카드 스캐너가 연결을 생성했습니다.",analyticsHeader:"분석",analyticsProfileViews:"프로필 보기",analyticsLinkClicks:"링크 클릭 수",analyticsClickTroughRatio:"트로프 비율 클릭",analyticsTotalConnections:"총 연결 수",analyticsTopLinks:"가장 인기 있는 링크",analyticsProfileVisits:"프로필 방문",analyticsLinkVisits:"링크 방문",analyticsNewConnections:"새로운 연결",analyticsTopCountries:"상위 국가",analyticsTopReferers:"상위 추천인",please_wait:"잠시만 기다려 주세요...",click_here:"여기를 클릭하세요",if_redirect_not_directly:"리디렉션이 자동으로 수행되지 않는 경우",you_will_be_redirected:"Tapni 애플리케이션으로 리디렉션됩니다.",use_tapni_on_the_web:"웹에서 Tapni 사용하기",login_by_scanning_qr_code:"QR 코드 스캔하여 로그인하기",open_tapni_app_on_your_phone:"1. 휴대폰에서 Tapni 앱 열기",go_to_settings_link_a_device:"2. 설정 > 장치 연결로 이동하기",point_your_phone_at_this_qr_code:"3. 휴대폰을 이 QR 코드에 맞추기",choose_other_login_methods:"다른 로그인 방법 선택하기",no_sso_logins:"귀하의 회사는 SSO 로그인을 사용하지 않습니다. 관리자에게 문의하십시오."}},po={computed:{home(){return this.$storage&&this.$storage.token&&this.$storage.username?"/"+this.$storage.username:"/welcome"},isAndroid(){return/Android/i.test(navigator.userAgent)||Re.Capacitor.getPlatform()==="android"},isiOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document||Re.Capacitor.getPlatform()==="ios"},isNative(){return Re.Capacitor.isNativePlatform()}},methods:{errorHandler(n){return n&&n.response&&n.response.data&&n.response.data.error&&((n.response.data.error==="ACCESS_DENIED"||n.response.data.error==="TOKEN_EXPIRED")&&this.logout(),!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)),n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},tapsEmoji(n){return n<10?"":n<=50?"🔥":n<=100?"💥":n<=300?"💎":n>300?"🚀":""},isEmpty(n){if(!n)return!0;for(let e in n)if(n.hasOwnProperty(e))return!1;return JSON.stringify(n)===JSON.stringify({})},copy(n=""){const e=document.createElement("textarea");e.value=n,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.successSnack(this.ssoLang[this.appLanguage].copied)},async getCaptchaToken(n){try{return await window.grecaptcha.execute("6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",{action:n})}catch(e){return console.log(e),null}}}};var ho={VITE_APP_MODE:"npm",VITE_APP_APP_ROOT:"https://t.link",VITE_APP_API_ROOT:"https://api.tapni.co",VITE_APP_GOOGLE_RECAPTCHA_SITE_KEY:"6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",VITE_APP_SSO_ID:"9cd47053-080a-4df8-8fd8-ca4389163fde",VITE_APP_POPUP_LOGIN_ALLOWED_ORIGIN:"https://auth.tapni.com",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const Ne={mixins:[po],data(){return{appLanguage:"en",token:"",refreshToken:"",refreshing:"",loggedInUserId:"",ssoUser:{},ssoCompany:{},device:{},loggedInAccounts:{},ssoLang:{en:Qn.state,de:Yn.state,es:Wn.state,fr:$n.state,it:Jn.state,sr:Xn.state,tr:Zn.state,cn:uo.state,kr:er.state},display:"npm",redirect_uri:"https://t.link/callback/auth",response_type:"token",state:"",allowedOrigins:["https://business.tapni.com","https://business-dev.tapni.com","https://tapni.com","https://tapni.co","https://t.link","https://my.tapni.com","https://my.tapni.co","https://dev.tapni.co","https://dev.tapni.com","https://auth.tapni.com","https://auth.tapni.co","https://mailsign.link","https://sign.tapni.com","https://qrcodetoolkit.com","https://qr.tapni.com","https://designer.tapni.com","https://designer-dev.tapni.com"]}},computed:{isLoggedIn(){return!!this.token&&this.token!==""&&this.token!=="null"},renderView(){return this.display==="redirect"?!1:this.view}},mounted(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),z.$on("updateLang",this.updateLang),ho.NODE_ENV==="development"&&(this.allowedOrigins.push("http://localhost:8082"),this.allowedOrigins.push("http://localhost:7777"),this.allowedOrigins.push("http://localhost:5173"))},methods:{errorHandler(n){if(n&&n.response&&n.response.data&&n.response.data.error){if(n.response.data.error==="ACCESS_DENIED")return this.logout();!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("TOKEN_EXPIRED")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)}return n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},async eventLog(n){const[e,t]=await $(mt.eventLog(n,this.$storage));return e?this.errorHandler(e):t},async maintenance(){const[n,e]=await $(fn.get("https://status.tapni.co/data/maintenance.json"));if(n)return console.error(n);if(e){let t=e.data;typeof e.data=="string"&&(t=JSON.parse(e.data)),t.api&&t.api.maintenanceActive&&(location.href="https://t.link/maintenance?msg="+t.api.msg)}},async getUser(n){if(n){let e,t;if(n.username?[e,t]=await $(mt.getByUsername(n,this.$storage)):n.serial&&([e,t]=await $(mt.getByNumber(n,this.$storage))),e)return this.errorHandler(e);if(t.data.success){if(!t.data.user&&t.data.showDemoProfile){if(this.isLoggedIn)throw this.$router.push("/tags#activate"),new Error("Activate the tag");return this.$router.push("/"+t.data.showDemoProfile)}!t.data.user&&n.login&&this.logout(),this.registerLang(t.data.user?t.data.user.ssoLang:"en"),this.setUser(t.data.user)}}},async loginSetup(n){n.data.refreshToken&&this.setRefreshToken(n.data.refreshToken),n.data.token&&this.setToken(n.data.token),this.setLoggedInUserId(n.data.data.id),this.$storage.UserId=n.data.data.id,this.$storage.username=n.data.data.username,n.isModal===!0&&this.setLoggedInAccounts([{id:n.data.data.id,username:n.data.data.username,refreshToken:n.data.refreshToken,photo:n.data.data.photo}])},async switchAccount(n){this.$storage.username=n,this.$storage.UserId=this.loggedInAccounts[n].id,this.setLoggedInUserId(this.loggedInAccounts[n].id),this.setRefreshToken(this.loggedInAccounts[n].refreshToken),await this.refreshTokenAction({id:this.loggedInAccounts[n].id}),z.$emit("ssoEvent",{name:"switchAccount",data:{lang:this.appLanguage,username:n}})},async refreshTokenAction(n){return new Promise(async(e,t)=>{if(!this.refreshToken||this.refreshing)return e(null);this.refreshing=!0;const[r,o]=await $(be.refreshToken({id:n.id,refreshToken:this.refreshToken,refreshTokenAction:async()=>await this.refreshTokenAction},this.$storage));if(r&&r.response&&r.response.data.error==="ACCESS_DENIED")return this.logout(!1),location.reload();o&&o.data?(this.setToken(o.data.token),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),e(o.data.token)):t("Invalid response setToken"),this.refreshing=!1})},async login(n){const[e,t]=await $(be.login(n,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return this.display==="npm"&&(this.loginSetup({...t,isModal:n.isModal}),await this.getLoggedInAccounts()),this.loginSuccess({...t,isModal:n.isModal}),!0},loginSuccess(n){if(this.display==="redirect"){if(this.redirect_uri&&!this.allowedOrigins.some(e=>this.redirect_uri.startsWith(e)))return console.error("Redirect URI not allowed");location.href=this.redirect_uri+"?code="+n.data.auth_code+"&state="+this.state}else this.display==="popup"?this.allowedOrigins.forEach(e=>{var t;(t=window.parent)==null||t.postMessage({code:n.data.auth_code,state:this.$route.query.state},e)}):this.display==="npm"&&(z.$emit("ssoEvent",{name:"setLoading",data:!0}),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),z.$emit("ssoEvent",{name:"getUser",data:{login:!0,username:n.data.data.username}}),n.isModal&&(z.$emit("closeModal"),this.successSnack(this.ssoLang[this.appLanguage].success_login)),this.$router.push("/"+n.data.data.username+"#edit"))},async register(n){const[e,t]=await $(be.register(n,this.$storage));return e?this.errorHandler(e):t},async verify(n){const[e,t]=await $(be.verify(n,this.$storage));return e?this.errorHandler(e):t},async reset(n){const[e,t]=await $(be.sendResetEmail(n,this.$storage));if(e)return this.errorHandler(e);t.data.success&&this.successSnack(this.ssoLang[this.appLanguage].password_reset_success)},async exchangeAuthCode(n){const[e,t]=await $(be.exchangeAuthCode(n,this.$storage));if(e)return this.errorHandler(e);await this.loginSetup(t),await this.getLoggedInAccounts(),this.loginSuccess(t)},async changePassword(n){const[e,t]=await $(be.changePassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async newPassword(n){const[e,t]=await $(mt.newPassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async deleteAccount(n){const[e,t]=await $(mt.deleteAccount(n,this.$storage));return e?this.errorHandler(e):t.data.success},async registerDevice(){const n=await Vt.Device.getId(),e=await Vt.Device.getInfo();let t={device_id:n.uuid,platform:e.platform,device_info:{model:e.model,manufacturer:e.manufacturer,operatingSystem:e.operatingSystem,osVersion:e.osVersion,isVirtual:e.isVirtual,webViewVersion:e.webViewVersion}};const[r,o]=await $(Gn.registerDevice(t,this.$storage));return r?this.errorHandler(r):o},async addFcmToken(n){const[e,t]=await $(Gn.addFcmToken(n,this.$storage));return e?this.errorHandler(e):t},async acceptCompanyInvitation(n){const[e,t]=await $(yn.acceptCompanyInvitation(n,this.$storage));return e?this.errorHandler(e):t},async logout(n=!0){n&&be.logout({token:this.refreshToken},this.$storage),this.$storage&&(this.$storage.username="",this.$storage.ssoUser="",this.$storage.UserId=""),this.setLoggedInUserId(""),this.setToken(""),this.setRefreshToken(""),this.refreshToken?Object.keys(this.loggedInAccounts).forEach(e=>{this.loggedInAccounts[e].refreshToken===this.refreshToken&&this.refreshTokenAction({id:this.loggedInAccounts[e].id}).then(()=>(this.setLoggedInUserId(this.loggedInAccounts[e].id),this.$storage&&(this.$storage.username=e,this.$storage.UserId=this.loggedInAccounts[e].id),this.getLoggedInAccounts(),this.$router.push("/"+e)))}):(this.setUser(null),this.$router.push("/welcome"))},async getCompanyBySSOEmail(n){const[e,t]=await $(yn.getBySSOEmail(n.email,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return t.data},async getLoggedInAccounts(n){if(console.log("getLoggedInAccounts-1"),n||(n=this.getRefreshTokens()),n&&n.length>=1){console.log("getLoggedInAccounts-2");const[e,t]=await $(be.getLoggedInAccounts({refreshTokens:n},this.$storage));if(e)return this.errorHandler(e);t&&t.data&&t.data.success&&this.setLoggedInAccounts(t.data.accounts)}},async loginUsingQR(n){const[e,t]=await $(mt.loginUsingQR(n,this.$storage));return e?this.errorHandler(e):t.data.success},setLoggedInAccounts(n){this.loggedInAccounts={},n.forEach(e=>{this.loggedInAccounts[e.username]=e}),z.$emit("ssoEvent",{name:"setLoggedInAccounts",data:n})},setLoggedInUserId(n){this.loggedInUserId=n},setUser(n){this.ssoUser=n,this.$storage&&this.ssoUser&&this.$storage.username===this.ssoUser.username&&(this.appLanguage=n.ssoLang)},getRefreshTokens(){return this.$storage&&this.$storage.refreshTokens?this.$storage.refreshTokens.split(","):[]},setRefreshToken(n){let e=this.getRefreshTokens();n?(e.includes(n)||e.unshift(n),this.refreshToken=n):(e=e.filter(t=>t!==this.refreshToken),e&&e.length>=1&&(this.refreshToken=e[0])),this.$storage.refreshTokens=e.join(",")},setToken(n){this.$storage.token=n,this.token=n},setUserID(n){this.$storage.UserId=n},updateLang(n){this.appLanguage=n}},watch:{"$route.query":{handler:function(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),this.$route.query.qrLogin&&this.changeLoginToQr()},deep:!0}}},He=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},mo={name:"AuthWelcome",mixins:[Ne],data(){return{loading:!0}},async mounted(){let n=document.getElementById("tapniVideo");n.addEventListener("canplay",function(){document.body.contains(n)&&n.play().catch(e=>{console.log("Play was interrupted:",e)})}),setTimeout(()=>{this.$storage.token?this.$router.push(this.home):z.$emit("ssoEvent",{name:"setLoading",data:!1})},2500)},methods:{}},tr=n=>(c.pushScopeId("data-v-67088d6f"),n=n(),c.popScopeId(),n),go={class:"page-login content-boxed content-boxed-padding center-text",style:{"margin-top":"-1px",overflow:"hidden",border:"solid 0px #ffffff"}},fo=["autoplay"],_o=[tr(()=>c.createElementVNode("source",{src:"https://cdn.tapni.co/images/tapni-card-tap-video-white.mp4",type:"video/mp4"},null,-1))],vo={class:"bold full-top no-bottom center-text"},yo={class:"full-bottom half-top center-text color-black font-16"},ko={class:"page-login-links center-text"},wo=tr(()=>c.createElementVNode("div",{class:"clear"},null,-1)),bo={key:2,style:{display:"flex","flex-direction":"row","justify-content":"space-around",width:"90%",margin:"0 auto","margin-top":"40px"}},Co=[c.createStaticVNode('<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a>',3)];function Eo(n,e,t,r,o,i){const a=c.resolveComponent("router-link");return c.openBlock(),c.createElementBlock("div",go,[c.createElementVNode("video",{id:"tapniVideo",muted:"",loop:"",playsinline:"",width:"350",style:{margin:"0 auto","max-width":"100%","margin-top":"63px",overflow:"hidden"},autoplay:n.isNative},_o,8,fo),c.createElementVNode("h1",vo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome),1),c.createElementVNode("p",yo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome_p1),1),c.createCommentVNode("",!0),c.createCommentVNode("",!0),c.createVNode(a,{to:"register",exact:"",class:"button-center button button-90 google-button bg-tapni-grey pointer"},{default:c.withCtx(()=>[c.createElementVNode("span",null,c.toDisplayString(n.ssoLang[this.appLanguage].create_account),1)]),_:1}),c.createElementVNode("div",ko,[c.createVNode(a,{to:"/login"},{default:c.withCtx(()=>[c.createTextVNode(c.toDisplayString(n.ssoLang[this.appLanguage].already_registered)+"? ",1),c.createElementVNode("b",null,c.toDisplayString(n.ssoLang[this.appLanguage].sign_in),1)]),_:1}),wo]),this.isNative?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock("div",bo,Co))])}const nr=He(mo,[["render",Eo],["__scopeId","data-v-67088d6f"]]),rr=Re.registerPlugin("GoogleAuth",{web:()=>Promise.resolve().then(()=>ql).then(n=>new n.GoogleAuthWeb)}),or={data(){return{googleLoad:!1}},computed:{displayGoogleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.google_login)&&!this.isModal)??!0}},mounted(){rr.initialize()},methods:{async googleLogin(){var t;this.googleLoad=!0;let[n,e]=await $(rr.signIn());if(n)return this.googleLoad=!1;if(this.referral&&(e.ref=this.referral),e.authentication&&(e.authentication.accessToken||e.authentication.idToken)){this.referral&&(e.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await $(be.googleSDK(e,this.$storage));if(r)return this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.googleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},To=Re.registerPlugin("FacebookLogin",{web:()=>Promise.resolve().then(()=>jl).then(n=>new n.FacebookLoginWeb)});window.fbAsyncInit=function(){FB.init({appId:"202577611527680",cookie:!0,xfbml:!0,version:"v16.0"})},function(n,e,t){var r,o=n.getElementsByTagName(e)[0];n.getElementById(t)||(r=n.createElement(e),r.id=t,r.src="https://connect.facebook.net/en_US/sdk.js",o.parentNode.insertBefore(r,o))}(document,"script","facebook-jssdk");const ir={data(){return{facebookLoad:!1}},computed:{fbLoginUrl(){return'https://www.facebook.com/v16.0/dialog/oauth?client_id=202577611527680&state={"oauth":"facebook"}&response_type=code%20granted_scopes&scope=email&redirect_uri=https://'+window.location.host+"/login"},displayFacebookLogin(){return!1}},methods:{async facebookLogin(){var r;this.facebookLoad=!0;const n=["email"],[e,t]=await $(To.login({permissions:n}));if(e)return this.facebookLoad=!1;if(this.referral&&(t.ref=this.referral),this.display==="popup"&&(t.response_type="code"),t&&t.accessToken){const[o,i]=await $(be.facebookSDK(t,this.$storage));if(o)return this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(o);if(i.data.success){if(this.display==="popup")return(r=window.parent)==null?void 0:r.postMessage({code:i.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(i),await this.getLoggedInAccounts(),this.$router.push("/"+i.data.data.username+"#edit"),setTimeout(()=>{this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},Io=Re.registerPlugin("SignInWithApple",{web:()=>Promise.resolve().then(()=>Gl).then(n=>new n.SignInWithAppleWeb)}),ar={data(){return{appleLoad:!1}},computed:{displayAppleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.apple_login)&&!this.isModal)??(Capacitor.isNativePlatform()&&Capacitor.getPlatform()==="ios"||!Capacitor.isNativePlatform()&&this.isiOS)}},methods:{async appleLogin(){var t;this.appleLoad=!0;const[n,e]=await $(Io.authorize({clientId:"co.tapni.applelogin",redirectURI:"https://"+window.location.host+"/login",scopes:"email name"}));if(n)return this.appleLoad=!1;if(e.response.tokenData=Kn.jwtDecode(e.response.identityToken),e&&e.response&&e.response.identityToken){this.referral&&(e.response.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await $(be.appleSDK(e.response,this.$storage));if(r)return this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.appleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}};/*! @azure/msal-browser v2.38.3 2023-10-27 *//*! *****************************************************************************
102
+ 웹 사이트 및 소셜 미디어에 공유하여 돈을 버는 동시에 최고의 연결 경험을 제공하십시오.`,referral_p8:"지불 메모",referral_p9:"Paypal (세계적인) 또는 계좌이체 (EU) <br> 최소 지급액은 25€입니다.",referral_p10:"지급 요청",referral_p11:"요청된 지불",your_connections:"나의 연결 기록",connections_p1:"사람들과 만나서 탭을 하세요.",connections_p2:"<br><br>지금까지 연결이 없습니다. <br> 탭을 시작해볼까요💥",connections_p3:"연결을 찾을 수 없습니다.",connection_success:"연결 요청을 보냈습니다.",exchange_success:"연락처를 교환했습니다.",create_free_account:"무료 Tapni 계정을 만들고 연락처를 최신 상태로 유지하십시오!",connection_edit:"연결 편집",connection_edit_success:"성공적으로 업데이트된 연결",connection_delete_success:"연결을 삭제했습니다.",search:"검색",devices_p1:"장치 호환성 목록",devices_p2:"탭니는 대부분의 최신 아이폰 및 안드로이드와 호환이 가능합니다.",devices_p3:"일부 안드로이드 폰은 NFC가 꺼져 있을 수 있습니다. 탭니가 안드로이드 장치에서 작동하지 않는 경우 설정에서 NFC를 검색하고 켜져 있는지 확인합니다.",devices_p4:"제어 센터에 iOS 14 NFC 위젯 포함",download_p1:"탭니 앱 다운로드",download_p2:"애플 및 안드로이드 기기에서 사용 가능",user_not_found:"사용자를 찾을 수 없음",user_not_found_p:"데이터베이스에서 사용자를 찾을 수 없습니다.🤷",taps:"탭",private_profile:"개인 프로필",private_profile_p:"은 개인 프로필입니다. <br> 프로필은 탭니 태그에서만 사용하며 표시됩니다.",profile_bio_p:"자기 소개를 해주세요.",add_to_contacts:"연락처에 추가",drag_and_drop_links:"링크를 원하는 순서대로 끌어서 놓기",no_links:"프로필에 링크가 없습니다.",add_link:"링크 추가",direct_link_p1:"방문자는 다음으로 자동 이동됩니다:",profile_not_active:"프로필이 현재 활성화되지 않았습니다. <br> 로그인을 해야 볼 수 있어요.",profile_not_public:"프로필이 현재 공개되지 않았습니다. <br> 누르신 분들만 볼 수 있습니다.",activate_profile_now:"프로필 활성화 완료",publish_profile_now:"지금 프로필을 공개하십시오.",link_add_p1:"링크 유형 선택",link_add_not_found:"링크를 찾을 수 없습니다. 🤷",link_add_not_found_p2:"즐겨찾는 플랫폼을 놓치셨다면, 저희에게 이메일을 보내주시기 바랍니다. (<b>support@tapni.com</b>) 아니면 소셜 미디어로 DM을 해주세요.(<b>@tapni</b>)",link_add_not_found_p3:"모든 플랫폼을 지원할 수 있도록 최선을 다하겠습니다. 😉",featured:"피처링",social_media:"소셜 미디어",contact:"연락처",finance:"금융",portfolio:"포트폴리오",music:"음악",business:"비지니스",fun:"재미",ecommerce:"전자상거래",more:"더 보기",email_username:"이메일 / 사용자 이름",username:"사용자 이름",password:"비밀번호",sign_in:"로그인",sign_in_with:"로그인",sign_in_with_new:"새 계정으로 로그인",sign_up_with:"등록하기",select_sign_method:"로그인 방법 선택",verify_account:"계정 확인",terms_by_signing_in:"회원님의 동의로 회원가입을 합니다.",terms_by_registering:"동의하시면 등록하여 주십시오.",terms_by_submitting:"이 양식을 제출하면 서비스 약관에 동의하는 것입니다",terms_of_service:"서비스 약관",and:"그리고",refresh:"새로 고침",privacy_policy:"개인 정보 보호 정책",create_account:"계정 만들기",reset_password:"비밀번호 재설정",reset_password_p1:"암호를 재설정할 수 없으면, <br> 언제든지 다음 주소로 연락하십시오.",reset_password_p2:"암호를 재설정할 수 없으면, <br> 언제든지 다음 주소로 연락하십시오.",create_new_account:"새 계정 만들기",maintenance_p1:"우리는 곧 돌아올 것이다.",maintenance_p2:"그동안 탭니 컬렉션 살펴보기",maintenance_p3:"탭니는 예정된 점검으로 인하여 잠시 중단되었습니다. <br> 몇 분 내로 다시 온라인 상태가 될 것입니다.",offline_p1:"인터넷에 연결되지 않음",offline_p2:"연결을 확인한 다음 페이지를 새로 고치십시오.",offline_p3_1:"오프라인일 때 이 QR 코드를 사용하여 연락처 카드를 공유할 수 있습니다.",offline_p3_2:"",products_p1:"만나는 모든 사람에게 깊은 인상을 남깁니다. 😎 <br> 지금 바로 구입하십시오 👇",cards:"카드",stickers:"스티커",keychains:"키 체인",explore_collection:"컬렉션 탐색",register:"등록",register_success:"거의 다 완료하였습니다. 이메일을 확인해 주세요.",register_success_modal:"다른 계정으로 로그인했습니다.",check_your_inbox:"첫 번째 링크를 추가 해 주세요.",tapni_tags:"탭니 태그",tapni_tags_p1:"프로필에 연결된 태그 구성",tapni_tags_p2:"프로필에 연결된 태그가 없습니다. <br> 지금 연결하세요!",verify_account_p1:"코드를 받지 못한 경우 다음을 확인하십시오. <br> 스팸 폴더 또는 연락주세요:",verify_account_success:"계정을 확인했습니다. 지금 비밀번호를 변경해 주세요.",verify_account_success2:"계정을 확인했습니다. 모두 완료 되었습니다.!🥳",welcome:"반갑습니다.",welcome_p1:"비지니스 카드의 미래까지",how_it_works:"작동 방식",already_registered:"이미 등록되어있습니다",error:"오류",success:"성공",copied:"클립보드에 복사됨",connect_validate:"두 개의 연락처 필드 중 하나를 제공해야 합니다.",connect_validate_name:"이름을 입력하십시오.",connect_validate_email:"유효한 이메일을 입력하세요",link_validate:"잘못된 링크 데이터입니다.",link_text_contact_card:"연락처 카드",link_text_custom_link:"사용자 지정 링크",link_text_menu:"메뉴",link_text_phone:"휴대폰",save_to_apple_wallet:"Apple 지갑에 저장",save_to_google_wallet:"Google 지갑에 저장",card:"카드",sticker:"상표",keychain:"키체인",band:"밴드",case:"사례",standee:"서다",decoded:"Decoded",wristbanditz:"Wristbanditz",update_p1:"오래된 앱 버전이 감지되었습니다",update_p2:"업데이트",update_p3:"앱을 최신 버전으로 업데이트하세요",company_domain:"귀하의 회사 도메인",search_company_domain:"회사 도메인 검색",enter_company_email:"회사 이메일을 입력하세요",company_not_found:"회사를 찾을 수 없음",ik_company_domain:"회사 도메인을 알고 있습니다",idk_company_domain:"회사 도메인을 모릅니다",continue:"계속",forbidden_rule:"이 옵션은 비활성화되어 있습니다. 회사 관리자에게 문의하십시오.",companyName:"회사 이름",createMarkerPlaceholder:"마커 생성 또는 선택",clickToCreateMarker:"마커를 만들려면 여기를 클릭하세요.",pleaseInviteUser:"데이터를 동기화하려면 사용자를 Tapni에 가입하도록 초대하세요.",connectionSynchronized:"연결 데이터가 자동으로 동기화됩니다.",viewProfile:"프로필보기",createConnectionHeader:"새 연결 추가",createConnectionButton:"추가하다",createConnectionSuccess:"연결이 생성되었습니다.",allow_company_management:"회사 관리 허용",company_join_request:"이 귀하의 프로필을 관리하고 이를 기업 계정에 연결하도록 요청하고 있습니다.",account_ownership_transfer:"귀하가 요청을 수락하면 귀하의 계정 소유권이 회사로 이전됩니다. 회사는 귀하의 프로필을 수정하고, 링크를 편집 및 추가하고, 연결을 확인하고, 비밀번호를 수정하고, 계정을 삭제하는 등의 작업을 수행할 수 있습니다. 요청을 수락하기 전에 회사에 확인하십시오.",request_expired:"요청이 만료되었습니다. 회사에 새 요청을 보내도록 요청하십시오.",request_expiration_desc:"보안 강화를 위해 요청은 전송된 후 14일 동안만 작동합니다.",invitation_link_not_valid:"초대 링크가 유효하지 않습니다!",invitation_link_not_valid2:"초대 이메일에서 버튼을 다시 클릭하거나 초대 링크를 복사합니다.",accept_request:"요청 수락",close:"닫다",request_accepted:"요청이 성공적으로 수락되었습니다.",companyEmail:"회사 이메일",companyPhone:"회사 전화",addBusinessInformations:"비즈니스 정보 추가",resetFilter:"초기화",selectMarkers:"마커 선택",filterConnectionsHeader:"필터 연결",selectConnectionType:"연결 유형 선택",all:"모두",direct:"직접",form:"형태",manually:"수동으로",scan:"주사",sortOptions:"정렬 옵션",date:"제작 일",fullName:"성명",descending:"내림차순",ascending:"오름차순",selectDateRange:"날짜 범위 선택",follow_up_reminder:"후속 알림",now:"지금",one_hour:"1 토",one_day:"1 일",three_days:"3 일",one_week:"일주",two_weeks:"이주",one_month:"개월",custom:"시간 선택",set_reminder:"알림 설정",select_date_time:"날짜 및 시간 선택",enter_reminder_text:"알림 텍스트 입력",reminder_created:"알림이 생성되었습니다.",connectionNameLabel:"연결 이름 입력",connectionEmailLabel:"개인 이메일 주소 입력",privatePhoneLabel:"개인 전화번호 입력",companyNameLabel:"회사 이름 입력",businessEmail:"비즈니스 이메일 주소",businessEmailLabel:"비즈니스 이메일 주소 입력",businessPhone:"회사 전화번호",businessPhoneLabel:"회사 전화번호 입력",noteLabel:"메모 입력",markersLabel:"연결 마커 추가",showScan:"스캔 표시",hideScan:"스캔 숨기기",create_connection:"연결 추가",create_manually:"수동으로 추가",create_using_scanner:"카드 스캐너를 사용하여 추가",companyTitle:"회사명",companyTitleLabel:"회사명 입력",allConnectionsLabel:"모든 연결 유형",directConnectionsLabel:"Tapni 사용자와 직접 앱 내 연결",formConnectionsLabel:"연결 양식에 채워진 연결",manualConnectionsLabel:"수동으로 생성된 연결",scanConnectionsLabel:"카드 스캐너가 연결을 생성했습니다.",analyticsHeader:"분석",analyticsProfileViews:"프로필 보기",analyticsLinkClicks:"링크 클릭 수",analyticsClickTroughRatio:"트로프 비율 클릭",analyticsTotalConnections:"총 연결 수",analyticsTopLinks:"가장 인기 있는 링크",analyticsProfileVisits:"프로필 방문",analyticsLinkVisits:"링크 방문",analyticsNewConnections:"새로운 연결",analyticsTopCountries:"상위 국가",analyticsTopReferers:"상위 추천인",please_wait:"잠시만 기다려 주세요...",click_here:"여기를 클릭하세요",if_redirect_not_directly:"리디렉션이 자동으로 수행되지 않는 경우",you_will_be_redirected:"Tapni 애플리케이션으로 리디렉션됩니다.",use_tapni_on_the_web:"웹에서 Tapni 사용하기",login_by_scanning_qr_code:"QR 코드 스캔하여 로그인하기",open_tapni_app_on_your_phone:"1. 휴대폰에서 Tapni 앱 열기",go_to_settings_link_a_device:"2. 설정 > 장치 연결로 이동하기",point_your_phone_at_this_qr_code:"3. 휴대폰을 이 QR 코드에 맞추기",choose_other_login_methods:"다른 로그인 방법 선택하기",no_sso_logins:"귀하의 회사는 SSO 로그인을 사용하지 않습니다. 관리자에게 문의하십시오."}},po={computed:{home(){return this.$storage&&this.$storage.token&&this.$storage.username?"/"+this.$storage.username:"/welcome"},isAndroid(){return/Android/i.test(navigator.userAgent)||Re.Capacitor.getPlatform()==="android"},isiOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document||Re.Capacitor.getPlatform()==="ios"},isNative(){return Re.Capacitor.isNativePlatform()}},methods:{errorHandler(n){return n&&n.response&&n.response.data&&n.response.data.error&&((n.response.data.error==="ACCESS_DENIED"||n.response.data.error==="TOKEN_EXPIRED")&&this.logout(),!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)),n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},tapsEmoji(n){return n<10?"":n<=50?"🔥":n<=100?"💥":n<=300?"💎":n>300?"🚀":""},isEmpty(n){if(!n)return!0;for(let e in n)if(n.hasOwnProperty(e))return!1;return JSON.stringify(n)===JSON.stringify({})},copy(n=""){const e=document.createElement("textarea");e.value=n,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.successSnack(this.ssoLang[this.appLanguage].copied)},async getCaptchaToken(n){try{return await window.grecaptcha.execute("6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",{action:n})}catch(e){return console.log(e),null}}}};var ho={VITE_APP_MODE:"npm",VITE_APP_APP_ROOT:"https://t.link",VITE_APP_API_ROOT:"https://api.tapni.co",VITE_APP_GOOGLE_RECAPTCHA_SITE_KEY:"6LenkC0mAAAAADWBxPOhpmwXCwzCJd7cilNgtOLk",VITE_APP_SSO_ID:"9cd47053-080a-4df8-8fd8-ca4389163fde",VITE_APP_POPUP_LOGIN_ALLOWED_ORIGIN:"https://auth.tapni.com",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const Ne={mixins:[po],data(){return{appLanguage:"en",token:"",refreshToken:"",refreshing:"",loggedInUserId:"",ssoUser:{},ssoCompany:{},device:{},loggedInAccounts:{},ssoLang:{en:Qn.state,de:Yn.state,es:Wn.state,fr:$n.state,it:Jn.state,sr:Xn.state,tr:Zn.state,cn:uo.state,kr:er.state},display:"npm",redirect_uri:"https://t.link/callback/auth",response_type:"token",state:"",allowedOrigins:["https://business.tapni.com","https://business-dev.tapni.com","https://tapni.com","https://tapni.co","https://t.link","https://my.tapni.com","https://my.tapni.co","https://dev.tapni.co","https://dev.tapni.com","https://auth.tapni.com","https://auth.tapni.co","https://mailsign.link","https://sign.tapni.com","https://qrcodetoolkit.com","https://qr.tapni.com","https://designer.tapni.com","https://designer-dev.tapni.com"]}},computed:{isLoggedIn(){return!!this.token&&this.token!==""&&this.token!=="null"},renderView(){return this.display==="redirect"?!1:this.view}},mounted(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),z.$on("updateLang",this.updateLang),ho.NODE_ENV==="development"&&(this.allowedOrigins.push("http://localhost:8082"),this.allowedOrigins.push("http://localhost:7777"),this.allowedOrigins.push("http://localhost:5173"))},methods:{errorHandler(n){if(n&&n.response&&n.response.data&&n.response.data.error){if(n.response.data.error==="ACCESS_DENIED")return this.logout();!n.response.data.error.includes("Network Error")&&!n.response.data.error.includes("TOKEN_EXPIRED")&&!n.response.data.error.includes("Cannot read properties")&&this.errorSnack(n.response.data.error)}return n},errorSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("errorMessage"),r=document.getElementById("errorSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},successSnack(n){let e=document.getElementById("snackbar"),t=document.getElementById("successMessage"),r=document.getElementById("successSnack");t.innerHTML=n,e.classList.add("show-snack"),r.classList.add("active-snack"),setTimeout(function(){r.classList.remove("active-snack"),e.classList.remove("show-snack")},3e3)},closeSnacks(){document.getElementById("snackbar").classList.remove("show-snack"),document.getElementById("successSnack").classList.remove("active-snack"),document.getElementById("errorSnack").classList.remove("active-snack")},async eventLog(n){const[e,t]=await $(mt.eventLog(n,this.$storage));return e?this.errorHandler(e):t},async maintenance(){const[n,e]=await $(fn.get("https://status.tapni.co/data/maintenance.json"));if(n)return console.error(n);if(e){let t=e.data;typeof e.data=="string"&&(t=JSON.parse(e.data)),t.api&&t.api.maintenanceActive&&(location.href="https://t.link/maintenance?msg="+t.api.msg)}},async getUser(n){if(n){let e,t;if(n.username?[e,t]=await $(mt.getByUsername(n,this.$storage)):n.serial&&([e,t]=await $(mt.getByNumber(n,this.$storage))),e)return this.errorHandler(e);if(t.data.success){if(!t.data.user&&t.data.showDemoProfile){if(this.isLoggedIn)throw this.$router.push("/tags#activate"),new Error("Activate the tag");return this.$router.push("/"+t.data.showDemoProfile)}!t.data.user&&n.login&&this.logout(),this.registerLang(t.data.user?t.data.user.ssoLang:"en"),this.setUser(t.data.user)}}},async loginSetup(n){n.data.refreshToken&&this.setRefreshToken(n.data.refreshToken),n.data.token&&this.setToken(n.data.token),this.setLoggedInUserId(n.data.data.id),this.$storage.UserId=n.data.data.id,this.$storage.username=n.data.data.username,n.isModal===!0&&this.setLoggedInAccounts([{id:n.data.data.id,username:n.data.data.username,refreshToken:n.data.refreshToken,photo:n.data.data.photo}])},async switchAccount(n){this.$storage.username=n,this.$storage.UserId=this.loggedInAccounts[n].id,this.setLoggedInUserId(this.loggedInAccounts[n].id),this.setRefreshToken(this.loggedInAccounts[n].refreshToken),await this.refreshTokenAction({id:this.loggedInAccounts[n].id}),z.$emit("ssoEvent",{name:"switchAccount",data:{lang:this.appLanguage,username:n}})},async refreshTokenAction(n){return new Promise(async(e,t)=>{if(!this.refreshToken||this.refreshing)return e(null);this.refreshing=!0;const[r,o]=await $(be.refreshToken({id:n.id,refreshToken:this.refreshToken,refreshTokenAction:()=>this.refreshTokenAction},this.$storage));if(r&&r.response&&r.response.data.error==="ACCESS_DENIED")return this.logout(!1),location.reload();o&&o.data?(this.setToken(o.data.token),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),e(o.data.token)):t("Invalid response setToken"),this.refreshing=!1})},async login(n){const[e,t]=await $(be.login(n,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return this.display==="npm"&&(this.loginSetup({...t,isModal:n.isModal}),await this.getLoggedInAccounts()),this.loginSuccess({...t,isModal:n.isModal}),!0},loginSuccess(n){if(this.display==="redirect"){if(this.redirect_uri&&!this.allowedOrigins.some(e=>this.redirect_uri.startsWith(e)))return console.error("Redirect URI not allowed");location.href=this.redirect_uri+"?code="+n.data.auth_code+"&state="+this.state}else this.display==="popup"?this.allowedOrigins.forEach(e=>{var t;(t=window.parent)==null||t.postMessage({code:n.data.auth_code,state:this.$route.query.state},e)}):this.display==="npm"&&(z.$emit("ssoEvent",{name:"setLoading",data:!0}),z.$emit("ssoEvent",{name:"setStorage",data:this.$storage}),z.$emit("ssoEvent",{name:"getUser",data:{login:!0,username:n.data.data.username}}),n.isModal&&(z.$emit("closeModal"),this.successSnack(this.ssoLang[this.appLanguage].success_login)),this.$router.push("/"+n.data.data.username+"#edit"))},async register(n){const[e,t]=await $(be.register(n,this.$storage));return e?this.errorHandler(e):t},async verify(n){const[e,t]=await $(be.verify(n,this.$storage));return e?this.errorHandler(e):t},async reset(n){const[e,t]=await $(be.sendResetEmail(n,this.$storage));if(e)return this.errorHandler(e);t.data.success&&this.successSnack(this.ssoLang[this.appLanguage].password_reset_success)},async exchangeAuthCode(n){const[e,t]=await $(be.exchangeAuthCode(n,this.$storage));if(e)return this.errorHandler(e);await this.loginSetup(t),await this.getLoggedInAccounts(),this.loginSuccess(t)},async changePassword(n){const[e,t]=await $(be.changePassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async newPassword(n){const[e,t]=await $(mt.newPassword(n,this.$storage));return e?this.errorHandler(e):t.data.success},async deleteAccount(n){const[e,t]=await $(mt.deleteAccount(n,this.$storage));return e?this.errorHandler(e):t.data.success},async registerDevice(){const n=await Vt.Device.getId(),e=await Vt.Device.getInfo();let t={device_id:n.uuid,platform:e.platform,device_info:{model:e.model,manufacturer:e.manufacturer,operatingSystem:e.operatingSystem,osVersion:e.osVersion,isVirtual:e.isVirtual,webViewVersion:e.webViewVersion}};const[r,o]=await $(Gn.registerDevice(t,this.$storage));return r?this.errorHandler(r):o},async addFcmToken(n){const[e,t]=await $(Gn.addFcmToken(n,this.$storage));return e?this.errorHandler(e):t},async acceptCompanyInvitation(n){const[e,t]=await $(yn.acceptCompanyInvitation(n,this.$storage));return e?this.errorHandler(e):t},async logout(n=!0){n&&be.logout({token:this.refreshToken},this.$storage),this.$storage&&(this.$storage.username="",this.$storage.ssoUser="",this.$storage.UserId=""),this.setLoggedInUserId(""),this.setToken(""),this.setRefreshToken(""),this.refreshToken?Object.keys(this.loggedInAccounts).forEach(e=>{this.loggedInAccounts[e].refreshToken===this.refreshToken&&this.refreshTokenAction({id:this.loggedInAccounts[e].id}).then(()=>(this.setLoggedInUserId(this.loggedInAccounts[e].id),this.$storage&&(this.$storage.username=e,this.$storage.UserId=this.loggedInAccounts[e].id),this.getLoggedInAccounts(),this.$router.push("/"+e)))}):(this.setUser(null),this.$router.push("/welcome"))},async getCompanyBySSOEmail(n){const[e,t]=await $(yn.getBySSOEmail(n.email,this.$storage));if(e)return this.errorHandler(e);if(t.data.success)return t.data},async getLoggedInAccounts(n){if(console.log("getLoggedInAccounts-1"),n||(n=this.getRefreshTokens()),n&&n.length>=1){console.log("getLoggedInAccounts-2");const[e,t]=await $(be.getLoggedInAccounts({refreshTokens:n},this.$storage));if(e)return this.errorHandler(e);t&&t.data&&t.data.success&&this.setLoggedInAccounts(t.data.accounts)}},async loginUsingQR(n){const[e,t]=await $(mt.loginUsingQR(n,this.$storage));return e?this.errorHandler(e):t.data.success},setLoggedInAccounts(n){this.loggedInAccounts={},n.forEach(e=>{this.loggedInAccounts[e.username]=e}),z.$emit("ssoEvent",{name:"setLoggedInAccounts",data:n})},setLoggedInUserId(n){this.loggedInUserId=n},setUser(n){this.ssoUser=n,this.$storage&&this.ssoUser&&this.$storage.username===this.ssoUser.username&&(this.appLanguage=n.ssoLang)},getRefreshTokens(){return this.$storage&&this.$storage.refreshTokens?this.$storage.refreshTokens.split(","):[]},setRefreshToken(n){let e=this.getRefreshTokens();n?(e.includes(n)||e.unshift(n),this.refreshToken=n):(e=e.filter(t=>t!==this.refreshToken),e&&e.length>=1&&(this.refreshToken=e[0])),this.$storage.refreshTokens=e.join(",")},setToken(n){this.$storage.token=n,this.token=n},setUserID(n){this.$storage.UserId=n},updateLang(n){this.appLanguage=n}},watch:{"$route.query":{handler:function(){this.$route.query.redirect_uri&&(this.redirect_uri=this.$route.query.redirect_uri),this.$route.query.display&&(this.display=this.$route.query.display),this.$route.query.state&&(this.state=this.$route.query.state),this.$route.query.response_type&&(this.response_type=this.$route.query.response_type),this.$route.query.realm&&(this.$storage.realm=this.$route.query.realm),this.$route.query.qrLogin&&this.changeLoginToQr()},deep:!0}}},He=(n,e)=>{const t=n.__vccOpts||n;for(const[r,o]of e)t[r]=o;return t},mo={name:"AuthWelcome",mixins:[Ne],data(){return{loading:!0}},async mounted(){let n=document.getElementById("tapniVideo");n.addEventListener("canplay",function(){document.body.contains(n)&&n.play().catch(e=>{console.log("Play was interrupted:",e)})}),setTimeout(()=>{this.$storage.token?this.$router.push(this.home):z.$emit("ssoEvent",{name:"setLoading",data:!1})},2500)},methods:{}},tr=n=>(c.pushScopeId("data-v-67088d6f"),n=n(),c.popScopeId(),n),go={class:"page-login content-boxed content-boxed-padding center-text",style:{"margin-top":"-1px",overflow:"hidden",border:"solid 0px #ffffff"}},fo=["autoplay"],_o=[tr(()=>c.createElementVNode("source",{src:"https://cdn.tapni.co/images/tapni-card-tap-video-white.mp4",type:"video/mp4"},null,-1))],vo={class:"bold full-top no-bottom center-text"},yo={class:"full-bottom half-top center-text color-black font-16"},ko={class:"page-login-links center-text"},wo=tr(()=>c.createElementVNode("div",{class:"clear"},null,-1)),bo={key:2,style:{display:"flex","flex-direction":"row","justify-content":"space-around",width:"90%",margin:"0 auto","margin-top":"40px"}},Co=[c.createStaticVNode('<a href="https://play.google.com/store/apps/details?id=co.tapni.app" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/playstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://apps.apple.com/ag/app/tapni/id1552930233" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appstore.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a><a href="https://appgallery.huawei.com/#/app/C103931997" target="_blank" data-v-67088d6f><img src="https://cdn.tapni.co/images/appgallery.png" class="app-store-icon pointer" style="width:55px;" data-v-67088d6f></a>',3)];function Eo(n,e,t,r,o,i){const a=c.resolveComponent("router-link");return c.openBlock(),c.createElementBlock("div",go,[c.createElementVNode("video",{id:"tapniVideo",muted:"",loop:"",playsinline:"",width:"350",style:{margin:"0 auto","max-width":"100%","margin-top":"63px",overflow:"hidden"},autoplay:n.isNative},_o,8,fo),c.createElementVNode("h1",vo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome),1),c.createElementVNode("p",yo,c.toDisplayString(n.ssoLang[this.appLanguage].welcome_p1),1),c.createCommentVNode("",!0),c.createCommentVNode("",!0),c.createVNode(a,{to:"register",exact:"",class:"button-center button button-90 google-button bg-tapni-grey pointer"},{default:c.withCtx(()=>[c.createElementVNode("span",null,c.toDisplayString(n.ssoLang[this.appLanguage].create_account),1)]),_:1}),c.createElementVNode("div",ko,[c.createVNode(a,{to:"/login"},{default:c.withCtx(()=>[c.createTextVNode(c.toDisplayString(n.ssoLang[this.appLanguage].already_registered)+"? ",1),c.createElementVNode("b",null,c.toDisplayString(n.ssoLang[this.appLanguage].sign_in),1)]),_:1}),wo]),this.isNative?c.createCommentVNode("",!0):(c.openBlock(),c.createElementBlock("div",bo,Co))])}const nr=He(mo,[["render",Eo],["__scopeId","data-v-67088d6f"]]),rr=Re.registerPlugin("GoogleAuth",{web:()=>Promise.resolve().then(()=>ql).then(n=>new n.GoogleAuthWeb)}),or={data(){return{googleLoad:!1}},computed:{displayGoogleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.google_login)&&!this.isModal)??!0}},mounted(){rr.initialize()},methods:{async googleLogin(){var t;this.googleLoad=!0;let[n,e]=await $(rr.signIn());if(n)return this.googleLoad=!1;if(this.referral&&(e.ref=this.referral),e.authentication&&(e.authentication.accessToken||e.authentication.idToken)){this.referral&&(e.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await $(be.googleSDK(e,this.$storage));if(r)return this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.googleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.googleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},To=Re.registerPlugin("FacebookLogin",{web:()=>Promise.resolve().then(()=>jl).then(n=>new n.FacebookLoginWeb)});window.fbAsyncInit=function(){FB.init({appId:"202577611527680",cookie:!0,xfbml:!0,version:"v16.0"})},function(n,e,t){var r,o=n.getElementsByTagName(e)[0];n.getElementById(t)||(r=n.createElement(e),r.id=t,r.src="https://connect.facebook.net/en_US/sdk.js",o.parentNode.insertBefore(r,o))}(document,"script","facebook-jssdk");const ir={data(){return{facebookLoad:!1}},computed:{fbLoginUrl(){return'https://www.facebook.com/v16.0/dialog/oauth?client_id=202577611527680&state={"oauth":"facebook"}&response_type=code%20granted_scopes&scope=email&redirect_uri=https://'+window.location.host+"/login"},displayFacebookLogin(){return!1}},methods:{async facebookLogin(){var r;this.facebookLoad=!0;const n=["email"],[e,t]=await $(To.login({permissions:n}));if(e)return this.facebookLoad=!1;if(this.referral&&(t.ref=this.referral),this.display==="popup"&&(t.response_type="code"),t&&t.accessToken){const[o,i]=await $(be.facebookSDK(t,this.$storage));if(o)return this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(o);if(i.data.success){if(this.display==="popup")return(r=window.parent)==null?void 0:r.postMessage({code:i.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(i),await this.getLoggedInAccounts(),this.$router.push("/"+i.data.data.username+"#edit"),setTimeout(()=>{this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.facebookLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}},Io=Re.registerPlugin("SignInWithApple",{web:()=>Promise.resolve().then(()=>Gl).then(n=>new n.SignInWithAppleWeb)}),ar={data(){return{appleLoad:!1}},computed:{displayAppleLogin(){var n,e;return(((e=(n=this.ssoCompany)==null?void 0:n.login)==null?void 0:e.apple_login)&&!this.isModal)??(Capacitor.isNativePlatform()&&Capacitor.getPlatform()==="ios"||!Capacitor.isNativePlatform()&&this.isiOS)}},methods:{async appleLogin(){var t;this.appleLoad=!0;const[n,e]=await $(Io.authorize({clientId:"co.tapni.applelogin",redirectURI:"https://"+window.location.host+"/login",scopes:"email name"}));if(n)return this.appleLoad=!1;if(e.response.tokenData=Kn.jwtDecode(e.response.identityToken),e&&e.response&&e.response.identityToken){this.referral&&(e.response.ref=this.referral),this.display==="popup"&&(e.response_type="code");const[r,o]=await $(be.appleSDK(e.response,this.$storage));if(r)return this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1}),this.errorHandler(r);if(o.data.success){if(this.display==="popup")return(t=window.parent)==null?void 0:t.postMessage({code:o.data.auth_code,state:this.$route.query.state},"*");await this.loginSetup(o),await this.getLoggedInAccounts(),this.loginSuccess({...o,isModal:this.isModal}),setTimeout(()=>{this.appleLoad=!1},1e3)}else this.errorSnack(this.ssoLang[this.appLanguage].unexpected_err)}else this.appleLoad=!1,z.$emit("ssoEvent",{name:"setLoading",data:!1})}}};/*! @azure/msal-browser v2.38.3 2023-10-27 *//*! *****************************************************************************
103
103
  Copyright (c) Microsoft Corporation.
104
104
 
105
105
  Permission to use, copy, modify, and/or distribute this software for any
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapni/auth",
3
- "version": "0.0.91",
3
+ "version": "0.0.92",
4
4
  "type": "module",
5
5
  "main": "./dist/TapniAuth.umd.js",
6
6
  "module": "./dist/TapniAuth.es.js",
@@ -254,7 +254,7 @@ export default {
254
254
  AuthService.refreshToken({
255
255
  id: data.id,
256
256
  refreshToken: this.refreshToken,
257
- refreshTokenAction: async () => await this.refreshTokenAction
257
+ refreshTokenAction: () => this.refreshTokenAction
258
258
  }, this.$storage)
259
259
  );
260
260
  if (err && err.response && err.response.data.error === "ACCESS_DENIED") {