diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f0150349e..0fd9d40e62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,28 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v6.106.0](https://github.com/opengovsg/FormSG/compare/v6.105.0...v6.106.0) + +- build: release v6.105.0 [`#7054`](https://github.com/opengovsg/FormSG/pull/7054) +- build: merge release v6.104.0 into develop [`#7051`](https://github.com/opengovsg/FormSG/pull/7051) +- build: merge release v6.103.0 into develop [`#7041`](https://github.com/opengovsg/FormSG/pull/7041) +- feat(scripts): save multi-language forms report to tsv files [`#7027`](https://github.com/opengovsg/FormSG/pull/7027) + +#### [v6.105.0](https://github.com/opengovsg/FormSG/compare/v6.104.0...v6.105.0) + +> 30 January 2024 + +- build: release v6.104.0 [`#7050`](https://github.com/opengovsg/FormSG/pull/7050) +- chore: update pp and tou [`a9c1ec5`](https://github.com/opengovsg/FormSG/commit/a9c1ec5321a18e42a14e7cccf7c7461d8ffd7325) +- chore: bump version to 6.105.0 [`71c15d0`](https://github.com/opengovsg/FormSG/commit/71c15d0edefa8654544464246c97469bb3595dae) + #### [v6.104.0](https://github.com/opengovsg/FormSG/compare/v6.103.0...v6.104.0) +> 30 January 2024 + - chore: credits update [`#7042`](https://github.com/opengovsg/FormSG/pull/7042) - build: release v6.103.0 [`#7040`](https://github.com/opengovsg/FormSG/pull/7040) +- chore: bump version to 6.104.0 [`54ce533`](https://github.com/opengovsg/FormSG/commit/54ce5336c0b2ad69d8c68766647a2455f9fc4316) - chore: update banner for TOU [`9547227`](https://github.com/opengovsg/FormSG/commit/95472277ce76427dc64eac7977170643c0264762) #### [v6.103.0](https://github.com/opengovsg/FormSG/compare/v6.102.0...v6.103.0) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 55d84ba69c..ef9a4b1cd0 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "form-frontend", - "version": "6.101.0", + "version": "6.102.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "form-frontend", - "version": "6.101.0", + "version": "6.102.0", "hasInstallScript": true, "dependencies": { "@chakra-ui/react": "^1.8.6", diff --git a/frontend/package.json b/frontend/package.json index a982a6755a..c363a307bb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "form-frontend", - "version": "6.101.0", + "version": "6.102.0", "homepage": ".", "private": true, "dependencies": { diff --git a/frontend/src/pages/PrivacyPolicy/PrivacyPolicyPage.tsx b/frontend/src/pages/PrivacyPolicy/PrivacyPolicyPage.tsx index 0c6b10a75b..820b6beda6 100644 --- a/frontend/src/pages/PrivacyPolicy/PrivacyPolicyPage.tsx +++ b/frontend/src/pages/PrivacyPolicy/PrivacyPolicyPage.tsx @@ -42,53 +42,75 @@ export const PrivacyPolicyPage = (): JSX.Element => { - Privacy Policy + Privacy Statement - This Privacy Policy must be read in conjunction with the Terms of - Use that accompany the applicable service you are requesting from - us (the "Service"). If you are a form respondent, this - Privacy Policy will also apply in addition to any other privacy - policy that the form creator provides to you as part of the form. - In this Privacy Policy, "Public Sector Entities" means the - Government (including its ministries, departments and organs of - state) and public authorities (such as statutory boards) and - "personal data" shall have the same meaning as its definition in - the Personal Data Protection Act 2012 (No. 26 of 2012). + This Government Agency Privacy Statement (“ + Privacy Statement”) must be read in conjunction with the + Terms of Use that accompany the applicable service you are + requesting from us (the “Service”). - + General + - Insofar as the Service consists of or is provided to you - through a website, please note that: + This is a Government agency digital service. + + + Please note that: We may use "cookies", where a small data file is sent to your browser to store and track information about you when - you enter our websites. The cookie is used to track + you enter our digital services. The cookie is used to track information such as the number of users and their frequency - of use, profiles of users and their preferred sites. While - this cookie can tell us when you enter our sites and which - pages you visit, it cannot read data off your hard disk. + of use, profiles of users and their preferred digital + services. While this cookie can tell us when you enter our + digital services and which pages you visit, it cannot read + data off your hard disk. You can choose to accept or decline cookies. Most web browsers automatically accept cookies, but you can usually modify your browser setting to decline cookies if you prefer. This may prevent you from taking full advantage of - the website. + the digital service. + + + The Service may utilise cookies to facilitate authentication + and/or login to the Service. If such cookies are rejected, + you might not be able to use the Service. - We may request/collect certain types of data from you in + Please see the Annex for any additional terms or information. + + + For the avoidance of doubt, nothing in this Privacy Statement + shall be construed as limiting or prejudicing our rights at law + to collect, use or disclose any data without your consent or + agreement. + + + Use of data + + + We may request or collect certain types of data from you in connection with your access or use of the Service. The data that may be requested/collected include those identified in the Annex herein. Your data may be stored in our servers, systems or @@ -102,44 +124,45 @@ export const PrivacyPolicyPage = (): JSX.Element => { statistical information to operate, maintain or improve the Services or the underlying service of the third party service provider or collaborator. For the avoidance of doubt, in this - Privacy Policy, a reference to a third party service provider or - collaborator includes other third parties who provide a service - or collaborate with our third party service provider or + Privacy Statement, a reference to a third party service provider + or collaborator includes other third parties who provide a + service or collaborate with our third party service provider or collaborator. - If you provide us with personal data: + If you provide us with personal data, or where we collect + personal data from you: We may use, disclose and process the data for any one or more of the following purposes: to assist, process and facilitate your access or use of the Service; to administer, process and facilitate any transactions or activities by you, whether with us or any other - Public Sector Entity or third party service provider or + Government Agency or third party service provider or collaborator, and whether for your own benefit, or for the benefit of a third party on whose behalf you are duly authorized to act; to carry out your instructions or respond to any queries, feedback or complaints provided by (or @@ -149,7 +172,7 @@ export const PrivacyPolicyPage = (): JSX.Element => { to monitor and track your usage of the Service, to conduct research, data analytics, surveys, market @@ -157,18 +180,18 @@ export const PrivacyPolicyPage = (): JSX.Element => { understanding your interests, concerns and preferences and improving the Service (including any service of a third party service provider or collaborator) and other - services and products provided by Public Sector - Entities. For the avoidance of doubt, we may also - collect, use, disclose and process such information to - create reports and produce statistics regarding your - transactions with us and your usage of the Services and - other services and products provided by Public Sector - Entities for record-keeping and reporting or publication - purposes (whether internally or externally); + services and products provided by Government Agencies. + For the avoidance of doubt, we may also collect, use, + disclose and process such information to create reports + and produce statistics regarding your transactions with + us and your usage of the Services and other services and + products provided by Government Agencies for + record-keeping and reporting or publication purposes + (whether internally or externally); for the purposes of storing or creating backups of your data (whether for contingency or business continuity @@ -177,59 +200,58 @@ export const PrivacyPolicyPage = (): JSX.Element => { to enable us to contact you or communicate with you on any matters relating to your access or use of the Service, including but not limited to the purposes set - out above, via email, SMS, instant messaging, push - notifications or such other forms of communication that - we may introduce from time to time depending on the - functionality of the Service and/or your device. + out above, via email, push notifications or such other + forms of communication that we may introduce from time + to time depending on the functionality of the Service + and/or your device. - We may share necessary data with other Public Sector - Entities, and third party service providers in connection - with the Service, so as to provide the Service to you in the - most efficient and effective way unless such sharing is - prohibited by law. + We may share necessary data with other Government Agencies, + and third party service providers in connection with the + Service, so as to improve or facilitate the discharge of + public functions and/or serve you in the most efficient and + effective way, unless such sharing is prohibited by law. We will NOT share your personal data with entities which are - not Public Sector Entities, except where such sharing is + not Government Agencies, except where such sharing is necessary for such entities to assist us in providing the Service to you or for fulfilling any of the purposes herein. For your convenience, we may also display to you data you - had previously supplied us or other Public Sector Entities. + had previously supplied us or other Government Agencies. This will speed up the transaction and save you the trouble of repeating previous submissions. Should the data be out-of-date, please supply us the latest data. + + Please note that we may be required to disclose your data by + law, including any law governing the use/provision of any + service of a third party service provider or collaborator. + - - Please note that we may be required to disclose your data by - law, including any law governing the use/provision of any - service of a third party service provider or collaborator. - - - To safeguard your personal data, all electronic storage and - transmission of personal data is secured with appropriate - security technologies. - You may withdraw your consent to the use and disclosure of your data by us with reasonable notice and subject to any prevailing @@ -237,16 +259,24 @@ export const PrivacyPolicyPage = (): JSX.Element => { the proper functioning of the Service and may also result in the cessation of the Service to you. + + Protection of data + - The Service may contain links to external sites whose data - protection and privacy practices may differ from ours. We are - not responsible for the content and privacy practices of these - other websites and encourage you to consult the privacy notices - of those sites. + To safeguard your personal data, all electronic storage and + transmission of personal data is secured with appropriate + security technologies. - Please see the Annex for additional terms/notices. + The Service may contain links to external sites or services + whose data protection and privacy practices may differ from + ours. We are not responsible for the content and privacy + practices of these other websites or services and encourage you + to consult the privacy notices of those sites or services. + + Contact Information + Please contact{' '} @@ -258,22 +288,44 @@ export const PrivacyPolicyPage = (): JSX.Element => { have any enquiries or feedback on our data protection policies and procedures; or need more information on or access to data which you have - provided to us in the past. + provided to us directly in the past. + + Definitions + + + In this Privacy Statement, “Government Agencies” means the + Government (including its ministries, departments and organs of + state) and public authorities (such as statutory boards) and + “personal data” shall have the same meaning as its definition in + the Personal Data Protection Act 2012, provided our obligations + in respect of personal data do not apply to: + + + + Business contact information; and + + + Personal data of a deceased individual. However, clauses + relating to the disclosure of personal data and protection of + personal data shall apply in respect of the personal data of + an individual who has been dead for 10 or less years. + + - This Privacy Policy is dated 24 Nov 2020. + This Privacy Statement is dated 30 Jan 2024. @@ -283,8 +335,12 @@ export const PrivacyPolicyPage = (): JSX.Element => { If you are a form administrator or creator, please note that - GovTech will collect your email address and other contact - details. In the event you request data from us concerning the + GovTech will collect: (a) your email address; (b)other contact + details; (c) details of your browser client; (d) device brand; + (e) operating system; and (f) IP address. For forms with the + Payments feature, GovTech will also collect information on the + goods/services purchased, including the quantity and value of + the same. In the event you request data from us concerning the form respondents, you warrant and represent that you have the consent of form respondents for us to provide the data to you or that such consent is not necessary under the applicable @@ -293,11 +349,11 @@ export const PrivacyPolicyPage = (): JSX.Element => { If you are a form respondent, please note that GovTech may collect, store and/or process data in accordance with this - Privacy Policy (which applies in addition to the privacy + Privacy Statement (which applies in addition to the privacy policy/statement of the form administrator/creator agency(/ies)) and disclose the data to the form administrators/creator, or process the data for the form administrators/creator. However, - if you have any enquiries or feedback on the form creator’s data + if you have any enquiries or feedback on the form creator's data protection, policies and procedures or need more information on or access to data which you have provided directly to the form creator in the past, please consult the privacy policy/statement diff --git a/frontend/src/pages/TermsOfUse/TermsOfUsePage.tsx b/frontend/src/pages/TermsOfUse/TermsOfUsePage.tsx index 101ecb9b30..ab50605d65 100644 --- a/frontend/src/pages/TermsOfUse/TermsOfUsePage.tsx +++ b/frontend/src/pages/TermsOfUse/TermsOfUsePage.tsx @@ -20,6 +20,8 @@ import Link from '~components/Link' interface listItemMarkerProps { prependSequenceMarker?: string isNumericMarker?: boolean + isRomanMarker?: boolean + sequenceMarkerOverride?: string } const SectionListItem: FC = ({ @@ -62,16 +64,23 @@ export const SubSubSectionOrderedList: FC = ({ export const SubSectionListItem: FC = ({ children, prependSequenceMarker, + sequenceMarkerOverride, isNumericMarker, + isRomanMarker, ...props }) => { + const markerType = isNumericMarker + ? 'numeric' + : isRomanMarker + ? 'lower-roman' + : 'lower-alpha' const sequenceMarker = useMemo(() => { return `"${ prependSequenceMarker ? prependSequenceMarker : '(' - }"counters(section, ".", ${isNumericMarker ? 'numeric' : 'lower-alpha'})"${ + }"counters(section, ".", ${markerType})"${ prependSequenceMarker ? ' ' : ') ' }"` - }, [isNumericMarker, prependSequenceMarker]) + }, [markerType, prependSequenceMarker]) return ( // this might seem a bit messy, but what this is doing @@ -87,7 +96,7 @@ export const SubSectionListItem: FC = ({ _before={{ minWidth: '3rem', counterIncrement: 'section', - content: sequenceMarker, + content: sequenceMarkerOverride || sequenceMarker, display: 'table-cell', paddingRight: '0.5rem', }} @@ -121,16 +130,17 @@ export const TermsOfUsePage = (): JSX.Element => { > These Terms of Use govern your access to and use of our services, including the application (whether as software or - as a website or otherwise), its contents, push notifications - and all other accompanying materials as identified in the - Schedule below (collectively, the "Service"). + as a website or otherwise), its contents (including APIs, if + any), push notifications and all other accompanying + materials as identified in the Schedule below (collectively, + the "Service”). This Service is provided to you by the Government Technology - Agency ("GovTech"). GovTech’s office is located at 10 + Agency ("GovTech"). GovTech's office is located at 10 Pasir Panjang Road, #10-01, Mapletree Business City, Singapore 117438. @@ -138,17 +148,32 @@ export const TermsOfUsePage = (): JSX.Element => { prependSequenceMarker="1." isNumericMarker > - By accessing or using any part of this Service, you - unconditionally agree and accept to be legally bound by - these Terms of Use and any amendments thereto from time to - time. GovTech reserves the right to change these Terms of - Use at its sole discretion and at any time.{' '} - - You should read the Terms of Use carefully each time you - access or use any part of this Service as such access or - use will constitute your agreement to the Terms of Use and - any amendments to it. - + + By accessing or using any part of this Service, you + unconditionally agree and accept to be legally bound by + these Terms of Use and any amendments thereto from time to + time.{' '} + + GovTech reserves the right to amend these Terms of Use + at its sole discretion and at any time, with or without + notice to you. Please read the Terms of Use carefully + each time you access or use any part of this Service as + (without prejudice to any other means your agreement to + the Terms of Use as amended may manifest) such access or + use shall constitute your agreement to the Terms of Use + and any amendments to it. Your failure to do so shall + not prejudice the effect or enforceability of the Terms + of Use or any amendments thereto. + {' '} + GovTech may, at its sole discretion and without prejudice + to its other rights under this Clause 1.3, also amend + these Terms of Use by providing you with notice effective + immediately or such other time designated by GovTech, and + such notice may be provided by any means GovTech deems + appropriate (for example, by posting the notice through + the Service, any website related to the Service, or by + email). + { non-exclusive, revocable, and non-transferable right to access and use the Service for personal or internal purposes only, and only for such use permitted by the functions of - the Service and intended by GovTech. You shall not, amongst - other things, benchmark, reproduce, modify, - reverse-engineer, decompile, adapt, publish, redistribute or - sublicense the Service or any part of the Service without - the prior written consent of GovTech or the respective third - party owners. You also shall not use the Service in - violation of any applicable laws or agreements that you have - with any third parties. All express or implied rights to the - Service not specifically granted herein are expressly - reserved to GovTech. + the Service and intended by GovTech. + + + You shall not, and shall not authorise or permit any third + party to: + + + bypass or circumvent any technical restrictions or + digital protection measures in the Service or attempt to + circumvent any such restrictions; + + + reverse engineer, decompile, disassemble, modify, + translate, adapt or create derivative works of the + Service (whether in relation to its source code, object + code, underlying structure, ideas, algorithms or + otherwise); + + + reproduce, publish, distribute, transfer, publicly + display, resell, rent, lease, or sublicense the Service, + or loan, lend, pledge, assign, or otherwise encumber the + Service to or in favour of any third party; + + + remove or obscure the copyright, trademark and other + proprietary notices contained on or in the Service; + + + use the Service in any manner that is contrary to any + applicable laws or regulations or rights of third + parties (however arising and of whatever nature), or in + a manner that constitutes harmful, fraudulent, or + obscene activity; + + + make the Service available in or through a network, + file-sharing service, service bureau or any similar + timesharing arrangement or as a managed service + provider; + + + perform any benchmarking tests or analyses of the + Service; + + + use the Service to create anything that would compete + with the Service; + + + transfer, assign or permit the sharing of license keys + to or with a third party; + + + use the Service to process or permit to be processed any + code of a third party; + + + provide third party access to the Service; or + + + export the Service in violation of any international + sanctions or laws applicable to US entities. + + + + + All express or implied rights to the Service not + specifically granted herein are expressly reserved to + GovTech. GovTech reserves the right to: - + Update or modify this Service from time to time; @@ -240,7 +371,7 @@ export const TermsOfUsePage = (): JSX.Element => { return or destroy all copies of the Service or materials therein that you may have been provided with. - + { You will not interfere or attempt to interfere with the proper working of the Service or otherwise do anything that imposes an unreasonable or disproportionately large load on - GovTech’s servers. + GovTech's servers. + + + You shall comply with all set-up procedures and + requirements, as well as all policies, guidelines, rules, + notices and instructions relating to the Service as may be + issued by and/or amended by GovTech from time to time. @@ -320,31 +460,30 @@ export const TermsOfUsePage = (): JSX.Element => { isNumericMarker > The Service may require, enable or facilitate access to or - use of software or services of a third party (" - Third Party - "). In such an event, there may be terms of use of the third - party software or service (the "Third Party Terms"). - GovTech may be required under or as a result of the Third - Party Terms to notify you of certain terms that apply to you - (either directly as an end user, or as a party whose acts or - omissions could cause GovTech to breach the Third Party - Terms) when you use the Services. An example of Third Party - Terms may be open source software terms or standard form - terms of the distribution platform from which you obtain any - part of the Service (e.g. Google Play Store or Apple App - Store terms) which bind GovTech as a developer or user of - the distribution platform (the "Distribution Terms"). - Information on the Third Party Terms are embedded in the - Service, already accounted for in these Terms of Use, - publicly available (e.g the Distribution Terms) or otherwise - listed in the Schedule herein. For the avoidance of doubt, - insofar as this Clause 4 relates to the Distribution Terms, - the relevant Distribution Terms are the terms of the - specific platform from which you obtained a copy of the - software or application that is part of the Service. For - example, if you obtained the said copy from the Google Play - Store, then the relevant terms are Google’s Distribution - Terms. + use of software or services of a third party (“ + Third Party”). In such an event, there may be terms + of use of the third party software or service (the “ + Third Party Terms”). GovTech may be required under or + as a result of the Third Party Terms to notify you of + certain terms that apply to you (either directly as an end + user, or as a party whose acts or omissions could cause + GovTech to breach the Third Party Terms) when you use the + Services. An example of Third Party Terms may be open source + software terms or standard form terms of the distribution + platform from which you obtain any part of the Service (e.g. + Google Play Store or Apple App Store terms) which bind + GovTech as a developer or user of the distribution platform + (the “Distribution Terms”). Information on the Third + Party Terms are embedded in the Service, already accounted + for in these Terms of Use, publicly available (e.g the + Distribution Terms) or otherwise indicated in the Schedule + herein. For the avoidance of doubt, insofar as this Clause 4 + relates to the Distribution Terms, the relevant Distribution + Terms are the terms of the specific platform from which you + obtained a copy of the software or application that is part + of the Service. For example, if you obtained the said copy + from the Google Play Store, then the relevant terms are + Google's Distribution Terms. { Party Terms that GovTech (under the Third Party Terms) is required to notify you, and you unconditionally agree to be bound by all the obligations in the Third Party Terms which - are applicable to you as the end user. For the avoidance of + are applicable to you (whether as end user, or as a party + whose acts or omissions could cause GovTech to breach the + Third Party Terms, or otherwise). For the avoidance of doubt, where Third Party Terms are listed, such Third Party Terms shall be deemed to include any privacy policies and acceptable use policies as are applicable to you. @@ -426,6 +567,16 @@ export const TermsOfUsePage = (): JSX.Element => { Party, such direct rights of enforcement against you. + Unless the applicable Third Party Terms permit you to + commence legal proceedings against the relevant Third Party, + you shall not threaten or commence legal proceedings against + a Third Party without GovTech's prior written approval. + + @@ -447,18 +598,56 @@ export const TermsOfUsePage = (): JSX.Element => { - Your Consent to Access Functions of Your Device + Your Consent to Your Data and to Access Functions of Your + Device - - Use of the Service may require you to allow access by the - Service to certain functions of your device, such as push - notifications, the obtaining and/or sharing of your location, - or the collection of data from you in connection with the - Service. Please also see clause 8 (Privacy Policy). Your use - of the Service shall constitute your consent to the access by - the Service of such functions of your device as may be - reasonably required by the Service. - + + + You hereby grant to GovTech a non-exclusive, worldwide, + perpetual and royalty-free right to collect, use, disclose, + process, modify, adapt, create derivative works of, + reproduce, and sublicense any and all information or data + submitted, uploaded or shared by you to the extent necessary + to provide the Service or for any other purpose expressly or + impliedly provided in these Terms of Use, or as permitted by + law. + + + Use of the Service may require you to allow access by the + Service to certain functions of your device, such as push + notifications, the obtaining and/or sharing of your + location, or the collection of data from you in connection + with the Service. Your use of the Service shall constitute + your consent to the access by the Service of such functions + of your device as may be reasonably required by the Service. + + + You further irrevocably and unconditionally waive, and shall + cause to be irrevocably and unconditionally waived, all + existing and future moral rights (including the right of + identification) wherever in the world in respect of any + information or data submitted, uploaded or shared by you + (including feedback, requests or suggestions concerning the + Services) to GovTech. Such waiver shall also extend to + GovTech's licencees, assigns and successors-in-title. + + + Please also see clause 8 (Privacy Statement). + + @@ -466,8 +655,11 @@ export const TermsOfUsePage = (): JSX.Element => { You agree that all title and interest in any feedback, - requests or suggestions from you concerning the Services shall - be owned by GovTech. + requests or suggestions from you concerning the Services + provided to GovTech shall be owned by GovTech and, without + prejudice and in addition to clause 5.3, you shall waive all + rights existing in or in respect of the same (including, for + the avoidance of doubt, any signature requirements). @@ -534,8 +726,8 @@ export const TermsOfUsePage = (): JSX.Element => { prependSequenceMarker="5B." isNumericMarker > - Nothing in this Clause 5B shall prejudice GovTech’s or the - Third Party’s other rights at law. + Nothing in this Clause 5B shall prejudice GovTech's or the + Third Party's other rights at law. @@ -597,7 +789,7 @@ export const TermsOfUsePage = (): JSX.Element => { or indirect, special or consequential damages, loss of income, revenue or profits, lost or damaged data, or damage to your computer, software or any other property, - whether arising directly or indirectly from – + whether or not arising directly or indirectly from – { > any decision made or action taken by you or any third - party in reliance upon the Service, + party in reliance upon the Service, regardless of + whether GovTech has been advised of the possibility of + such damage or loss. - - regardless of whether GovTech has been advised of the - possibility of such damage or loss. - { You shall not rely on any part of the Service to claim or assert any form of legitimate expectation against GovTech, whether or not arising out of or in connection with - GovTech’s roles and functions as a public authority. + GovTech's roles and functions as a public authority. GovTech + shall have no responsibility or liability to you or any + third party arising out of or in connection with any fraud, + phishing, or any other illegal act or omission by other + parties in relation to the Service and it is your own + responsibility to ensure that the Service you are using or + accessing is from a legitimate source. - You agree to defend and indemnify and keep GovTech and its - officers, employees, agents and contractors harmless against - all liabilities, losses, damages, costs or expenses - (including legal costs on an indemnity basis) howsoever - arising out of or in connection with your access or use of - the Service (including third party software or services) or - your non-compliance with the Terms of Use, Third Party Terms - or Incorporated Terms, whether or not you had been advised - or informed of the nature or extent of such liabilities, - losses, damages, costs or expenses. You warrant and - represent that your access or use of the Service does not - and will not breach or violate any laws, regulations, trade, - economic and/or export sanctions (wherever in the world) - applicable to you, and that you shall not transmit any - malicious code, illegal, infringing or undesirable content - or materials to GovTech or its agents or any Third Party. + + You agree to defend and indemnify and keep GovTech and its + officers, employees, agents and contractors harmless + against all liabilities, losses, damages, costs or + expenses (including legal costs on an indemnity basis) + howsoever arising out of or in connection with your access + or use of the Service (including third party software or + services) or your non-compliance with the Terms of Use, + Third Party Terms or Incorporated Terms, whether or not + you had been advised or informed of the nature or extent + of such liabilities, losses, damages, costs or expenses. + You warrant and represent that your access or use of the + Service does not and will not breach or violate any laws, + regulations, trade, economic and/or export sanctions + (wherever in the world) applicable to you, and that you + shall not transmit any malicious code, illegal, infringing + or undesirable content or materials to GovTech or its + agents or any Third Party. + + + + GovTech shall have the right to take any and all necessary + actions/omissions to protect its interests, including + complying with any legal requirements (such as taking down, + disabling and disabling access to, removing (permanently or + temporarily), and/or restoring (including restoring access + to) any materials contained in, accessed through, uploaded + to, and/or made available via the Service in response to any + take-down or restoration notices). You agree that GovTech is + not obliged to determine the merits of any take-down or + restoration notices. You further waive any rights arising as + a result of the actions/omissions taken by GovTech. - Without prejudice and in addition to GovTech’s other rights - herein: + Without prejudice and in addition to GovTech's other rights: - in no event shall GovTech’s total cumulative liability + in no event shall GovTech's total cumulative liability arising out of or in connection with these Terms of Use to you exceed the amount of fees or payment received by GovTech (and not paid or given to any Third Party by @@ -754,7 +968,7 @@ export const TermsOfUsePage = (): JSX.Element => { > Caching and hyperlinking to, and the framing of, any part of the Service is prohibited save where you have obtained - GovTech’s prior written consent. Such consent may be subject + GovTech's prior written consent. Such consent may be subject to any conditions as may be determined by GovTech in its sole discretion. If you hyperlink to or frame any part of the Service, that shall constitute your acceptance of these @@ -794,20 +1008,24 @@ export const TermsOfUsePage = (): JSX.Element => { - Privacy Policy + Privacy Statement - You also agree to the terms of the Privacy Policy for this - Service as may be amended from time to time. The Privacy - Policy will form part of these Terms of Use. + You also agree to the terms of the Government Agency Privacy + Statement for this Service as may be amended from time to + time. The Government Agency Privacy Statement will form part + of these Terms of Use. Rights of Third Parties - Subject to the rights of the Third Party, a person who is not - a party to this Terms of Use shall have no right under the - Contract (Rights of Third Parties) Act or otherwise to enforce - any of its terms. + Subject to the rights of the Third Party and/or Singapore + public sector agencies, a person who is not a party to this + Terms of Use shall have no right under the Contract (Rights of + Third Parties) Act or otherwise to enforce any of its terms. + Variation or rescission of these Terms of Use shall not + require the consent of any third party, including any Third + Party and/or other Singapore public sector agencies. @@ -848,6 +1066,68 @@ export const TermsOfUsePage = (): JSX.Element => { invalid or unenforceable terms. + + Order of Precedence + + In the event of any conflict, inconsistency or ambiguity + between or in any one or more terms in these Terms of Use, + such conflict, inconsistency or ambiguity shall be resolved in + favour of GovTech and the provision or interpretation which is + more favourable to GovTech shall prevail. Notwithstanding any + other term, GovTech has the sole and absolute discretion to + determine which term or interpretation is more favourable to + it and such decision shall be binding on you. + + + + Entire Agreement + + These Terms of Use contains the entire and whole agreement + concerning the subject matter of these Terms of Use. The Terms + of Use supersedes all prior written or oral representations, + agreements and/or understandings between GovTech and yourself. + Except for amendments by GovTech under these Terms of Use, no + amendment to these Terms of Use shall be of any force unless + agreed upon in writing by both parties. + + + + Waiver + + + Any delay, failure or omission on the part of GovTech in + enforcing any right, power, privilege, claim or remedy (“ + Remedy”), which is conferred under the Terms of Use + or at law or in equity, or arises from any breach by you, + shall not (a) be deemed to be or be construed as a waiver or + variation of the Remedy, or of any other such Remedy, in + respect of the particular circumstances in question, or (b) + operate so as to bar the enforcement or exercise of the + Remedy, or of any other such Remedy in any other subsequent + instances. + + + No waiver by GovTech of any breach of the Terms of Use by + you shall be deemed to be a waiver of any other or of any + subsequent breach. + + + Any waiver by GovTech granted under the Terms of Use must be + in writing and may be given subject to conditions. Such + waiver under the Terms of Use shall be effective only in the + instance and for the purpose for which it is given. + + + Governing Law and Dispute Resolution @@ -916,7 +1196,7 @@ export const TermsOfUsePage = (): JSX.Element => { given at least 30 days before the commencement of any legal action against it to elect to exercise the right herein to have the dispute submitted to arbitration. This - right to elect shall not prejudice GovTech’s right to a + right to elect shall not prejudice GovTech's right to a limitation defence and the period to exercise the right shall not be abridged by reason of any accrual of a limitation defence in favour of GovTech during the said @@ -926,7 +1206,7 @@ export const TermsOfUsePage = (): JSX.Element => { - These Terms of Use are dated 29 January 2024. + These Terms of Use are dated 30 Jan 2024. @@ -934,7 +1214,7 @@ export const TermsOfUsePage = (): JSX.Element => { - Name of Service: Form + Name of Service: FormSG Nature of Service @@ -944,15 +1224,41 @@ export const TermsOfUsePage = (): JSX.Element => { Notwithstanding anything in the Terms of Use, the Service is - intended for use by a Singapore public sector agency or a - healthcare institution that is under the NHG, SingHealth, or - NUHS healthcare clusters only. "You" in (a) to (e) refers to - such entities. + intended for use by: + + + a Singapore public sector agency, + + + an entity authorised by a Singapore public sector + agency, + + + a healthcare institution that is under the National + Healthcare Group (“NHG”), Singapore Health + Services (“SingHealth”), or National University + Health System (“NUHS”); or + + + an entity owned and operated by MOH Holdings (“ + MOHH”). + + + "You" in (a) to (e) refers to such entities. This Service is a form builder tool for the permitted entities (listed in sub-paragraph (a) above) to build their - own online forms. + own online forms and, via the Payments feature, facilitate + the making of e-payments to permitted entities (listed in + sub-paragraph (a) above) by persons making payment to such + entities (the "Payor"). Please note that GovTech may collect, store and/or process @@ -971,8 +1277,8 @@ export const TermsOfUsePage = (): JSX.Element => { GovTech shall have the right to give your form respondents - notice of GovTech’s Terms of Use and Privacy Policy in the - forms you create. + notice of GovTech's Terms of Use and Privacy Statement in + the forms you create. If you are responding to a form, (f) to (h) apply to you: @@ -982,13 +1288,13 @@ export const TermsOfUsePage = (): JSX.Element => { Please note that GovTech may be collecting data on behalf of - the form creator. GovTech’s Privacy Policy will also apply - to you. + the form creator. GovTech's Privacy Statement will also + apply to you. - GovTech’s Terms of Use and Privacy Policy apply in addition - to any terms or privacy policy/statement of the form - creator. + GovTech's Terms of Use and Privacy Statement apply in + addition to any terms or privacy policy/statement of the + form creator. @@ -1007,12 +1313,80 @@ export const TermsOfUsePage = (): JSX.Element => { - Special terms/notices + Special terms - + + If you are a form creator using the Payments feature, the + following sub-sections apply to you. + + + You must have a pre-existing agreement with Stripe in + order to use the Service which will link to the services + provided by Stripe; + + + You shall be responsible for binding the Payor to any + terms and conditions or privacy policies applicable to + the goods/services being paid for and any payment for + the same, including any third party terms such as any + account opening or API terms or privacy policies of + Stripe, prior to the Payor's use of the Service. These + terms must be consistent with these Terms of Use; + + + You shall ensure that your terms with Stripe permit the + usage of the Service by you and GovTech's use of Stripe + software (such as any APIs) for your benefit or on your + behalf. Notwithstanding anything to the contrary + (including where GovTech obtains the APIs directly from + Stripe), you shall ensure that Stripe shall have no + claim, demand, or cause of action against GovTech + arising out of or in connection with the Service or + GovTech's use of the aforesaid software or Stripe and + that GovTech shall not be required to enter into any + agreement with Stripe. You are solely responsible for + compliance with the terms of Stripe if GovTech uses + Stripe or software from Stripe for your benefit or on + your behalf. + + + {' '} + You shall be liable for any disputed payments made + through the Service. + + + + + If you are a Payor making payment to a permitted entity: + + + GovTech DOES NOT provide, own or operate the services or + goods that are being paid for and is not responsible for + the fulfilment or quality of the services or goods, or + any payments disputes arising therefrom; + + + Please note that you may be bound by additional terms + and conditions or privacy policies in respect of the + goods/services as may be imposed by the permitted + entity; + + + Any issues concerning payment (such as refunds or + cancellations) should be directed to the permitted + entity requesting payment; + + + GovTech may withhold certain functions of the Service + from you which are unrelated to your capacity as Payor + (such as payment dashboards). + + + + Certain image(s) or footage (as applicable) are used under - license from Shutterstock.com. - + licence from Shutterstock.com. + diff --git a/package-lock.json b/package-lock.json index 4b59bb2ccd..2d3a407cf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "FormSG", - "version": "6.104.0", + "version": "6.106.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "FormSG", - "version": "6.104.0", + "version": "6.106.0", "hasInstallScript": true, "dependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.347.1", diff --git a/package.json b/package.json index 39dc71a02a..8105327d10 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "FormSG", "description": "Form Manager for Government", - "version": "6.104.0", + "version": "6.106.0", "homepage": "https://form.gov.sg", "authors": [ "FormSG " diff --git a/scripts/20220217_multi-language-stats/index.js b/scripts/20220217_multi-language-stats/index.js index eeef55894e..20415a2798 100644 --- a/scripts/20220217_multi-language-stats/index.js +++ b/scripts/20220217_multi-language-stats/index.js @@ -1,6 +1,7 @@ const MongoClient = require('mongodb').MongoClient, ObjectId = require('mongodb').ObjectId, - _ = require('lodash') + _ = require('lodash'), + fs = require('fs') const categories = ['un', 'cn', 'ta', 'ms', 'en'] @@ -111,7 +112,7 @@ async function getStats(db) { ]), ) - const printFormTSVReport = async (header, filter) => { + const outputFormTSVReport = async (header, filename, filter) => { console.log('========================================') console.log(header) const formIds = Object.keys(formsById).filter(filter) @@ -126,29 +127,34 @@ async function getStats(db) { form.agency = await getAgencyFromAdminId(form.admin) } - console.log( - formIds - .map((id) => - [ - id, - formsById[id].title, - [...formsById[id].langs].sort().join('+'), - `${formsById[id].agency.shortName} (${formsById[id].agency.fullName})`, - formsById[id].status, - formsById[id].numSubmissions, - ].join('\t'), - ) - .join('\n'), - ) + const reportContent = formIds + .map((id) => + [ + id, + formsById[id].title, + [...formsById[id].langs].sort().join('+'), + `${formsById[id].agency.shortName} (${formsById[id].agency.fullName})`, + formsById[id].status, + formsById[id].numSubmissions, + ].join('\t'), + ) + .join('\n') + + // 1. print report to console + console.log(reportContent) + // 2. save report to file + fs.writeFileSync(filename, reportContent) } - await printFormTSVReport( + await outputFormTSVReport( 'Getting agency and number of submissions for forms with multi-languages', + 'forms_multi_languages.tsv', (id) => formsById[id].langs.size > 1, ) - await printFormTSVReport( + await outputFormTSVReport( 'Getting agency and number of submissions for non-english forms', + 'forms_non_english_single_language.tsv', (id) => formsById[id].langs.size === 1 && !formsById[id].langs.has('en') &&