Skip to content
This repository has been archived by the owner on Nov 26, 2024. It is now read-only.

Commit

Permalink
privacy
Browse files Browse the repository at this point in the history
  • Loading branch information
rahuldevgarg committed Nov 24, 2023
1 parent 94f2d94 commit 86f102d
Show file tree
Hide file tree
Showing 8 changed files with 285 additions and 16 deletions.
24 changes: 12 additions & 12 deletions frontend/mgramseva/docker/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ server
index index.html index.htm;
try_files $uri $uri/ /mgramseva/consumerDownloadBill/index.html;
}
location /mgramseva/privacy
{
root /var/web;
index index.html index.htm;
try_files $uri $uri/ /mgramseva/privacy/index.html;
}
location /mgramseva/terms
{
root /var/web;
index index.html index.htm;
try_files $uri $uri/ /mgramseva/terms/index.html;
}
# location /mgramseva/privacy
# {
# root /var/web;
# index index.html index.htm;
# try_files $uri $uri/ /mgramseva/privacy/index.html;
# }
# location /mgramseva/terms
# {
# root /var/web;
# index index.html index.htm;
# try_files $uri $uri/ /mgramseva/terms/index.html;
# }
}
2 changes: 2 additions & 0 deletions frontend/mgramseva/lib/routers/routers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,6 @@ class Routes {

static const String NOTIFICATIONS = '/home/notifications';
static const String REPORTS = '/home/reports';
static const String PRIVACY_POLICY = '/privacy';
static const String TERMS_OF_USE = '/terms';
}
17 changes: 15 additions & 2 deletions frontend/mgramseva/lib/routing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import 'package:mgramseva/screeens/household_register/household_register.dart';
import 'package:mgramseva/screeens/login/login.dart';
import 'package:mgramseva/screeens/notifications/notification_screen.dart';
import 'package:mgramseva/screeens/password_success/password_success.dart';
import 'package:mgramseva/screeens/privacy_and_terms/PrivacyAndTerms.dart';
import 'package:mgramseva/screeens/profile/edit_profile.dart';
import 'package:mgramseva/screeens/reports/reports.dart';
import 'package:mgramseva/screeens/reset_password/reset_password.dart';
Expand Down Expand Up @@ -139,12 +140,14 @@ class Routing {
Routes.LOGIN != settings.name &&
Routes.FORGOT_PASSWORD != settings.name &&
Routes.DEFAULT_PASSWORD_UPDATE != settings.name &&
Routes.RESET_PASSWORD != settings.name) {
Routes.RESET_PASSWORD != settings.name &&
Routes.PRIVACY_POLICY != settings.name &&
Routes.TERMS_OF_USE != settings.name) {
path = Routes.SELECT_LANGUAGE;
} else if (Routes.LOGIN == settings.name ||
Routes.FORGOT_PASSWORD == settings.name ||
Routes.DEFAULT_PASSWORD_UPDATE == settings.name ||
Routes.RESET_PASSWORD == settings.name) {
Routes.RESET_PASSWORD == settings.name || Routes.PRIVACY_POLICY == settings.name || Routes.TERMS_OF_USE == settings.name) {
path = settings.name;
} else if (path == '/') {
path = Routes.HOME;
Expand Down Expand Up @@ -355,6 +358,16 @@ class Routing {
return MaterialPageRoute(
builder: (_) => Reports(),
settings: RouteSettings(name: Routes.REPORTS));
case Routes.PRIVACY_POLICY:
Object? args = settings.arguments;
return MaterialPageRoute(
builder: (_) => PrivacyAndTerms(pageType:Routes.PRIVACY_POLICY,showLeading: args==null?false:args as bool,),
settings: RouteSettings(name: Routes.PRIVACY_POLICY));
case Routes.TERMS_OF_USE:
Object? args = settings.arguments;
return MaterialPageRoute(
builder: (_) => PrivacyAndTerms(pageType: Routes.TERMS_OF_USE,showLeading: args==null?false:args as bool,),
settings: RouteSettings(name: Routes.TERMS_OF_USE));

case Routes.SEARCH_CONSUMER_RESULT:
if (settings.arguments == null) {
Expand Down
4 changes: 3 additions & 1 deletion frontend/mgramseva/lib/screeens/login/login.dart
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,11 @@ class _LoginState extends State<Login> {
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.pushNamed(context, Routes.PRIVACY_POLICY,arguments:true);
},
),
TextSpan(
text: 'and',
text: ' and ',
style: TextStyle(
color: Colors.black
)
Expand All @@ -163,6 +164,7 @@ class _LoginState extends State<Login> {
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.pushNamed(context, Routes.TERMS_OF_USE,arguments:true);
},
),
],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import 'package:flutter/material.dart';
import 'package:mgramseva/screeens/privacy_and_terms/PrivacyWidget.dart';
import 'package:provider/provider.dart';

import '../../providers/language.dart';
import '../../routers/routers.dart';
import '../../widgets/footer.dart';
import 'TermsAndConditionWidget.dart';

class PrivacyAndTerms extends StatefulWidget {
final String pageType;
final bool showLeading;
const PrivacyAndTerms({Key? key, required this.pageType, this.showLeading = false}) : super(key: key);

@override
State<PrivacyAndTerms> createState() => _PrivacyAndTermsState();
}

class _PrivacyAndTermsState extends State<PrivacyAndTerms> {
@override
Widget build(BuildContext context) {
var languageProvider =
Provider.of<LanguageProvider>(context, listen: false);
return Scaffold(
backgroundColor: Theme.of(context).backgroundColor,
appBar: AppBar(
titleSpacing: 0,
centerTitle: true,
automaticallyImplyLeading: widget.showLeading,
title: Image(
width: 130,
image: NetworkImage(
languageProvider.stateInfo!.logoUrlWhite!,
)),
),
body: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
alignment: Alignment.center,
width: MediaQuery.of(context).size.width>800?MediaQuery.of(context).size.width*0.75:MediaQuery.of(context).size.width*0.95,
child: Card(
child: SingleChildScrollView(
child: Column(
children: [
widget.pageType==Routes.PRIVACY_POLICY?PrivacyWidget():TermsAndConditionWidget(),
Align(
alignment: Alignment.bottomCenter,
child: Footer())
],
),
),
),
),
),
],
),
);
}
}
119 changes: 119 additions & 0 deletions frontend/mgramseva/lib/screeens/privacy_and_terms/PrivacyWidget.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import 'package:flutter/material.dart';

class PrivacyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Privacy Policy',
style: TextStyle(fontSize: 26, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Text('Last updated: Nov 24th, 2023', style: TextStyle(fontSize: 12)),
SizedBox(height: 16),
Text(
'This privacy policy ("Privacy Policy") is in this context governs the access and usage of the mGramSeva mobile application and web portal (https://mgramseva-dwss.punjab.gov.in), an initiative of the DWSS,'
'\n Department of Water Supply and Sanitation, Government of Punjab, Bharat.'
'\n This policy outlines how mGramSeva handles personal and usage information in accordance with applicable Indian laws.',
style: TextStyle(fontSize: 12),
),
SizedBox(height: 16),
Text(
'1. Types of Information Collected:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Text(
'We collect various types of information, including personal, demographic, location, and device-related data. The information collected depends on the services used and may vary over time.',
),
SizedBox(height: 16),
Text(
'2. Use of Personal Information and Collected Data:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(' • Personal Information is used to customize service offerings and enhance user experience.'),
Text(' • Device and location information helps in adapting content/display based on user preferences and recommending relevant services.'),
Text(' • Aadhaar-related information provided for Department Services is not stored at mGramSeva.'),
],
),
SizedBox(height: 16),
Text(
'3. Management of Personal Information:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(' • Personal information is stored in encrypted form and shared with registered Service Providers only when necessary for delivering requested services.'),
Text(' • Information is not shared with any other individual or party without express consent, except as required by applicable laws.'),
Text(' • Collected information is primarily used for user categorization and analytics purposes.'),
],
),
SizedBox(height: 16),
Text(
'4. User Control:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(' • Users can control cookies through browser settings and are advised to close sessions after use.'),
Text(' • Users can review and opt-out of communications.'),
Text(' • Personal Information is retained in encrypted form for legal requirements/compliances for a minimum of three years after deletion/termination.'),
],
),
SizedBox(height: 16),
Text(
'5. Use of Personal Information:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(' • Personal information may be used for providing services and facilitating service deliveries.'),
Text(' • Sending promotional features/materials regarding mGramSeva and services offered by government and private organizations.'),
Text(' • Enhancing the efficiency/quality of services.'),
Text(' • Resolving disputes, monitoring user activity, and preventing unlawful activities.'),
Text(' • Conducting research or analyzing user preferences and demographics.'),
Text(' • Any other purpose required under applicable laws.'),
],
),
SizedBox(height: 16),
Text(
'6. Information Sharing:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(' • Personal information may be shared with law enforcement and government departments for legal compliance and protection against harm.'),
Text(' • All information is held in encrypted form, and communication channels are encrypted using SSL.'),
],
),
SizedBox(height: 16),
Text(
'7. Grievance Redressal:',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Text('In case of grievances, complaints can be sent to [email protected].'),
Text('Or write us at:'),
Text(' Head Office, Department of Water Supply & Sanitation, Punjab'),
Text(' Phase 2, Sector 54, S.A.S. Nagar (Mohali), PIN: 160055'),
],
),
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import 'package:flutter/material.dart';

class TermsAndConditionWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
padding: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Terms and Conditions (TNC) for mGramSeva',
style: TextStyle(fontSize: 26, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Text('Last updated: Nov 24th, 2023', style: TextStyle(fontSize: 12)),
SizedBox(height: 16),
buildSection('1. Acceptance of Terms', '''
By accessing and using mGramSeva, you agree to be bound by these Terms of Service/Use. If you do not consent to these Terms or any part thereof, refrain from downloading/accessing mGramSeva and using its services. Your consent to these Terms is mandatory.
'''),
buildSection('2. Scope and Offered Services', '''
mGramSeva is designed to provide citizens with single point access to Panchayat level services. The scope of services will evolve over time.
'''),
buildSection('3. Responsibility and Ownership of Information', '''
Users are responsible for the authenticity of personal information provided during registration. mGramSeva and its registered Service Providers may store information electronically for service delivery, personalization, analytics, and legal requirements. mGramSeva reserves the right to refuse or remove unlawful, offensive, or violative content.
'''),
buildSection('4. Consent for Aadhaar Registration', '''
By registering with Aadhaar, users authorize mGramSeva to use Aadhaar information for authentication and fetching eKYC data from UIDAI servers for service delivery.
'''),
buildSection('5. Limitation on Liability', '''
mGramSeva does not guarantee specific requirements, uninterrupted availability, 100% security, or error-free operation. In no event will mGramSeva, or the Government of Punjab be liable for any loss or damage arising from the use of mGramSeva.
'''),
buildSection('6. Limitation on Use', '''
mGramSeva is for Employees of DWSS use only, and commercial exploitation is prohibited. Users shall not decompile, reverse engineer, or engage in unauthorized use. Unauthorized software/tools to access, monitor, or copy mGramSeva is prohibited.
'''),
buildSection('7. Right to Modify or Terminate', '''
mGramSeva reserves the right to modify or discontinue the service, with or without notice. mGramSeva may terminate user accounts and refuse future use without prior notice. Such termination may result in the loss of account content.
'''),
buildSection('8. Applicable Law', '''
These Terms are governed by Indian law. Any dispute arising under these Terms is subject to the exclusive jurisdiction of the courts located in Mohali, Punjab.
'''),
buildSection('9. Proprietary Rights and License', '''
All trademarks, copyright, and intellectual property rights in mGramSeva belong to, Government of Punjab, India. Unauthorized use may result in legal action.
'''),
buildSection('10. Conditions of Use', '''
mGramSeva and its services are not available to individuals previously removed from using mGramSeva services by the Government of Punjab, India.
'''),
Text(
'These Terms supersede all earlier versions, and users are encouraged to review the mGramSeva website for further details and updates. Your continued use of mGramSeva implies acceptance of any changes.',
style: TextStyle(fontSize: 12),
),
],
),
);
}

Widget buildSection(String title, String content) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 8),
Text(content),
SizedBox(height: 16),
],
);
}
}
2 changes: 1 addition & 1 deletion frontend/mgramseva/web/privacy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<p class="c1"><span class="c0">&nbsp;</span></p>
<p class="c1"><span class="c4">This privacy policy (&ldquo;Privacy Policy&rdquo;) is in this context governs the access and usage of the mGramSeva mobile application and web portal (</span><span
class="c4 c12"><a class="c13"
href="https://www.google.com/url?q=https://mgramseva-dwss.punjab.gov.in/&amp;sa=D&amp;source=editors&amp;ust=1700822148833105&amp;usg=AOvVaw22MB5tJqegq6mcLwLMONjj">https://mgramseva-dwss.punjab.gov.in</a></span><span
href="https://mgramseva-dwss.punjab.gov.in/">https://mgramseva-dwss.punjab.gov.in</a></span><span
class="c0">), an initiative of the DWSS, Department of Water Supply and Sanitation, Government of Punjab, Bharat. This policy outlines how mGramSeva handles personal and usage information in accordance with applicable Indian laws.</span>
</p>
<p class="c1"><span class="c0">&nbsp;</span></p>
Expand Down

0 comments on commit 86f102d

Please sign in to comment.