From 190119e693475d9d7f7d60216981de2129f6336c Mon Sep 17 00:00:00 2001 From: ivelov-vm <ivelov_vm@groupbwt.com> Date: Mon, 27 Mar 2023 11:21:23 +0300 Subject: [PATCH] feat: add terms of service and provacy policy loading --- src/pages/BlogPage.vue | 4 +- src/pages/PrivacyPolicyPage.vue | 140 +------------------- src/pages/TermsOfServicePage.vue | 220 +------------------------------ src/plugins/store.js | 132 +++++++++++++------ 4 files changed, 103 insertions(+), 393 deletions(-) diff --git a/src/pages/BlogPage.vue b/src/pages/BlogPage.vue index 152c286..15fc579 100644 --- a/src/pages/BlogPage.vue +++ b/src/pages/BlogPage.vue @@ -50,7 +50,6 @@ <script> import HeaderComponent from "../components/HeaderComponent.vue"; import LeftArrow from "../components/svg/LeftArrow.vue"; -import BlogsMixin from "../components/mixins/BlogsMixin.vue"; import FooterComponent from "../components/FooterComponent.vue"; export default { @@ -89,7 +88,6 @@ export default { this.$refs.contacts.$el.scrollIntoView({ behavior: "smooth" }); }, }, - components: { HeaderComponent, FooterComponent, LeftArrow }, - mixins: [BlogsMixin], + components: { HeaderComponent, FooterComponent, LeftArrow } }; </script> diff --git a/src/pages/PrivacyPolicyPage.vue b/src/pages/PrivacyPolicyPage.vue index 5e7d033..ee54e3e 100644 --- a/src/pages/PrivacyPolicyPage.vue +++ b/src/pages/PrivacyPolicyPage.vue @@ -6,142 +6,11 @@ :with-shadow="scroll > 50" @onButtonClick="scrollToContacts" ></HeaderComponent> - <section class="mt-[84px] pl-[6.7%] pr-[8.6%] font-gilroy"> - <h1 class="text-[2rem] leading-[2.375rem]"> - Information You Provide to Us - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - We collect information you provide directly to us. For example, you - share information directly with us when you create an account, fill out - a form, submit or post content through our Services, purchase a - membership, communicate with us via third-party platforms, request - customer support, or otherwise communicate with us. The types of - personal information we may collect include your name, display name, - username, bio, email address, business information, your content, - including your avatar image, photos, posts, responses, and series - published by you, and any other information you choose to provide. - <br /><br /> - In some cases, we may also collect information you provide about others, - such as when you purchase a Medium membership as a gift for someone. We - will use this information to fulfill your request and will not send - communications to your contacts unrelated to your request, unless they - separately consent to receive communications from us or otherwise engage - with us. - <br /><br /> - We do not collect payment information through our Services. We rely on - third parties to process payments in connection with our Services. Any - information you provide to facilitate such a payment is subject to the - third-party payment processor’s privacy policy, and we encourage you to - review this policy before you provide any information to the payment - processor. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - Information We Collect Automatically When You Interact with Us - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - In some instances, we automatically collect certain information, - including: - </p> - <br> - <ul class="list-disc ml-5 text-lg leading-[1.813rem] capitalize"> - <li> - Activity Information: We collect information about your activity on - our Services, such as your reading history and when you share links, - follow users, highlight posts, and clap for posts. - </li> - <li> - Transactional Information: When you purchase a membership, we collect - information about the transaction, such as subscription details, - purchase price, and the date of the transaction. - </li> - <li> - Device and Usage Information: We collect information about how you - access our Services, including data about the device and network you - use, such as your hardware model, operating system version, mobile - network, IP address, unique device identifiers, browser type, and app - version. We also collect information about your activity on our - Services, such as access times, pages viewed, links clicked, and the - page you visited before navigating to our Services. - </li> - <li> - Information Collected by Cookies and Similar Tracking Technologies: We - use tracking technologies, such as cookies and web beacons, to collect - information about you. Cookies are small data files stored on your - hard drive or in device memory that help us improve our Services and - your experience, see which areas and features of our Services are - popular, and count visits. Web beacons (also known as “pixel tags†or - “clear GIFsâ€) are electronic images that we use on our Services and in - our emails to help deliver cookies, count visits, and understand - usage. We also work with third party analytics providers who use - cookies, web beacons, device identifiers, and other technologies to - collect information about your use of our Services and other websites - and applications, including your IP address, web browser, mobile - network information, pages viewed, time spent on pages or in mobile - apps, and links clicked. This information may be used by Medium and - others to, among other things, analyze and track data, determine the - popularity of certain content, deliver content targeted to your - interests on our Services, and better understand your online activity. - For more information about cookies and how to disable them, see Your - Choices below. - </li> - </ul> - - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - Information We Collect from Other Sources - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - We obtain information from third-party sources. For example, we may - collect information about you from social networks, accounting services - providers and data analytics providers. Additionally, if you create or - log into your Medium account through a third-party platform (such as - Apple, Facebook, Google, or Twitter), we will have access to certain - information from that platform, such as your name, lists of friends or - followers, birthday, and profile picture, in accordance with the - authorization procedures determined by such platform. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - Information We Derive - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - We may derive information or draw inferences about you based on the - information we collect. For example, we may make inferences about your - location based on your IP address or infer reading preferences based on - your reading history. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10">THIRD-PARTY EMBEDS</h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - Medium does not host some of the content displayed on our Services. - Users have the ability to post content that is actually hosted by a - third party, but is embedded in our pages (an “Embedâ€). When you - interact with an Embed, it can send information about your interaction - to the hosting third party just as if you were visiting the third - party’s site directly. For example, when you load a Medium post page - with a YouTube video Embed and watch the video, YouTube receives - information about your activity, such as your IP address and how much of - the video you watch. Medium does not control what information third - parties collect through Embeds or what they do with the information. - This Privacy Policy does not apply to information collected through - Embeds. The privacy policy belonging to the third party hosting the - Embed applies to any information the Embed collects, and we recommend - you review that policy before interacting with the Embed. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - TRANSFER OF INFORMATION TO THE UNITED STATES AND OTHER COUNTRIES - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - Medium is headquartered in the United States, and we have operations and - service providers in the United States and other countries. Therefore, - we and our service providers may transfer your personal information to, - or store or access it in, jurisdictions that may not provide levels of - data protection that are equivalent to those of your home jurisdiction. - For example, we transfer personal data to Amazon Web Services, one of - our service providers that processes personal information for us in - various data center locations across the globe, including those listed - here. We will take steps to ensure that your personal information - receives an adequate level of protection in the jurisdictions in which - we process it. - </p> + <section class="mt-[84px] pl-[6.7%] pr-[8.6%] font-gilroy" v-html="$store.state.privacyPolicy"> </section> + <p v-if="$store.getters.isPrivacyEmpty" class="text-center text-3xl"> + Loading... + </p> <footer class="text-black mt-[32px] mb-5 text-sm leading-4 text-center relative" > @@ -168,6 +37,7 @@ export default { }, mounted() { window.addEventListener("scroll", this.onScroll); + this.$store.dispatch("getPrivacyPolicy"); }, beforeDestroy() { window.removeEventListener("scroll", this.onScroll); diff --git a/src/pages/TermsOfServicePage.vue b/src/pages/TermsOfServicePage.vue index 57f5b21..2e8f7c2 100644 --- a/src/pages/TermsOfServicePage.vue +++ b/src/pages/TermsOfServicePage.vue @@ -6,222 +6,11 @@ :with-shadow="scroll > 50" @onButtonClick="scrollToContacts" ></HeaderComponent> - <section class="mt-[84px] pl-[6.7%] pr-[8.6%] font-gilroy"> - <h1 class="text-[2rem] leading-[2.375rem]">Terms of Use Agreement</h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - This agreement requires the use of arbitration on an individual basis to - resolve disputes between you and immigrants like us (dba - "immigrationhelp.Org "). Both you and immigrationhelp.Org waive the - right to a jury trial or class action. Please read this document - carefully. It affects your legal rights and remedies and will have a - substantial effect on how disputes between you and immigrationhelp.Org - will be<br /><br /> - Neither immigrants like us nor immigrationhelp.Org is a law firm, nor do - they provide legal advice. They are not a substitute for the advice of - an attorney. Your use of the site and services, and your communication - with immigrationhelp.Org, does not create an attorney-client - relationship. Your communications with immigrationhelp.Org are not - protected by the attorney-client privilege. - </p> - <p class="mt-[29px]"> - <i class="font-semibold italic capitalize"> - The summaries of provisions under “What this means for you†are - provided as a courtesy to help you understand this Agreement, but they - are not legally binding and do not modify this Agreement in any way. - </i> - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10">Scope</h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - This Terms of Use Agreement (“Agreementâ€) is between you and Immigrants - Like Us, Inc. (DBA “ImmigrationHelp.orgâ€), and governs your use of the - website located at www.immigrationhelp.org (including all subdomains) - (the “Siteâ€) and the services provided by ImmigrationHelp.org (the - “Servicesâ€). All references to "Immigrants Like Us," - "ImmigrationHelp.org," "ImmiHelp," "ILU," or "IHO" on this website or - its related pages, applications, or correspondence, refer to the same - entity, incorporated in the state of Massachusetts as "Immigrants Like - Us, Inc." For the sake of clarity and consistency, this Agreement will - use "ImmigrationHelp.org" for all references to the incorporated entity - Immigrants Like Us, Inc. By accessing or using the Site or the Services, - you agree to be legally bound by this Agreement. Your use of the Site - and Services is also subject to the terms of the ImmigrationHelp.org - Privacy Policy. If you do not agree to the terms of this Agreement and - the Privacy Policy, you may not access or use the Site or Services. The - Site and Services are intended for use by persons 18 years of age or - older. If you are under 18 years of age, you may not access or use the - Site or Services. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - WHAT THIS MEANS FOR YOU - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - If you use the ImmigrationHelp.org website or services, you are agreeing - to these terms. If you don’t agree to the terms, or if you are under 18 - years of age, you may not use the website or services. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - Description of Services - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - ImmigrationHelp.org is a platform designed to assist you in completing - United States Citizenship and Immigration Services (USCIS) forms as well - as forms required by other governmental agencies. ImmigrationHelp.org - provides information and step-by-step instructions intended to make the - completion of such forms less confusing. ImmigrationHelp.org is not - affiliated with or endorsed by USCIS or any United States government - agency. All USCIS and other forms are available without cost from USCIS - and other applicable agencies. Use of the ImmigrationHelp.org's Site and - Services is not required to complete and file such forms. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - WHAT THIS MEANS FOR YOU - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - United States Citizenship and Immigration Services (USCIS) is the - government agency that oversees many U.S. immigration benefits. USCIS - provides immigration forms for free. ImmigrationHelp.org is a private - company and has no affiliation with USCIS. You are not required to use - ImmigrationHelp.org to complete USCIS forms. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10">Not a Law Firm</h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - IMMIGRATIONHELP.ORG IS NOT A LAW FIRM AND ITS SERVICES SHOULD NOT BE - CONFUSED WITH LEGAL ADVICE. YOUR AGREEMENT TO THE TERMS OF THIS - AGREEMENT AND YOUR ACCESS AND USE OF THE IMMIGRATIONHELP.ORG'S SITE AND - SERVICES DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP BETWEEN YOU AND - IMMIGRATIONHELP.ORG. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - WHAT THIS MEANS FOR YOU - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - ImmigrationHelp.org provides information and assistance in completing - USCIS forms. However, ImmigrationHelp.org is not a law firm. - ImmigrationHelp.org cannot, and does not, provide legal advice to you. - Depending on your particular circumstances, you may require the services - of a licensed attorney, and ImmigrationHelp.org is not a substitute for - the advice of a licensed attorney. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - Accounts and Information - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - Your ImmigrationHelp.org Account. In order to access and use some - aspects of the Site and Services, you will be required to create an - account and establish a username and password. If you create a - ImmigrationHelp.org Account, you agree to submit only accurate - information about yourself and to keep the information you submit - up-to-date. You agree not to impersonate anyone else. You are - responsible for maintaining the security and confidentiality of your - username and password, and you agree not to authorize anyone else to use - your username and password. You are solely responsible for all actions - taken under your account. You agree to notify ImmigrationHelp.org - promptly in the event you learn of any unauthorized use of your account. - By creating an account, you agree that you may receive electronic - communications from ImmigrationHelp.org and its affiliates, including - offers, newsletters, account notices and updates. If at any time you no - longer wish to receive such electronic communications, you may opt-out - by clicking the designated link in the communication. - <br /><br /> - 4.2. Your Application. If you use our service to file an application, we - may assign a unique email address to your account for the sole purpose - of enabling ImmigrationHelp.org to receive directly from USCIS the - receipt number assigned to your application. You agree that - ImmigrationHelp.org may use your receipt number to check your - application status from time to time so that we may provide you - pertinent general information about the steps in the application - process. If, at any time, you do not want ImmigrationHelp.org to retain - your receipt number or to check your application status, let us know by - contacting our support department at help@immigrationhelp.org. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - WHAT THIS MEANS FOR YOU - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - You may need to create an account with ImmigrationHelp.org. If you do, - you will only provide accurate information about yourself. You agree not - to share your account access credentials with others, and will be - responsible for anyone’s use of your account. When you create an - account, you give us permission to receive your government receipt - number, use that number to check your application status, and email you - with general information about the application process. If you don’t - want us to retain your government receipt number or check your - application status, email us at help@immigrationhelp.org - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10">Use of Services</h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - License Grant to You. Subject to your complete compliance with the - provisions of this Agreement, you are granted a limited, non-exclusive, - non-transferable, revocable license to use the Site and Services solely - in the manner authorized and intended by ImmigrationHelp.org. Any rights - not expressly granted in this Agreement are expressly reserved by - ImmigrationHelp.org. The resale or distribution of materials made - available on the Site without the express, written consent of - ImmigrationHelp.org is prohibited. All such materials are authorized - only for your own personal use. - </p> - <h1 class="text-[2rem] leading-[2.375rem] mt-10"> - WHAT THIS MEANS FOR YOU - </h1> - <p class="text-lg leading-[1.813rem] mt-[30px] capitalize"> - We are granting you permission to use our website and services, but only - in the ways described in this agreement. You can’t transfer this - permission to others. You can’t sell or give the information or content - we provide to you to others. - <br /><br /> - 5.2. Restrictions on Your Access To and Use of Site and Services - <br /><br /> - In connection with your access to or use of the Site or Services, you - are prohibited from: - <br /><br /> - accessing data not intended for you or logging onto a server or an - account which you are not authorized to access; using any engine, - software, tool, agent or other device or mechanism (including without - limitation browsers, spiders, robots, avatars or intelligent agents) to - access, navigate, or search the Site, other than generally available - third-party web browsers (e.g., Mozilla Firefox, Google Chrome and - Microsoft Explorer); using any device, software or routine to interfere - or attempt to interfere with the proper working of the Site or any - activity being conducted on the Site; attempting to probe, scan or test - the vulnerability of a ImmigrationHelp.org system or network or to - breach security or authentication measures without proper authorization; - attempting to interfere with service to any user, host or network, - including, without limitation, via means of submitting a virus to the - Site or through the Service, overloading, “flooding,†“spamming,†- “mailbombing†or “crashingâ€; sending unsolicited email, including - promotions and/or advertising of products or services; forging any - TCP/IP packet header or any part of the header information in any email - or newsgroup posting; copying, modifying, adapting, reproducing, reverse - engineering, decompiling, disassembling, or preparing derivative works - from ImmigrationHelp.org software, ImmigrationHelp.org Content or User - Content that is not your own; distributing viruses, malicious code, - malware or any other technologies that may harm ImmigrationHelp.org, the - Site, the Services or a user; violating or circumventing any applicable - laws, regulations or ImmigrationHelp.org technical measures, security - measures or policies; violating, infringing, or breaching the rights of - ImmigrationHelp.org or a third-party, including, but not limited to any - copyrights, trademark rights, patent rights, trade secrets rights, - rights of publicity or personality, moral rights, or any other - proprietary rights; submitting to the Site or through the Services any - false, inaccurate, misleading, deceptive, defamatory, or libelous - materials or User Content; or knowingly withholding or failing to - disclose information requested by ImmigrationHelp.org or required to be - included or disclosed on a USCIS form or other government form or - engaging in any action that constitutes fraud. Submitting false, - inaccurate, misleading or deceptive information, or failing to disclose - information requested by ImmigrationHelp.org or required to be included - or disclosed on a USCIS form or other government form may result in your - application being denied by the applicable government agency and - ImmigrationHelp.org will not have any liability to you as a result of - such actions. - <br /><br /> - Violations of system or network security may result in civil or criminal - liability. ImmigrationHelp.org will investigate occurrences that may - involve such violations and may involve, and cooperate with, law - enforcement authorities in prosecuting users who are involved in such - violations. - </p> + <section class="mt-[84px] pl-[6.7%] pr-[8.6%] font-gilroy" v-html="$store.state.termsOfService"> </section> + <p v-if="$store.getters.isTermsEmpty" class="text-center text-3xl"> + Loading... + </p> <footer class="text-black mt-[32px] mb-5 text-sm leading-4 text-center relative" > @@ -248,6 +37,7 @@ export default { }, mounted() { window.addEventListener("scroll", this.onScroll); + this.$store.dispatch("getTermsOfService"); }, beforeDestroy() { window.removeEventListener("scroll", this.onScroll); diff --git a/src/plugins/store.js b/src/plugins/store.js index 55f67e5..bbb7cc6 100644 --- a/src/plugins/store.js +++ b/src/plugins/store.js @@ -11,7 +11,9 @@ export default new Vuex.Store({ reviews: [], team: [], footer: null, - blogs: [] + blogs: [], + termsOfService: "", + privacyPolicy: "" }, mutations: { setServices(state, services) { @@ -38,11 +40,17 @@ export default new Vuex.Store({ state.team = payload; }, setFooter(state, payload) { - state.footer = payload; - }, - setBlogs(state, payload) { - state.blogs = payload; - }, + state.footer = payload; + }, + setBlogs(state, payload) { + state.blogs = payload; + }, + setTermsOfService(state, payload) { + state.termsOfService = payload; + }, + setPrivacyPolicy(state, payload) { + state.privacyPolicy = payload; + }, }, actions: { async getServices(state) { @@ -110,37 +118,75 @@ export default new Vuex.Store({ }); }, async getFooter(state) { - return new Promise((resolve) => { - if (!state.getters.isFooterEmpty) { + return new Promise((resolve) => { + if (!state.getters.isFooterEmpty) { + resolve(); + return; + } + axios + .get(`/V1/footer`) + .then((response) => { + state.commit("setFooter", response.data.data.attributes); + }) + .finally(() => { + resolve(); + }); + }); + }, + async getBlogs(state) { + return new Promise((resolve) => { + if (!state.getters.isBlogsEmpty) { + resolve(); + return; + } + axios + .get(`/V1/blogs?populate=*`) + .then((response) => { + state.commit("setBlogs", response.data.data); + }) + .finally(() => { + resolve(); + }); + }); + }, + async getTermsOfService(state) { + return new Promise((resolve) => { + if (!state.getters.isTermsEmpty) { + resolve(); + return; + } + axios + .get(`/V1/terms-of-service`) + .then((response) => { + state.commit( + "setTermsOfService", + response.data.data.attributes.content + ); + }) + .finally(() => { resolve(); - return; - } - axios - .get(`/V1/footer`) - .then((response) => { - state.commit("setFooter", response.data.data.attributes); - }) - .finally(() => { - resolve(); - }); - }); - }, - async getBlogs(state) { - return new Promise((resolve) => { - if (!state.getters.isBlogsEmpty) { + }); + }); + }, + async getPrivacyPolicy(state) { + return new Promise((resolve) => { + if (!state.getters.isPrivacyEmpty) { + resolve(); + return; + } + axios + .get(`/V1/privacy-policy`) + .then((response) => { + state.commit( + "setPrivacyPolicy", + response.data.data.attributes.content + ); + }) + .finally(() => { resolve(); - return; - } - axios - .get(`/V1/blogs?populate=*`) - .then((response) => { - state.commit("setBlogs", response.data.data); - }) - .finally(() => { - resolve(); - }); - }); - }, + }); + }); + }, }, getters: { isServicesEmpty(state) { @@ -156,10 +202,16 @@ export default new Vuex.Store({ return state.team.length <= 0; }, isFooterEmpty(state) { - return state.footer ? false : true; - }, - isBlogsEmpty(state) { - return state.blogs.length <= 0; - }, + return state.footer ? false : true; + }, + isBlogsEmpty(state) { + return state.blogs.length <= 0; + }, + isTermsEmpty(state) { + return state.termsOfService.length <= 0; + }, + isPrivacyEmpty(state) { + return state.privacyPolicy.length <= 0; + }, }, }); -- GitLab