Compare commits

..

13 Commits

Author SHA1 Message Date
kuaifan
7e74bfe7db perf: 升级election框架 2022-10-07 09:26:17 +08:00
kuaifan
ce162bf414 fix pdf view 2022-09-30 22:53:56 +08:00
kuaifan
0d74e8f04b no message 2022-09-30 17:00:23 +08:00
kuaifan
dd447de467 fix: umeng mi push 2022-09-30 15:46:08 +08:00
kuaifan
02e99db26e 同意用户协议之前不显示sso窗口 2022-09-22 17:52:59 +08:00
kuaifan
8e36b48476 no message 2022-09-22 16:19:30 +08:00
kuaifan
38c4e611c3 app打开默认弹出隐私弹窗 2022-09-22 16:08:31 +08:00
guoshuxin
10c68a7dc5 隐私政策(3) 2022-09-22 11:47:59 +08:00
guoshuxin
d164eb45d5 no message 2022-09-22 11:47:29 +08:00
kuaifan
7ab858088b 隐私政策同意相关 2022-09-22 11:16:28 +08:00
kuaifan
7ab20707c3 更换隐私政策cdn资源 2022-09-22 10:57:45 +08:00
kuaifan
3b36d2039c 更新隐私政策 2022-09-21 18:13:34 +08:00
guoshuxin
dd2e921667 隐私政策 2022-09-21 18:11:05 +08:00
17 changed files with 185 additions and 46 deletions

View File

@@ -290,7 +290,9 @@ class IndexController extends InvokeController
$userAgent = strtolower(Request::server('HTTP_USER_AGENT'));
if ($ext === 'pdf'
&& (str_contains($userAgent, 'electron') || str_contains($userAgent, 'chrome'))) {
return response()->download($file, $name, [], 'inline');
return response()->download($file, $name, [
'Content-Type' => 'application/pdf'
], 'inline');
}
//
if (in_array($ext, File::localExt)) {

View File

@@ -128,13 +128,11 @@ class UmengAlias extends AbstractModel
'type' => 'customizedcast',
'alias_type' => 'userid',
'alias' => $alias,
'mipush' => true,
'mi_activity' => 'app.eeui.umeng.activity.MfrMessageActivity',
'policy' => [
'expire_time' => Carbon::now()->addSeconds($seconds)->toDateTimeString(),
],
'channel_properties' => [
'channel_activity' => 'app.eeui.umeng.activity.MfrMessageActivity',
'huawei_channel_importance' => 'NORMAL'
],
]
]);
default:

View File

@@ -26,13 +26,13 @@
"url": "https://github.com/kuaifan/dootask.git"
},
"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.64",
"@electron-forge/maker-deb": "^6.0.0-beta.64",
"@electron-forge/maker-rpm": "^6.0.0-beta.64",
"@electron-forge/maker-squirrel": "^6.0.0-beta.64",
"@electron-forge/maker-zip": "^6.0.0-beta.64",
"@electron-forge/cli": "^6.0.0-beta.67",
"@electron-forge/maker-deb": "^6.0.0-beta.67",
"@electron-forge/maker-rpm": "^6.0.0-beta.67",
"@electron-forge/maker-squirrel": "^6.0.0-beta.67",
"@electron-forge/maker-zip": "^6.0.0-beta.67",
"dotenv": "^16.0.1",
"electron": "^20.1.1",
"electron": "^21.1.0",
"electron-builder": "^23.3.3",
"electron-notarize": "^1.2.1",
"form-data": "^4.0.0",
@@ -43,7 +43,7 @@
"crc": "^3.8.0",
"electron-log": "^4.4.8",
"electron-squirrel-startup": "^1.0.0",
"electron-updater": "^5.0.5",
"electron-updater": "^5.2.1",
"fs-extra": "^10.1.0",
"pdf-lib": "^1.17.1"
},

View File

@@ -1,6 +1,6 @@
{
"name": "DooTask",
"version": "0.20.23",
"version": "0.20.35",
"description": "DooTask is task management system.",
"scripts": {
"start": "./cmd dev",

2
public/css/app.css vendored

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[565],{89565:(t,e,n)=>{n.r(e),n.d(e,{default:()=>p});var a=n(20629),i=n(80641),s=n(9669),o=n.n(s);function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach((function(e){u(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const l={data:function(){return{version:window.systemInfo.version}},mounted:function(){},computed:c(c({},(0,a.rn)(["userInfo","userIsAdmin","clientNewVersion"])),{},{routeName:function(){return this.$route.name},show768Menu:function(){return"manage-setting"===this.routeName},menu:function(){var t=[{path:"personal",name:"个人设置"},{path:"language",name:"语言设置"},{path:"password",name:"密码设置"},{path:"email",name:"修改邮箱"}];return["127.0.0.1:2222","dootask.com","www.dootask.com","t.hitosea.com"].includes($A.getDomain($A.apiUrl("../")))&&this.$isEEUiApp&&t.push.apply(t,[{path:"privacy",name:"隐私政策",divided:!0},{path:"delete",name:"删除帐号"}]),this.userIsAdmin?t.push.apply(t,[{path:"system",name:"系统设置",divided:!0},{path:"clearCache",name:"清除缓存"},{path:"logout",name:"退出登录"}]):t.push.apply(t,[{path:"clearCache",name:"清除缓存",divided:!0},{path:"logout",name:"退出登录"}]),t},titleNameRoute:function(){var t=this.routeName,e=this.menu,n="";return e.some((function(e){if(t==="manage-setting-".concat(e.path))return n=e.name,!0})),n||"设置"}}),watch:{routeName:{handler:function(t){"manage-setting"===t&&this.windowLarge&&this.goForward({name:"manage-setting-personal"},!0)},immediate:!0}},methods:{toggleRoute:function(t){var e=this;switch(t){case"clearCache":this.$store.dispatch("handleClearCache",null).then((function(){$A.setStorage("clearCache",$A.randomString(6)),$A.reloadUrl()})).catch((function(){$A.reloadUrl()}));break;case"logout":$A.modalConfirm({title:"退出登录",content:"你确定要登出系统?",onOk:function(){e.$store.dispatch("logout",!1)}});break;case"version":i.Store.set("updateNotification",null);break;case"privacy":this.openPrivacy();break;case"index":this.goForward({name:"manage-setting"});break;default:this.goForward({name:"manage-setting-"+t})}},openPrivacy:function(){var t=$A.apiUrl("../privacy.html");this.$isEEUiApp?$A.eeuiAppOpenPage({pageType:"app",pageTitle:" ",url:"web.js",params:{url:t,browser:!0,showProgress:!0}}):window.open(t)},classNameRoute:function(t,e){return{active:this.windowLarge&&this.routeName==="manage-setting-".concat(t),divided:!!e}},onVersion:function(){var t=this;o().get($A.apiUrl("system/version")).then((function(e){var n=e.status,a=e.data;if(200===n){var i="".concat(t.$L("服务器"),": ").concat($A.getDomain($A.apiUrl("../")));i+="<br/>".concat(t.$L("服务器版本"),": v").concat(a.version),i+="<br/>".concat(t.$L("客户端版本"),": v").concat(t.version),$A.modalInfo({language:!1,title:"版本信息",content:i})}})).catch((function(t){}))}}};const p=(0,n(51900).Z)(l,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-setting"},[n("PageTitle",{attrs:{title:t.$L(t.titleNameRoute)}}),t._v(" "),n("div",{staticClass:"setting-head"},[n("div",{staticClass:"setting-titbox"},[n("div",{staticClass:"setting-title"},[n("h1",[t._v(t._s(t.$L("设置")))]),t._v(" "),t.show768Menu?t._e():n("div",{staticClass:"setting-more",on:{click:function(e){return t.toggleRoute("index")}}},[n("Icon",{attrs:{type:"md-close"}})],1)])])]),t._v(" "),n("div",{staticClass:"setting-box"},[n("div",{staticClass:"setting-menu",class:{"show768-menu":t.show768Menu}},[n("ul",[t._l(t.menu,(function(e,a){return n("li",{key:a,class:t.classNameRoute(e.path,e.divided),on:{click:function(n){return t.toggleRoute(e.path)}}},[t._v(t._s(t.$L(e.name)))])})),t._v(" "),t.clientNewVersion?n("li",{class:t.classNameRoute("version",!0),on:{click:function(e){return t.toggleRoute("version")}}},[n("AutoTip",{attrs:{disabled:""}},[t._v(t._s(t.$L("版本"))+": "+t._s(t.version))]),t._v(" "),n("Badge",{attrs:{text:t.clientNewVersion}})],1):n("li",{staticClass:"version divided",on:{click:t.onVersion}},[n("AutoTip",[t._v(t._s(t.$L("版本"))+": "+t._s(t.version))])],1)],2)]),t._v(" "),n("div",{staticClass:"setting-content"},[n("div",{staticClass:"setting-content-title"},[t._v(t._s(t.$L(t.titleNameRoute)))]),t._v(" "),n("div",{staticClass:"setting-content-view"},[n("router-view",{staticClass:"setting-router-view"})],1)])])],1)}),[],!1,null,null,null).exports}}]);
"use strict";(self.webpackChunkDooTask=self.webpackChunkDooTask||[]).push([[293],{30293:(t,e,n)=>{n.r(e),n.d(e,{default:()=>p});var a=n(20629),i=n(80641),s=n(9669),o=n.n(s);function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach((function(e){u(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function u(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const l={data:function(){return{version:window.systemInfo.version}},mounted:function(){},computed:c(c({},(0,a.rn)(["userInfo","userIsAdmin","clientNewVersion"])),{},{routeName:function(){return this.$route.name},show768Menu:function(){return"manage-setting"===this.routeName},menu:function(){var t=[{path:"personal",name:"个人设置"},{path:"language",name:"语言设置"},{path:"password",name:"密码设置"},{path:"email",name:"修改邮箱"}];return["127.0.0.1:2222","dootask.com","www.dootask.com","t.hitosea.com"].includes($A.getDomain($A.apiUrl("../")))&&this.$isEEUiApp&&t.push.apply(t,[{path:"privacy",name:"隐私政策",divided:!0},{path:"delete",name:"删除帐号"}]),this.userIsAdmin?t.push.apply(t,[{path:"system",name:"系统设置",divided:!0},{path:"clearCache",name:"清除缓存"},{path:"logout",name:"退出登录"}]):t.push.apply(t,[{path:"clearCache",name:"清除缓存",divided:!0},{path:"logout",name:"退出登录"}]),t},titleNameRoute:function(){var t=this.routeName,e=this.menu,n="";return e.some((function(e){if(t==="manage-setting-".concat(e.path))return n=e.name,!0})),n||"设置"}}),watch:{routeName:{handler:function(t){"manage-setting"===t&&this.windowLarge&&this.goForward({name:"manage-setting-personal"},!0)},immediate:!0}},methods:{toggleRoute:function(t){var e=this;switch(t){case"clearCache":this.$store.dispatch("handleClearCache",null).then((function(){$A.setStorage("clearCache",$A.randomString(6)),$A.reloadUrl()})).catch((function(){$A.reloadUrl()}));break;case"logout":$A.modalConfirm({title:"退出登录",content:"你确定要登出系统?",onOk:function(){e.$store.dispatch("logout",!1)}});break;case"version":i.Store.set("updateNotification",null);break;case"privacy":this.openPrivacy();break;case"index":this.goForward({name:"manage-setting"});break;default:this.goForward({name:"manage-setting-"+t})}},openPrivacy:function(){var t=$A.apiUrl("privacy");this.$isEEUiApp?$A.eeuiAppOpenPage({pageType:"app",pageTitle:" ",url:"web.js",params:{url:t,browser:!0,showProgress:!0}}):window.open(t)},classNameRoute:function(t,e){return{active:this.windowLarge&&this.routeName==="manage-setting-".concat(t),divided:!!e}},onVersion:function(){var t=this;o().get($A.apiUrl("system/version")).then((function(e){var n=e.status,a=e.data;if(200===n){var i="".concat(t.$L("服务器"),": ").concat($A.getDomain($A.apiUrl("../")));i+="<br/>".concat(t.$L("服务器版本"),": v").concat(a.version),i+="<br/>".concat(t.$L("客户端版本"),": v").concat(t.version),$A.modalInfo({language:!1,title:"版本信息",content:i})}})).catch((function(t){}))}}};const p=(0,n(51900).Z)(l,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-setting"},[n("PageTitle",{attrs:{title:t.$L(t.titleNameRoute)}}),t._v(" "),n("div",{staticClass:"setting-head"},[n("div",{staticClass:"setting-titbox"},[n("div",{staticClass:"setting-title"},[n("h1",[t._v(t._s(t.$L("设置")))]),t._v(" "),t.show768Menu?t._e():n("div",{staticClass:"setting-more",on:{click:function(e){return t.toggleRoute("index")}}},[n("Icon",{attrs:{type:"md-close"}})],1)])])]),t._v(" "),n("div",{staticClass:"setting-box"},[n("div",{staticClass:"setting-menu",class:{"show768-menu":t.show768Menu}},[n("ul",[t._l(t.menu,(function(e,a){return n("li",{key:a,class:t.classNameRoute(e.path,e.divided),on:{click:function(n){return t.toggleRoute(e.path)}}},[t._v(t._s(t.$L(e.name)))])})),t._v(" "),t.clientNewVersion?n("li",{class:t.classNameRoute("version",!0),on:{click:function(e){return t.toggleRoute("version")}}},[n("AutoTip",{attrs:{disabled:""}},[t._v(t._s(t.$L("版本"))+": "+t._s(t.version))]),t._v(" "),n("Badge",{attrs:{text:t.clientNewVersion}})],1):n("li",{staticClass:"version divided",on:{click:t.onVersion}},[n("AutoTip",[t._v(t._s(t.$L("版本"))+": "+t._s(t.version))])],1)],2)]),t._v(" "),n("div",{staticClass:"setting-content"},[n("div",{staticClass:"setting-content-title"},[t._v(t._s(t.$L(t.titleNameRoute)))]),t._v(" "),n("div",{staticClass:"setting-content-view"},[n("router-view",{staticClass:"setting-router-view"})],1)])])],1)}),[],!1,null,null,null).exports}}]);

File diff suppressed because one or more lines are too long

1
public/js/build/915.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
38a09a69a7591dbd
a7b5c94b38f2bf2e

View File

@@ -4,10 +4,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
<meta charset="utf-8">
<title>DooTask 隐私政策</title>
<link href="//cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="//cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="//cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="//cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<link href="//lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/MaterialDesign-Webfont/4.9.95/css/materialdesignicons.min.css" rel="stylesheet">
<link href="//lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/vuetify/2.6.3/vuetify.min.css" rel="stylesheet">
<script src="//lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/vue/2.6.14/vue.min.js"></script>
<script src="//lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/vuetify/2.6.3/vuetify.min.js"></script>
</head>
<body>
<div id="app">
@@ -31,25 +31,43 @@
</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
本隐私政策帮助您了解以下内容:
<div class="mt-2">一、我们如何收集和使用您的个人信息</div>
<div>二、我们如何存储和保护您的个人信息;</div>
<div>三、我们如何共享、转让、公开披露您的个人信息;</div>
<div> 四、我们如何使用 Cookie 和其他追踪技术</div>
<div class="mt-2">一、适用范围</div>
<div class="mt-2">二、我们如何收集和使用您的个人信息;</div>
<div>三、我们如何存储和保护您的个人信息;</div>
<div>四、我们如何共享、转让、公开披露您的个人信息</div>
<div>五、我们如何使用 Cookie 和其他追踪技术;</div>
<div>六、您的权利;</div>
<div>七、如何联系我们;</div>
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 一、我们如何收集和使用您的个人信息</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 一、适用范围</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;"> 本政策适用于DooTask服务提供者以DooTask网站(www.dootask.com)、DooTask软件以及随技术发展出现的新形态向您提供的各项产品和服务。</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 二、我们如何收集和使用您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
个人信息是指以电子或者其他方式记录的能够单独或者与其他信息, 结合识别特定自然人身份或者反映特定自然人活动情况的各种信息。
我们根据《中华人民共和国网络安全法》和《信息安全技术个人信息安全规范》GB/T 35273-2017 以及其它相关法律法规的要求,并严格遵循正当、合法、必要的原则,
出于您使用我们提供的服务和/或产品等过程中而收集和使用您的个人信息,包括但不限于电话号码、电子邮箱地址等。
</div>
出于您使用我们提供的服务和/或产品等过程中而收集和使用您的个人信息,包括但不限于<span class="color">电话号码、电子邮箱地址</span>等。
<div>我们一般会基于以下目的收集和使用您的个人信息:</div>
<div class="col-font">1. 为用户注册/登录所需的个人信息处理活动</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">您注册DooTask帐号时须至少向我们提供<span class="color">帐号名称、手机号码及/或电子邮箱,并创建密码</span>。您有权选择不予注册成为我们的用户并不提供上述信息。</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">注册信息除了用于识别您的身份之外,我们也会将其用于其他与服务相关的功能场景中,例如我们会利用收集的信息(例如您的手机号码、电子邮件地址)直接与您沟通或互动;
如果我们或使用DooTask帐号体系的公司检测到可疑活动例如尝试从不同于平常的位置登录您的DooTask帐号可能会向您发送通知;</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;"><strong>如果超出上述处理范围,除法律法规另有规定外,个人信息处理者将按照法律法规的要求另行征得您的同意。</strong></div>
<div class="col-font">2. 为提供服务所需的个人信息处理活动</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">为提供服务所需的个人信息的类别和内容具体以您所启用的服务内容和功能为准,一般包括:</div>
<div class="col-font">产品使用信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">我们可能会记录您在使用我们的产品和/或服务时主动提供、留存的信息。例如您主动发布、反馈、评论、上传的文字图片、音视频信息。</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
为接受我们全面的产品服务,您应首先注册一个用户账号,我们将通过它记录相关的数据。 您所提供的所有信息均来自于您本人在注册时提供的数据。 您准备使用的账户名、密码、您本人的联系方式
为接受我们全面的产品服务,您应首先注册一个用户账号,我们将通过它记录相关的数据。 您所提供的所有信息均来自于您本人在注册时提供的数据。 您准备使用的<span class="color">账户名、密码、您本人的联系方式</span>
我们可能通过发短信或者邮件的方式来验证您的身份是否有效。
</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
在您主动注销帐号之后,我们将停止为您提供服务,并根据适用法律的要求删除您的个人信息或做匿名化处理。
<strong>在您主动注销<span class="color">帐号</span>之后,我们将停止为您提供服务,并根据适用法律的要求删除您的个人信息或做匿名化处理。</strong>
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 二、我们如何存储和保护您的个人信息</div>
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 三、我们如何存储和保护您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
作为一般规则,我们仅在实现信息收集目的所需的时间内保留您的个人信息。 我们会在对于管理与您之间的关系严格必要的时间内保留您的个人信息 (例如,当您开立帐户,从我们的产品获取服务时)。
出于遵守法律义务或为证明某项权利或合同满足适用的诉讼时效要求的目的, 我们可能需要在上述期限到期后保留您存档的个人信息,并且无法按您的要求删除。 <span> 当您的个人信息对于我们的法定义务或法定时效对应的目的或档案不再必要时, 我们确保将其完全删除或匿名化。 </span>
@@ -58,7 +76,7 @@
我们使用符合业界标准的安全防护措施保护您提供的个人信息,并加密其中的关键数据, 防止其遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会采取一切合理可行的措施,保护您的个人信息。
我们会使用加密技术确保数据的保密性;我们会使用受信赖的保护机制防止数据遭到恶意攻击。
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 、我们如何共享、转让、公开披露您的个人信息</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 、我们如何共享、转让、公开披露您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
在管理我们的日常业务活动所需要时,为追求合法利益以更好地服务客户, 我们将合规且恰当的使用您的个人信息。出于对业务和各个方面的综合考虑, 我们仅自身使用这些数据,不与任何第三方分享。
</div>
@@ -68,16 +86,16 @@
</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
在以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:
<div class="mt-2">1、与国家安全、国防安全直接相关的;</div>
<div>2、与犯罪侦查、起诉、审判和判决执行等直接相关的;</div>
<div> 3、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;</div>
<div>4、您自行向社会公众公开的个人信息;</div>
<div> 5、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。</div>
<div>6、根据个人信息主体要求签订和履行合同所必需的;</div>
<div> 7、用于维护所提供的产品或服务的安全稳定运行所必需的,例如发现、处置产品或服务的故障;</div>
<div>8、法律法规规定的其他情形。</div>
<div class="mt-2">1、与国家安全、国防安全直接相关的;</div>
<div>2、与犯罪侦查、起诉、审判和判决执行等直接相关的;</div>
<div>3、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;</div>
<div>4、您自行向社会公众公开的个人信息;</div>
<div>5、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。</div>
<div>6、根据个人信息主体要求签订和履行合同所必需的;</div>
<div>7、用于维护所提供的产品或服务的安全稳定运行所必需的,例如发现、处置产品或服务的故障;</div>
<div>8、法律法规规定的其他情形。</div>
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 、我们如何使用 Cookie 和其他追踪技术</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 、我们如何使用 Cookie 和其他追踪技术</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
为确保产品正常运转,我们会在您的计算机或移动设备上存储名为 Cookie 的小数据文件。 Cookie 通常包含标识符、产品名称以及一些号码和字符。 借助于
Cookie我们能够存储您的偏好或商品等数据并用以判断注册用户是否已经登录 提升服务和产品质量及优化用户体验。
@@ -87,6 +105,68 @@
我们不会将 Cookie 用于本政策所述目的之外的任何用途。您可根据自己的偏好管理或删除 Cookie。 您可以清除计算机上或手机中保存的所有 Cookie大部分网络浏览器都设有阻止或禁用
Cookie 的功能, 您可对浏览器进行配置。阻止或禁用 Cookie 功能后,可能影响您使用或不能充分使用我们的产品和服务。
</div>
<div class="ml-6 mr-2 text-h6 mb-4"> 六、您的权利</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">按照中国相关的法律、法规、标准,以及其他国家、地区的通行做法,我们保障您对自己的个人信息行使以下权利:</div>
<div class="col-font">1. 查阅和复制您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
您有权访问和复制您的个人信息,法律法规规定的例外情况除外。您可以通过以下方式自行访问和复制您的个人信息:
帐号信息——您可以随时登录Dootask访问或编辑您的帐户中的个人资料信息、更改您的密码、进行帐号关联或身份认证等。
为保障安全,我们可能在您行使查阅权、复制权前对您的身份进行验证。
</div>
<div class="col-font">2. 更正或补充您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
您发现我们处理的关于您的个人信息有不准确或不完整时,您有权对不准确或不完整的信息作出更正或补充。为保障安全,我们可能在您行使更正权、补充权前对您的身份进行验证。
</div>
<div class="col-font">3. 删除您的个人信息</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
<div>1、处理目的已实现、无法实现或者为实现处理目的不再必要</div>
<div>2、我们停止提供产品或者服务或者保存期限已届满</div>
<div>3、您撤回同意</div>
<div>4、我们违反法律、行政法规或者违反约定处理个人信息</div>
<div>5、法律、行政法规规定的其他情形。</div>
</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">当您从我们的服务中删除信息后,我们可能不会立即从备份系统中删除相应的信息,但会在备份更新时删除这些信息。我们在产品设计的过程中及最终的呈现和用户体验环节,将尽可能地为您控制个人信息提供更为便捷的方式。</div>
<div class="col-font">4. 提前获知产品和服务停止运营</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
DooTask愿一直陪伴您若因特殊原因导致DooTask产品和服务被迫停止运营我们将按照法律法规要求在产品和/或服务的主页面或站内信或向您发送电子邮件或其他合适的能触达您的方式通知您,并将停止对您个人信息的收集,同时会按照法律规定对所持有的您的个人信息进行删除或匿名化处理等。
</div>
<div class="col-font">5. 个人信息可携权</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">在符合国家相关法律法规及网信部门规定的条件下,如您请求将个人信息转移至其指定的个人信息处理者,我们将按照相关规定的要求提供转移的途径。</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
为保障安全,您行使您的上述权利需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。</div>
<div class="col-font">6. 响应您的上述请求</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情况收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁带上存放的信息)的请求,我们可能会予以拒绝。 </div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
在以下情形中,按照法律法规要求,我们将无法响应您的上述请求:
<div class="mt-2">1、与国家安全、国防安全直接相关的</div>
<div>2、与公共安全、公共卫生、重大公共利益直接相关的</div>
<div>3、与刑事侦查、起诉、审判和执行判决等直接相关的</div>
<div>4、我们有充分证据表明您存在主观恶意或滥用权利的如您的请求将危害公共安全和其他人合法权益或您的请求超出了一般技术手段和商业成本可覆盖的范围</div>
<div>5、响应个人信息主体的请求将导致您或其他个人、组织的合法权益受到严重损害的</div>
<div>6、涉及商业秘密的</div>
<div>7、与我们履行法律法规规定的义务相关的</div>
<div>8、法律法规规定的其他情形。</div>
</div>
<div class="ml-6 mr-2 text-h6 mb-4">七、如何联系我们;</div>
<div>
<div class="col-font">您可以通过如下联络方式同我们联系:</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">您可以通过<strong> [service@hitosea.com] </strong>与我们联系;</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">办公地址广西省南宁市良庆区五象大道401号五象航洋城1号楼14层1411-15号</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
为保障我们高效处理您的问题并及时向您反馈需要您提交身份证明、有效联系方式和书面请求及相关证据我们会在验证您的身份后处理您的请求。一般情况下我们将在15个工作日内回复。
</div>
<div class="ml-6 mr-2 text-body-1 mb-4" style="text-indent: 2em;">
如果您对我们的回复不满意,特别是您认为我们的个人信息处理行为损害了您的合法权益,您还可以通过以下外部途径寻求解决方案:向【被告住所地有管辖权的法院提起诉讼】
</div>
</div>
<div class="col-size"><strong>附录:相关定义</strong></div>
<div class="col-size"><strong>dootask:</strong>指dootask域名为www.dootask.com网站及dootask客户端。</div>
<div class="col-size"><strong>dootask服务提供者:</strong>指dootask软件的互联网信息及软件技术服务提供者广西海豚有海信息科技有限公司。</div>
<div class="col-size"><strong>个人信息:</strong>以电子或者其他方式记录的与已识别或者可识别的自然人有关的各种信息,不包括匿名化处理后的信息。</div>
<div class="col-size"><strong>匿名化:</strong>指个人信息经过处理无法识别特定自然人且不能复原的过程。</div>
<div class="col-size"><strong>个人信息删除:</strong>指在实现日常业务功能所涉及的系统中去除个人信息的行为,使其保持不可被检索、访问的状态。</div>
</v-container>
</v-content>
</v-app>
@@ -97,5 +177,20 @@
vuetify: new Vuetify(),
})
</script>
<style>
.color{
font-weight: 500;
color: #84c56a;
}
.col-font{
font-weight: 500;
text-indent: 2rem;
margin: 20px 0;
}
.col-size{
margin: 20px 0;
font-size: 13px;
}
</style>
</body>
</html>

View File

@@ -14,7 +14,7 @@
{{ $L('更新客户端') }}
</div>
</template>
<a v-if="showPrivacy" class="common-right-bottom-link" target="_blank" :href="$A.apiUrl('../privacy.html')">
<a v-if="showPrivacy" class="common-right-bottom-link" target="_blank" :href="$A.apiUrl('privacy')">
{{ $L('隐私政策') }}
</a>
<Modal

View File

@@ -15,6 +15,12 @@
* @returns {string|string|*}
*/
apiUrl(str) {
if (str == "privacy") {
let apiHome = $A.getDomain(window.systemInfo.apiUrl)
if (apiHome == "" || apiHome == "public") {
return "https://www.dootask.com/privacy.html"
}
}
if (str.substring(0, 2) === "//" ||
str.substring(0, 7) === "http://" ||
str.substring(0, 8) === "https://" ||

View File

@@ -123,6 +123,21 @@
<div class="login-forgot">{{$L('忘记密码了?')}}<a href="javascript:void(0)" @click="forgotPassword">{{$L('重置密码')}}</a></div>
</div>
</div>
<!--隐私政策提醒-->
<Modal
v-model="privacyShow"
:title="$L('隐私协议')"
:mask-closable="false">
<div class="privacy-content">
<div>欢迎使用本软件</div>
<p>在您使用本软件前请您认真阅读并了解相应的<a target="_blank" :href="$A.apiUrl('privacy')">{{ $L('隐私政策') }}</a>以了解我们的服务内容和您相关个人信息的处理规则我们将严格的按照隐私服务协议为您提供服务保护您的个人信息</p>
</div>
<div slot="footer" class="adaption">
<Button type="default" @click="onPrivacy(false)">{{$L('不同意')}}</Button>
<Button type="primary" @click="onPrivacy(true)">{{$L('同意')}}</Button>
</div>
</Modal>
</div>
</template>
@@ -152,6 +167,8 @@ export default {
needInvite: false,
subscribe: null,
privacyShow: !!this.$isEEUiApp,
}
},
mounted() {
@@ -296,6 +313,9 @@ export default {
},
inputServerUrl() {
if (this.privacyShow) {
return
}
let value = $A.rightDelete(this.cacheServerUrl, "/api/");
value = $A.leftDelete(value, "http://");
$A.modalInput({
@@ -390,6 +410,15 @@ export default {
});
},
onPrivacy(agree) {
if (agree) {
this.privacyShow = false
this.inputServerUrl()
} else {
$A.eeuiAppGoDesktop()
}
},
onLogin() {
this.chackServerUrl(true).then(() => {
this.email = $A.trim(this.email)

View File

@@ -168,7 +168,7 @@ export default {
},
openPrivacy() {
const url = $A.apiUrl('../privacy.html')
const url = $A.apiUrl('privacy')
if (this.$isEEUiApp) {
$A.eeuiAppOpenPage({
pageType: 'app',

View File

@@ -151,6 +151,15 @@
}
}
.privacy-content {
margin-bottom: 12px;
line-height: 26px;
font-size: 16px;
> p {
text-indent: 2rem;
}
}
@media (max-width: 768px) {
.page-login {
.login-body {