From 9e5ce58aee2f21414ae43c688844314f8a50b4d9 Mon Sep 17 00:00:00 2001
From: anne-lxm <1076217653@qq.com>
Date: Thu, 27 Oct 2022 20:33:22 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96=E6=8F=92?=
=?UTF-8?q?=E4=BB=B6/=E5=AE=89=E5=85=A8=E7=BD=91=E7=BB=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 3 +
App.vue | 3 +
pages.json | 2 +-
pages/secure-network/cloud-function.vue | 156 +-
pages/secure-network/cloud-object.vue | 140 +-
.../secure-network-object/index.obj.js | 2 +-
.../cloudfunctions/secure-network/index.js | 2 +-
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
uni_modules/uni-data-checkbox/changelog.md | 2 +
.../uni-data-checkbox/uni-data-checkbox.vue | 82 +-
uni_modules/uni-data-checkbox/package.json | 11 +-
uni_modules/uni-easyinput/changelog.md | 6 +
.../uni-easyinput/uni-easyinput.vue | 22 +-
uni_modules/uni-easyinput/package.json | 11 +-
uni_modules/uni-id-common/changelog.md | 26 +
uni_modules/uni-id-common/package.json | 87 +
uni_modules/uni-id-common/readme.md | 3 +
.../common/uni-id-common/index.js | 1 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../common/uni-id-common/package.json | 16 +
uni_modules/uni-id-pages/changelog.md | 83 +
.../uni-id-pages/common/login-page.mixin.js | 88 +
.../uni-id-pages/common/login-page.scss | 125 ++
uni_modules/uni-id-pages/common/password.js | 85 +
uni_modules/uni-id-pages/common/store.js | 137 ++
.../components/cloud-image/cloud-image.vue | 79 +
.../uni-id-pages-agreements.vue | 168 ++
.../uni-id-pages-avatar.vue | 166 ++
.../uni-id-pages-bind-mobile.vue | 165 ++
.../uni-id-pages-email-form.vue | 246 ++
.../uni-id-pages-fab-login.vue | 573 +++++
.../uni-id-pages-sms-form.vue | 241 ++
.../uni-id-pages-user-profile.vue | 176 ++
uni_modules/uni-id-pages/config.js | 56 +
uni_modules/uni-id-pages/init.js | 99 +
uni_modules/uni-id-pages/package.json | 101 +
.../pages/common/webview/webview.vue | 40 +
.../pages/login/login-smscode.vue | 122 +
.../pages/login/login-withoutpwd.vue | 221 ++
.../pages/login/login-withpwd.vue | 173 ++
.../pages/register/register-admin.vue | 179 ++
.../pages/register/register-by-email.vue | 216 ++
.../uni-id-pages/pages/register/register.vue | 183 ++
.../uni-id-pages/pages/register/validator.js | 56 +
.../pages/retrieve/retrieve-by-email.vue | 223 ++
.../uni-id-pages/pages/retrieve/retrieve.vue | 246 ++
.../userinfo/bind-mobile/bind-mobile.vue | 130 ++
.../pages/userinfo/change_pwd/change_pwd.vue | 134 ++
.../pages/userinfo/cropImage/cropImage.vue | 39 +
.../userinfo/cropImage/limeClipper/README.md | 227 ++
.../cropImage/limeClipper/images/photo.svg | 19 +
.../cropImage/limeClipper/images/rotate.svg | 15 +
.../userinfo/cropImage/limeClipper/index.css | 160 ++
.../cropImage/limeClipper/limeClipper.vue | 816 +++++++
.../userinfo/cropImage/limeClipper/utils.js | 244 ++
.../pages/userinfo/deactivate/deactivate.vue | 119 +
.../uni-id-pages/pages/userinfo/userinfo.vue | 253 +++
uni_modules/uni-id-pages/readme.md | 15 +
.../uni-id-pages/static/limeClipper/photo.svg | 19 +
.../static/limeClipper/rotate.svg | 15 +
.../uni-id-pages/static/login/apple.png | Bin 0 -> 18205 bytes
.../uni-id-pages/static/login/weixin.png | Bin 0 -> 13060 bytes
.../static/uni-center/defaultAvatarUrl.png | Bin 0 -> 5947 bytes
.../uni-id-pages/static/uni-center/grey.png | Bin 0 -> 6669 bytes
.../static/uni-center/headers.png | Bin 0 -> 33054 bytes
.../static/uni-fab-login/alipay.png | Bin 0 -> 6184 bytes
.../static/uni-fab-login/apple.png | Bin 0 -> 9231 bytes
.../static/uni-fab-login/douyin.png | Bin 0 -> 5911 bytes
.../static/uni-fab-login/facebook.png | Bin 0 -> 4184 bytes
.../static/uni-fab-login/google.png | Bin 0 -> 9718 bytes
.../uni-id-pages/static/uni-fab-login/qq.png | Bin 0 -> 6441 bytes
.../static/uni-fab-login/sinaweibo.png | Bin 0 -> 7920 bytes
.../uni-id-pages/static/uni-fab-login/sms.png | Bin 0 -> 18264 bytes
.../static/uni-fab-login/taobao.png | Bin 0 -> 12011 bytes
.../static/uni-fab-login/univerify.png | Bin 0 -> 8719 bytes
.../static/uni-fab-login/user.png | Bin 0 -> 8175 bytes
.../static/uni-fab-login/weixin.png | Bin 0 -> 17743 bytes
.../uni-id-co/common/constants.js | 90 +
.../cloudfunctions/uni-id-co/common/error.js | 57 +
.../cloudfunctions/uni-id-co/common/utils.js | 197 ++
.../uni-id-co/common/validator.js | 432 ++++
.../uni-id-co/config/permission.js | 78 +
.../cloudfunctions/uni-id-co/index.obj.js | 585 +++++
.../cloudfunctions/uni-id-co/lang/en.js | 49 +
.../cloudfunctions/uni-id-co/lang/index.js | 22 +
.../cloudfunctions/uni-id-co/lang/zh-hans.js | 49 +
.../cloudfunctions/uni-id-co/lib/README.md | 3 +
.../lib/third-party/alipay/account/index.js | 16 +
.../third-party/alipay/account/protocols.js | 10 +
.../lib/third-party/alipay/alipayBase.js | 231 ++
.../lib/third-party/apple/account/index.js | 76 +
.../third-party/apple/rsa-public-key-pem.js | 64 +
.../uni-id-co/lib/third-party/index.js | 36 +
.../lib/third-party/qq/account/index.js | 97 +
.../lib/third-party/qq/account/protocol.js | 0
.../uni-id-co/lib/third-party/qq/normalize.js | 85 +
.../lib/third-party/share/create-api.js | 73 +
.../lib/third-party/weixin/account/index.js | 111 +
.../lib/third-party/weixin/normalize.js | 95 +
.../uni-id-co/lib/third-party/weixin/utils.js | 87 +
.../uni-id-co/lib/utils/account.js | 130 ++
.../uni-id-co/lib/utils/captcha.js | 76 +
.../uni-id-co/lib/utils/config.js | 135 ++
.../uni-id-co/lib/utils/fission.js | 192 ++
.../uni-id-co/lib/utils/login.js | 232 ++
.../uni-id-co/lib/utils/logout.js | 47 +
.../uni-id-co/lib/utils/password.js | 116 +
.../cloudfunctions/uni-id-co/lib/utils/qq.js | 152 ++
.../uni-id-co/lib/utils/register.js | 211 ++
.../uni-id-co/lib/utils/relate.js | 162 ++
.../cloudfunctions/uni-id-co/lib/utils/sms.js | 81 +
.../uni-id-co/lib/utils/unified-login.js | 98 +
.../uni-id-co/lib/utils/univerify.js | 27 +
.../uni-id-co/lib/utils/update-user-info.js | 25 +
.../uni-id-co/lib/utils/utils.js | 18 +
.../uni-id-co/lib/utils/verify-code.js | 152 ++
.../uni-id-co/lib/utils/weixin.js | 234 ++
.../uni-id-co/middleware/access-control.js | 59 +
.../uni-id-co/middleware/auth.js | 17 +
.../uni-id-co/middleware/index.js | 7 +
.../uni-id-co/middleware/rbac.js | 39 +
.../uni-id-co/middleware/uni-id-log.js | 39 +
.../uni-id-co/middleware/validate.js | 7 +
.../uni-id-co/module/account/close-account.js | 16 +
.../module/account/get-account-info.js | 69 +
.../uni-id-co/module/account/index.js | 7 +
.../module/account/reset-pwd-by-email.js | 119 +
.../module/account/reset-pwd-by-sms.js | 119 +
.../uni-id-co/module/account/update-pwd.js | 67 +
.../uni-id-co/module/admin/add-user.js | 118 +
.../uni-id-co/module/admin/index.js | 4 +
.../uni-id-co/module/admin/update-user.js | 128 ++
.../module/dev/get-supported-login-type.js | 71 +
.../uni-id-co/module/dev/index.js | 3 +
.../uni-id-co/module/fission/accept-invite.js | 25 +
.../module/fission/get-invited-user.js | 80 +
.../uni-id-co/module/fission/index.js | 4 +
.../uni-id-co/module/login/index.js | 20 +
.../uni-id-co/module/login/login-by-alipay.js | 70 +
.../uni-id-co/module/login/login-by-apple.js | 77 +
.../uni-id-co/module/login/login-by-baidu.js | 9 +
.../module/login/login-by-dingtalk.js | 9 +
.../uni-id-co/module/login/login-by-douyin.js | 9 +
.../module/login/login-by-email-code.js | 9 +
.../module/login/login-by-email-link.js | 9 +
.../module/login/login-by-facebook.js | 9 +
.../uni-id-co/module/login/login-by-google.js | 9 +
.../uni-id-co/module/login/login-by-qq.js | 164 ++
.../uni-id-co/module/login/login-by-sms.js | 99 +
.../uni-id-co/module/login/login-by-taobao.js | 9 +
.../module/login/login-by-toutiao.js | 9 +
.../module/login/login-by-univerify.js | 69 +
.../uni-id-co/module/login/login-by-weibo.js | 9 +
.../module/login/login-by-weixin-mobile.js | 106 +
.../uni-id-co/module/login/login-by-weixin.js | 169 ++
.../uni-id-co/module/login/login.js | 94 +
.../uni-id-co/module/logout/index.js | 3 +
.../uni-id-co/module/logout/logout.js | 15 +
.../module/multi-end/authorize-app-login.js | 37 +
.../uni-id-co/module/multi-end/index.js | 5 +
.../module/multi-end/remove-authorized-app.js | 30 +
.../module/multi-end/set-authorized-app.js | 36 +
.../uni-id-co/module/multi-end/utils.js | 36 +
.../uni-id-co/module/register/index.js | 5 +
.../module/register/register-admin.js | 72 +
.../module/register/register-user-by-email.js | 87 +
.../module/register/register-user.js | 68 +
.../uni-id-co/module/relate/bind-alipay.js | 63 +
.../uni-id-co/module/relate/bind-apple.js | 62 +
.../module/relate/bind-mobile-by-mp-weixin.js | 104 +
.../module/relate/bind-mobile-by-sms.js | 92 +
.../module/relate/bind-mobile-by-univerify.js | 70 +
.../uni-id-co/module/relate/bind-qq.js | 110 +
.../uni-id-co/module/relate/bind-weixin.js | 100 +
.../uni-id-co/module/relate/index.js | 13 +
.../uni-id-co/module/relate/unbind-alipay.js | 32 +
.../uni-id-co/module/relate/unbind-apple.js | 32 +
.../uni-id-co/module/relate/unbind-qq.js | 46 +
.../uni-id-co/module/relate/unbind-weixin.js | 40 +
.../uni-id-co/module/utils/index.js | 5 +
.../uni-id-co/module/utils/refresh-token.js | 19 +
.../secure-network-handshake-by-weixin.js | 73 +
.../uni-id-co/module/utils/set-push-cid.js | 141 ++
.../uni-id-co/module/verify/create-captcha.js | 34 +
.../uni-id-co/module/verify/index.js | 7 +
.../module/verify/refresh-captcha.js | 34 +
.../module/verify/send-email-code.js | 60 +
.../module/verify/send-email-link.js | 12 +
.../uni-id-co/module/verify/send-sms-code.js | 71 +
.../uni-id-co/node_modules/.bin/semver | 15 +
.../uni-id-co/node_modules/.bin/semver.cmd | 17 +
.../uni-id-co/node_modules/.bin/semver.ps1 | 18 +
.../buffer-equal-constant-time/.npmignore | 2 +
.../buffer-equal-constant-time/.travis.yml | 4 +
.../buffer-equal-constant-time/LICENSE.txt | 12 +
.../buffer-equal-constant-time/README.md | 50 +
.../buffer-equal-constant-time/index.js | 41 +
.../buffer-equal-constant-time/package.json | 55 +
.../buffer-equal-constant-time/test.js | 42 +
.../ecdsa-sig-formatter/CODEOWNERS | 1 +
.../node_modules/ecdsa-sig-formatter/LICENSE | 201 ++
.../ecdsa-sig-formatter/README.md | 65 +
.../ecdsa-sig-formatter/package.json | 73 +
.../src/ecdsa-sig-formatter.d.ts | 17 +
.../src/ecdsa-sig-formatter.js | 187 ++
.../src/param-bytes-for-alg.js | 23 +
.../node_modules/jsonwebtoken/CHANGELOG.md | 476 ++++
.../node_modules/jsonwebtoken/LICENSE | 21 +
.../node_modules/jsonwebtoken/README.md | 375 ++++
.../node_modules/jsonwebtoken/decode.js | 30 +
.../node_modules/jsonwebtoken/index.js | 8 +
.../jsonwebtoken/lib/JsonWebTokenError.js | 14 +
.../jsonwebtoken/lib/NotBeforeError.js | 13 +
.../jsonwebtoken/lib/TokenExpiredError.js | 13 +
.../jsonwebtoken/lib/psSupported.js | 3 +
.../node_modules/jsonwebtoken/lib/timespan.js | 18 +
.../node_modules/jsonwebtoken/package.json | 99 +
.../node_modules/jsonwebtoken/sign.js | 206 ++
.../node_modules/jsonwebtoken/verify.js | 225 ++
.../uni-id-co/node_modules/jwa/LICENSE | 17 +
.../uni-id-co/node_modules/jwa/README.md | 150 ++
.../uni-id-co/node_modules/jwa/index.js | 252 +++
.../uni-id-co/node_modules/jwa/package.json | 69 +
.../uni-id-co/node_modules/jws/CHANGELOG.md | 34 +
.../uni-id-co/node_modules/jws/LICENSE | 17 +
.../uni-id-co/node_modules/jws/index.js | 22 +
.../node_modules/jws/lib/data-stream.js | 55 +
.../node_modules/jws/lib/sign-stream.js | 78 +
.../node_modules/jws/lib/tostring.js | 10 +
.../node_modules/jws/lib/verify-stream.js | 120 +
.../uni-id-co/node_modules/jws/package.json | 64 +
.../uni-id-co/node_modules/jws/readme.md | 255 +++
.../node_modules/lodash.includes/LICENSE | 47 +
.../node_modules/lodash.includes/README.md | 18 +
.../node_modules/lodash.includes/index.js | 745 +++++++
.../node_modules/lodash.includes/package.json | 69 +
.../node_modules/lodash.isboolean/LICENSE | 22 +
.../node_modules/lodash.isboolean/README.md | 18 +
.../node_modules/lodash.isboolean/index.js | 70 +
.../lodash.isboolean/package.json | 69 +
.../node_modules/lodash.isinteger/LICENSE | 47 +
.../node_modules/lodash.isinteger/README.md | 18 +
.../node_modules/lodash.isinteger/index.js | 265 +++
.../lodash.isinteger/package.json | 69 +
.../node_modules/lodash.isnumber/LICENSE | 22 +
.../node_modules/lodash.isnumber/README.md | 18 +
.../node_modules/lodash.isnumber/index.js | 79 +
.../node_modules/lodash.isnumber/package.json | 69 +
.../node_modules/lodash.isplainobject/LICENSE | 47 +
.../lodash.isplainobject/README.md | 18 +
.../lodash.isplainobject/index.js | 139 ++
.../lodash.isplainobject/package.json | 69 +
.../node_modules/lodash.isstring/LICENSE | 22 +
.../node_modules/lodash.isstring/README.md | 18 +
.../node_modules/lodash.isstring/index.js | 95 +
.../node_modules/lodash.isstring/package.json | 69 +
.../node_modules/lodash.merge/LICENSE | 47 +
.../node_modules/lodash.merge/README.md | 18 +
.../node_modules/lodash.merge/index.js | 1977 +++++++++++++++++
.../node_modules/lodash.merge/package.json | 61 +
.../node_modules/lodash.once/LICENSE | 47 +
.../node_modules/lodash.once/README.md | 18 +
.../node_modules/lodash.once/index.js | 294 +++
.../node_modules/lodash.once/package.json | 69 +
.../uni-id-co/node_modules/ms/index.js | 162 ++
.../uni-id-co/node_modules/ms/license.md | 21 +
.../uni-id-co/node_modules/ms/package.json | 70 +
.../uni-id-co/node_modules/ms/readme.md | 59 +
.../node_modules/safe-buffer/LICENSE | 21 +
.../node_modules/safe-buffer/README.md | 584 +++++
.../node_modules/safe-buffer/index.d.ts | 187 ++
.../node_modules/safe-buffer/index.js | 65 +
.../node_modules/safe-buffer/package.json | 78 +
.../node_modules/semver/CHANGELOG.md | 39 +
.../uni-id-co/node_modules/semver/LICENSE | 15 +
.../uni-id-co/node_modules/semver/README.md | 412 ++++
.../uni-id-co/node_modules/semver/bin/semver | 160 ++
.../node_modules/semver/package.json | 60 +
.../uni-id-co/node_modules/semver/range.bnf | 16 +
.../uni-id-co/node_modules/semver/semver.js | 1483 +++++++++++++
.../node_modules/uni-captcha/LICENSE.md | 201 ++
.../node_modules/uni-captcha/fonts/font.ttf | Bin 0 -> 7080 bytes
.../node_modules/uni-captcha/index.js | 1 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 44 +
.../uni-open-bridge/config.json | 12 +
.../node_modules/uni-captcha/package.json | 16 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 44 +
.../uni-open-bridge/config.json | 12 +
.../node_modules/uni-id-common/index.js | 1 +
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 44 +
.../uni-open-bridge/config.json | 12 +
.../node_modules/uni-id-common/package.json | 16 +
.../uni-open-bridge-common/bridge-error.js | 26 +
.../uni-open-bridge-common/config.js | 95 +
.../uni-open-bridge-common/consts.js | 26 +
.../uni-open-bridge-common/index.js | 221 ++
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-config-center/uni-id/config.json | 44 +
.../uni-open-bridge/config.json | 12 +
.../uni-open-bridge-common/package.json | 15 +
.../uni-open-bridge-common/storage.js | 117 +
.../uni-open-bridge-common/uni-cloud-cache.js | 324 +++
.../uni-open-bridge-common/validator.js | 31 +
.../uni-open-bridge-common/weixin-server.js | 202 ++
.../uni-id-co/package-lock.json | 148 ++
.../cloudfunctions/uni-id-co/package.json | 23 +
.../database/opendb-device.schema.json | 142 ++
.../database/uni-id-device.schema.json | 83 +
.../uniCloud/database/uni-id-log.schema.json | 71 +
.../database/uni-id-permissions.schema.json | 52 +
.../database/uni-id-roles.schema.json | 50 +
.../database/uni-id-users.schema.json | 456 ++++
.../uni-open-bridge-common/changelog.md | 8 +
.../uni-open-bridge-common/package.json | 84 +
uni_modules/uni-open-bridge-common/readme.md | 5 +
.../uni-open-bridge-common/bridge-error.js | 26 +
.../common/uni-open-bridge-common/config.js | 95 +
.../common/uni-open-bridge-common/consts.js | 26 +
.../common/uni-open-bridge-common/index.js | 221 ++
.../node_modules/uni-config-center/index.js | 1 +
.../uni-config-center/package.json | 9 +
.../uni-open-bridge-common/package.json | 15 +
.../common/uni-open-bridge-common/storage.js | 117 +
.../uni-open-bridge-common/uni-cloud-cache.js | 324 +++
.../uni-open-bridge-common/validator.js | 31 +
.../uni-open-bridge-common/weixin-server.js | 202 ++
.../database/opendb-open-data.schema.json | 19 +
336 files changed, 30355 insertions(+), 209 deletions(-)
create mode 100644 uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-common/changelog.md
create mode 100644 uni_modules/uni-id-common/package.json
create mode 100644 uni_modules/uni-id-common/readme.md
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
create mode 100644 uni_modules/uni-id-pages/changelog.md
create mode 100644 uni_modules/uni-id-pages/common/login-page.mixin.js
create mode 100644 uni_modules/uni-id-pages/common/login-page.scss
create mode 100644 uni_modules/uni-id-pages/common/password.js
create mode 100644 uni_modules/uni-id-pages/common/store.js
create mode 100644 uni_modules/uni-id-pages/components/cloud-image/cloud-image.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-agreements/uni-id-pages-agreements.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-avatar/uni-id-pages-avatar.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-bind-mobile/uni-id-pages-bind-mobile.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-email-form/uni-id-pages-email-form.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-sms-form/uni-id-pages-sms-form.vue
create mode 100644 uni_modules/uni-id-pages/components/uni-id-pages-user-profile/uni-id-pages-user-profile.vue
create mode 100644 uni_modules/uni-id-pages/config.js
create mode 100644 uni_modules/uni-id-pages/init.js
create mode 100644 uni_modules/uni-id-pages/package.json
create mode 100644 uni_modules/uni-id-pages/pages/common/webview/webview.vue
create mode 100644 uni_modules/uni-id-pages/pages/login/login-smscode.vue
create mode 100644 uni_modules/uni-id-pages/pages/login/login-withoutpwd.vue
create mode 100644 uni_modules/uni-id-pages/pages/login/login-withpwd.vue
create mode 100644 uni_modules/uni-id-pages/pages/register/register-admin.vue
create mode 100644 uni_modules/uni-id-pages/pages/register/register-by-email.vue
create mode 100644 uni_modules/uni-id-pages/pages/register/register.vue
create mode 100644 uni_modules/uni-id-pages/pages/register/validator.js
create mode 100644 uni_modules/uni-id-pages/pages/retrieve/retrieve-by-email.vue
create mode 100644 uni_modules/uni-id-pages/pages/retrieve/retrieve.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/bind-mobile/bind-mobile.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/change_pwd/change_pwd.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/cropImage.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/README.md
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/photo.svg
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/rotate.svg
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/index.css
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/limeClipper.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/utils.js
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/deactivate/deactivate.vue
create mode 100644 uni_modules/uni-id-pages/pages/userinfo/userinfo.vue
create mode 100644 uni_modules/uni-id-pages/readme.md
create mode 100644 uni_modules/uni-id-pages/static/limeClipper/photo.svg
create mode 100644 uni_modules/uni-id-pages/static/limeClipper/rotate.svg
create mode 100644 uni_modules/uni-id-pages/static/login/apple.png
create mode 100644 uni_modules/uni-id-pages/static/login/weixin.png
create mode 100644 uni_modules/uni-id-pages/static/uni-center/defaultAvatarUrl.png
create mode 100644 uni_modules/uni-id-pages/static/uni-center/grey.png
create mode 100644 uni_modules/uni-id-pages/static/uni-center/headers.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/alipay.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/apple.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/douyin.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/facebook.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/google.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/qq.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/sinaweibo.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/sms.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/taobao.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/univerify.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/user.png
create mode 100644 uni_modules/uni-id-pages/static/uni-fab-login/weixin.png
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/constants.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/error.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/utils.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/common/validator.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/config/permission.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/index.obj.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lang/en.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lang/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lang/zh-hans.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/alipay/account/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/alipay/account/protocols.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/alipay/alipayBase.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/apple/account/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/apple/rsa-public-key-pem.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/qq/account/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/qq/account/protocol.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/qq/normalize.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/share/create-api.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/weixin/account/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/weixin/normalize.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/third-party/weixin/utils.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/account.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/captcha.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/config.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/fission.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/login.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/logout.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/password.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/qq.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/register.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/relate.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/sms.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/unified-login.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/univerify.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/update-user-info.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/utils.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/verify-code.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/access-control.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/auth.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/rbac.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/uni-id-log.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/middleware/validate.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/close-account.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/get-account-info.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/reset-pwd-by-email.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/reset-pwd-by-sms.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/account/update-pwd.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/admin/add-user.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/admin/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/admin/update-user.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/dev/get-supported-login-type.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/dev/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/fission/accept-invite.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/fission/get-invited-user.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/fission/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-alipay.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-apple.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-baidu.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-dingtalk.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-douyin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-email-code.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-email-link.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-facebook.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-google.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-qq.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-sms.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-taobao.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-toutiao.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-univerify.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-weibo.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-weixin-mobile.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login-by-weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/login/login.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/logout/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/logout/logout.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/multi-end/authorize-app-login.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/multi-end/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/multi-end/remove-authorized-app.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/multi-end/set-authorized-app.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/multi-end/utils.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/register/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/register/register-admin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/register/register-user-by-email.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/register/register-user.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-alipay.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-apple.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-mobile-by-mp-weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-mobile-by-sms.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-mobile-by-univerify.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-qq.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/unbind-alipay.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/unbind-apple.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/unbind-qq.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/unbind-weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/utils/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/utils/refresh-token.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/utils/secure-network-handshake-by-weixin.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/utils/set-push-cid.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/create-captcha.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/refresh-captcha.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/send-email-code.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/send-email-link.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/verify/send-sms-code.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/.bin/semver
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/.bin/semver.cmd
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/.bin/semver.ps1
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/.npmignore
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/.travis.yml
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/LICENSE.txt
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/buffer-equal-constant-time/test.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/CODEOWNERS
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/CHANGELOG.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/decode.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/lib/JsonWebTokenError.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/lib/NotBeforeError.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/lib/TokenExpiredError.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/lib/psSupported.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/lib/timespan.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/sign.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jsonwebtoken/verify.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jwa/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jwa/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jwa/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jwa/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/CHANGELOG.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/lib/data-stream.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/lib/sign-stream.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/lib/tostring.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/lib/verify-stream.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/jws/readme.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.includes/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.includes/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.includes/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.includes/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isboolean/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isboolean/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isboolean/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isboolean/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isinteger/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isinteger/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isinteger/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isinteger/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isnumber/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isnumber/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isnumber/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isnumber/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isplainobject/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isplainobject/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isplainobject/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isplainobject/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isstring/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isstring/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isstring/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.isstring/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.merge/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.merge/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.merge/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.merge/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.once/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.once/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.once/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/lodash.once/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ms/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ms/license.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ms/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/ms/readme.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/safe-buffer/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/safe-buffer/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/safe-buffer/index.d.ts
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/safe-buffer/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/safe-buffer/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/CHANGELOG.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/LICENSE
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/README.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/bin/semver
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/range.bnf
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/semver/semver.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/LICENSE.md
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/fonts/font.ttf
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/node_modules/uni-config-center/uni-open-bridge/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-captcha/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-config-center/uni-open-bridge/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/node_modules/uni-config-center/uni-open-bridge/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-id-common/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/bridge-error.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/config.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/consts.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/node_modules/uni-config-center/uni-id/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/node_modules/uni-config-center/uni-open-bridge/config.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/storage.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/uni-cloud-cache.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/validator.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/node_modules/uni-open-bridge-common/weixin-server.js
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/package-lock.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/package.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-log.schema.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-permissions.schema.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-roles.schema.json
create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-users.schema.json
create mode 100644 uni_modules/uni-open-bridge-common/changelog.md
create mode 100644 uni_modules/uni-open-bridge-common/package.json
create mode 100644 uni_modules/uni-open-bridge-common/readme.md
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/bridge-error.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/config.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/consts.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/index.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/node_modules/uni-config-center/index.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/node_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/package.json
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/storage.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/uni-cloud-cache.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/validator.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/weixin-server.js
create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/database/opendb-open-data.schema.json
diff --git a/.gitignore b/.gitignore
index 09c0a23..36e7207 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,6 @@
/unpackage/
/vue.config.js
/manifest.json
+uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/node_modules/uni-config-center/uni-id/config.json
+manifest.json
+uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/uni-id/config.json
diff --git a/App.vue b/App.vue
index f40b2de..7142519 100644
--- a/App.vue
+++ b/App.vue
@@ -3,6 +3,9 @@
export default {
onLaunch: async function() {
console.log('App Launch')
+ // #ifdef MP-WEIXIN
+ uniCloud.initSecureNetworkByWeixin()
+ // #endif
checkUpdate() //更新升级
},
mounted() {
diff --git a/pages.json b/pages.json
index 0188204..a5e596e 100644
--- a/pages.json
+++ b/pages.json
@@ -211,7 +211,7 @@
"navigationBarTitleText": "版本信息查看"
}
}
- ],
+],
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#1296db",
diff --git a/pages/secure-network/cloud-function.vue b/pages/secure-network/cloud-function.vue
index baea07f..486159c 100644
--- a/pages/secure-network/cloud-function.vue
+++ b/pages/secure-network/cloud-function.vue
@@ -1,90 +1,90 @@
-
- 请求数据
-
+
+ 请求数据
+
-
-
- secretType: "both"
-
-
-
-
+
+
+ secretType: "both"
+
+
+
+
-
-
- secretType: "request"
-
-
-
-
+
+
+ secretType: "request"
+
+
+
+
-
-
- secretType: "response"
-
-
-
-
+
+
+ secretType: "response"
+
+
+
+
-
- 提示:
-
- 当前请求的云函数强制校验 secretType: "both",返回值为请求的数据
-
-
- 不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
-
-
-
+
+ 提示:
+
+ 当前请求的云函数强制校验 secretType: "both",返回值为请求的数据
+
+
+ 不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
+
+
+
diff --git a/pages/secure-network/cloud-object.vue b/pages/secure-network/cloud-object.vue
index cde071c..7c81aba 100644
--- a/pages/secure-network/cloud-object.vue
+++ b/pages/secure-network/cloud-object.vue
@@ -1,82 +1,82 @@
-
- 请求数据
-
+
+ 请求数据
+
-
-
- secretType: "both"
-
-
-
-
+
+
+ secretType: "both"
+
+
+
+
-
-
- secretType: "request"
-
-
-
-
+
+
+ secretType: "request"
+
+
+
+
-
-
- secretType: "response"
-
-
-
-
+
+
+ secretType: "response"
+
+
+
+
-
- 提示:
-
- 当前请求的云对象强制校验 secretType: "both",返回值为请求的数据
-
-
- 不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
-
-
-
+
+ 提示:
+
+ 当前请求的云对象强制校验 secretType: "both",返回值为请求的数据
+
+
+ 不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
+
+
+
diff --git a/uniCloud-aliyun/cloudfunctions/secure-network-object/index.obj.js b/uniCloud-aliyun/cloudfunctions/secure-network-object/index.obj.js
index bb182aa..7ecd4d2 100644
--- a/uniCloud-aliyun/cloudfunctions/secure-network-object/index.obj.js
+++ b/uniCloud-aliyun/cloudfunctions/secure-network-object/index.obj.js
@@ -10,7 +10,7 @@ module.exports = {
console.log(secretType);
- if (methodName === 'get' && (secretType !== 'both' || secretType !== 'response')) {
+ if (secretType !== 'both' ) {
throw new Error('secretType invalid') // 拒绝返回有效数据
}
},
diff --git a/uniCloud-aliyun/cloudfunctions/secure-network/index.js b/uniCloud-aliyun/cloudfunctions/secure-network/index.js
index 6a0979e..8396a41 100644
--- a/uniCloud-aliyun/cloudfunctions/secure-network/index.js
+++ b/uniCloud-aliyun/cloudfunctions/secure-network/index.js
@@ -7,7 +7,7 @@ exports.main = async (event, context) => {
const secretType = context.secretType
// secretType 是客户端调用 uniCloud.callFunction 传递的参数 secretType
- if (secretType !== 'both' || secretType !== 'response') {
+ if (secretType !== 'both') {
throw new Error('secretType invalid') // 拒绝返回有效数据
}
diff --git a/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/index.js b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/index.js
new file mode 100644
index 0000000..e14fb3b
--- /dev/null
+++ b/uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/node_modules/uni-config-center/index.js
@@ -0,0 +1 @@
+"use strict";var t=require("fs"),r=require("path");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=e(t),o=e(r),i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var u=function(t){var r={exports:{}};return t(r,r.exports),r.exports}((function(t,r){var e="__lodash_hash_undefined__",n=9007199254740991,o="[object Arguments]",u="[object Function]",c="[object Object]",a=/^\[object .+?Constructor\]$/,f=/^(?:0|[1-9]\d*)$/,s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s[o]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s[u]=s["[object Map]"]=s["[object Number]"]=s[c]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;var l="object"==typeof i&&i&&i.Object===Object&&i,h="object"==typeof self&&self&&self.Object===Object&&self,p=l||h||Function("return this")(),_=r&&!r.nodeType&&r,v=_&&t&&!t.nodeType&&t,d=v&&v.exports===_,y=d&&l.process,g=function(){try{var t=v&&v.require&&v.require("util").types;return t||y&&y.binding&&y.binding("util")}catch(t){}}(),b=g&&g.isTypedArray;function j(t,r,e){switch(e.length){case 0:return t.call(r);case 1:return t.call(r,e[0]);case 2:return t.call(r,e[0],e[1]);case 3:return t.call(r,e[0],e[1],e[2])}return t.apply(r,e)}var w,O,m,A=Array.prototype,z=Function.prototype,M=Object.prototype,x=p["__core-js_shared__"],C=z.toString,F=M.hasOwnProperty,U=(w=/[^.]+$/.exec(x&&x.keys&&x.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",S=M.toString,I=C.call(Object),P=RegExp("^"+C.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=d?p.Buffer:void 0,q=p.Symbol,E=p.Uint8Array,$=T?T.allocUnsafe:void 0,D=(O=Object.getPrototypeOf,m=Object,function(t){return O(m(t))}),k=Object.create,B=M.propertyIsEnumerable,N=A.splice,L=q?q.toStringTag:void 0,R=function(){try{var t=_t(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),G=T?T.isBuffer:void 0,V=Math.max,W=Date.now,H=_t(p,"Map"),J=_t(Object,"create"),K=function(){function t(){}return function(r){if(!Mt(r))return{};if(k)return k(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function Q(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},X.prototype.set=function(t,r){var e=this.__data__,n=nt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this},Y.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(H||X),string:new Q}},Y.prototype.delete=function(t){var r=pt(this,t).delete(t);return this.size-=r?1:0,r},Y.prototype.get=function(t){return pt(this,t).get(t)},Y.prototype.has=function(t){return pt(this,t).has(t)},Y.prototype.set=function(t,r){var e=pt(this,t),n=e.size;return e.set(t,r),this.size+=e.size==n?0:1,this},Z.prototype.clear=function(){this.__data__=new X,this.size=0},Z.prototype.delete=function(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e},Z.prototype.get=function(t){return this.__data__.get(t)},Z.prototype.has=function(t){return this.__data__.has(t)},Z.prototype.set=function(t,r){var e=this.__data__;if(e instanceof X){var n=e.__data__;if(!H||n.length<199)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new Y(n)}return e.set(t,r),this.size=e.size,this};var it,ut=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),u=i.length;u--;){var c=i[it?u:++n];if(!1===r(o[c],c,o))break}return t};function ct(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":L&&L in Object(t)?function(t){var r=F.call(t,L),e=t[L];try{t[L]=void 0;var n=!0}catch(t){}var o=S.call(t);n&&(r?t[L]=e:delete t[L]);return o}(t):function(t){return S.call(t)}(t)}function at(t){return xt(t)&&ct(t)==o}function ft(t){return!(!Mt(t)||function(t){return!!U&&U in t}(t))&&(At(t)?P:a).test(function(t){if(null!=t){try{return C.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function st(t){if(!Mt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=dt(t),e=[];for(var n in t)("constructor"!=n||!r&&F.call(t,n))&&e.push(n);return e}function lt(t,r,e,n,o){t!==r&&ut(r,(function(i,u){if(o||(o=new Z),Mt(i))!function(t,r,e,n,o,i,u){var a=yt(t,e),f=yt(r,e),s=u.get(f);if(s)return void rt(t,e,s);var l=i?i(a,f,e+"",t,r,u):void 0,h=void 0===l;if(h){var p=wt(f),_=!p&&mt(f),v=!p&&!_&&Ct(f);l=f,p||_||v?wt(a)?l=a:xt(j=a)&&Ot(j)?l=function(t,r){var e=-1,n=t.length;r||(r=Array(n));for(;++e-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(R?function(t,r){return R(t,"toString",{configurable:!0,enumerable:!1,value:(e=r,function(){return e}),writable:!0});var e}:It);function bt(t,r){return t===r||t!=t&&r!=r}var jt=at(function(){return arguments}())?at:function(t){return xt(t)&&F.call(t,"callee")&&!B.call(t,"callee")},wt=Array.isArray;function Ot(t){return null!=t&&zt(t.length)&&!At(t)}var mt=G||function(){return!1};function At(t){if(!Mt(t))return!1;var r=ct(t);return r==u||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}function zt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}function Mt(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function xt(t){return null!=t&&"object"==typeof t}var Ct=b?function(t){return function(r){return t(r)}}(b):function(t){return xt(t)&&zt(t.length)&&!!s[ct(t)]};function Ft(t){return Ot(t)?tt(t,!0):st(t)}var Ut,St=(Ut=function(t,r,e){lt(t,r,e)},ht((function(t,r){var e=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=Ut.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!Mt(e))return!1;var n=typeof r;return!!("number"==n?Ot(e)&&vt(r,e.length):"string"==n&&r in e)&&bt(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++ec.call(t,r);class f{constructor({pluginId:t,defaultConfig:r={},customMerge:e,root:n}){this.pluginId=t,this.defaultConfig=r,this.pluginConfigPath=o.default.resolve(n||__dirname,t),this.customMerge=e,this._config=void 0}resolve(t){return o.default.resolve(this.pluginConfigPath,t)}hasFile(t){return n.default.existsSync(this.resolve(t))}requireFile(t){try{return require(this.resolve(t))}catch(t){if("MODULE_NOT_FOUND"===t.code)return;throw t}}_getUserConfig(){return this.requireFile("config.json")}config(t,r){this._config||(this._config=(this.customMerge||u)(this.defaultConfig,this._getUserConfig()));let e=this._config;return t?function(t,r,e){if("number"==typeof r)return t[r];if("symbol"==typeof r)return a(t,r)?t[r]:e;const n="string"!=typeof(o=r)?o:o.split(".").reduce(((t,r)=>(r.split(/\[([^}]+)\]/g).forEach((r=>r&&t.push(r))),t)),[]);var o;let i=t;for(let t=0;t
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-avatar/uni-id-pages-avatar.vue b/uni_modules/uni-id-pages/components/uni-id-pages-avatar/uni-id-pages-avatar.vue
new file mode 100644
index 0000000..3c20fb2
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-avatar/uni-id-pages-avatar.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-bind-mobile/uni-id-pages-bind-mobile.vue b/uni_modules/uni-id-pages/components/uni-id-pages-bind-mobile/uni-id-pages-bind-mobile.vue
new file mode 100644
index 0000000..c2c5dde
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-bind-mobile/uni-id-pages-bind-mobile.vue
@@ -0,0 +1,165 @@
+
+
+
+ 绑定资料
+ 将一键获取你的手机号码绑定你的个人资料
+
+ 关闭
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-email-form/uni-id-pages-email-form.vue b/uni_modules/uni-id-pages/components/uni-id-pages-email-form/uni-id-pages-email-form.vue
new file mode 100644
index 0000000..e95652b
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-email-form/uni-id-pages-email-form.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+ {{innerText}}
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue b/uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue
new file mode 100644
index 0000000..f6073c4
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-fab-login/uni-id-pages-fab-login.vue
@@ -0,0 +1,573 @@
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-sms-form/uni-id-pages-sms-form.vue b/uni_modules/uni-id-pages/components/uni-id-pages-sms-form/uni-id-pages-sms-form.vue
new file mode 100644
index 0000000..484a9ee
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-sms-form/uni-id-pages-sms-form.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+ {{innerText}}
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/components/uni-id-pages-user-profile/uni-id-pages-user-profile.vue b/uni_modules/uni-id-pages/components/uni-id-pages-user-profile/uni-id-pages-user-profile.vue
new file mode 100644
index 0000000..703f484
--- /dev/null
+++ b/uni_modules/uni-id-pages/components/uni-id-pages-user-profile/uni-id-pages-user-profile.vue
@@ -0,0 +1,176 @@
+
+
+
+ 绑定资料
+ 获取你的微信头像和昵称,完善你的个人资料
+
+ 关闭
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/config.js b/uni_modules/uni-id-pages/config.js
new file mode 100644
index 0000000..d7bd4a0
--- /dev/null
+++ b/uni_modules/uni-id-pages/config.js
@@ -0,0 +1,56 @@
+export default {
+ //调试模式
+ "debug": false,
+ /*
+ 登录类型 未列举到的或运行环境不支持的,将被自动隐藏。
+ 如果需要在不同平台有不同的配置,直接用条件编译即可
+ */
+ "isAdmin": false, // 区分管理端与用户端
+ "loginTypes": [
+ // "qq",
+ // "xiaomi",
+ // "sinaweibo",
+ // "taobao",
+ // "facebook",
+ // "google",
+ // "alipay",
+ // "douyin",
+
+ // #ifdef APP
+ "univerify",
+ // #endif
+ "weixin",
+ "username",
+ // #ifdef APP
+ "apple",
+ // #endif
+ "smsCode"
+ ],
+ //政策协议
+ "agreements": {
+ "serviceUrl": "https://xxx", //用户服务协议链接
+ "privacyUrl": "https://xxx", //隐私政策条款链接
+ // 哪些场景下显示,1.注册(包括登录并注册,如:微信登录、苹果登录、短信验证码登录)、2.登录(如:用户名密码登录)
+ "scope": [
+ 'register', 'login'
+ ]
+ },
+ // 提供各类服务接入(如微信登录服务)的应用id
+ "appid": {
+ "weixin": {
+ // 微信公众号的appid,来源:登录微信公众号(https://mp.weixin.qq.com)-> 设置与开发 -> 基本配置 -> 公众号开发信息 -> AppID
+ "h5": "xxxxxx",
+ // 微信开放平台的appid,来源:登录微信开放平台(https://open.weixin.qq.com) -> 管理中心 -> 网站应用 -> 选择对应的应用名称,点击查看 -> AppID
+ "web": "xxxxxx"
+ }
+ },
+ /**
+ * 密码强度
+ * super(超强:密码必须包含大小写字母、数字和特殊符号,长度范围:8-16位之间)
+ * strong(强: 密密码必须包含字母、数字和特殊符号,长度范围:8-16位之间)
+ * medium (中:密码必须为字母、数字和特殊符号任意两种的组合,长度范围:8-16位之间)
+ * weak(弱:密码必须包含字母和数字,长度范围:6-16位之间)
+ * 为空或false则不验证密码强度
+ */
+ "passwordStrength":"medium"
+}
diff --git a/uni_modules/uni-id-pages/init.js b/uni_modules/uni-id-pages/init.js
new file mode 100644
index 0000000..fa8df81
--- /dev/null
+++ b/uni_modules/uni-id-pages/init.js
@@ -0,0 +1,99 @@
+// 导入配置
+import config from '@/uni_modules/uni-id-pages/config.js';
+// uni-id的云对象
+const uniIdCo = uniCloud.importObject("uni-id-co", {
+ customUI: true
+})
+// 用户配置的登录方式、是否打开调试模式
+const {
+ loginTypes,
+ debug
+} = config
+
+export default async function() {
+
+ // 有打开调试模式的情况下
+ if (debug) {
+ // 1. 检查本地uni-id-pages中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置
+ //调用云对象,获取服务端已正确配置的登录方式
+ let {
+ supportedLoginType
+ } = await uniIdCo.getSupportedLoginType()
+ console.log("supportedLoginType: " + JSON.stringify(supportedLoginType));
+ //登录方式,服务端和客户端的映射关系
+ let data = {
+ smsCode: 'mobile-code',
+ univerify: 'univerify',
+ username: 'username-password',
+ weixin: 'weixin',
+ qq: 'qq',
+ xiaomi: 'xiaomi',
+ sinaweibo: 'sinaweibo',
+ taobao: 'taobao',
+ facebook: 'facebook',
+ google: 'google',
+ alipay: 'alipay',
+ apple: "apple"
+ }
+ //遍历客户端配置的登录方式,与服务端比对。并在错误时抛出错误提示
+ let list = loginTypes.filter(type => !supportedLoginType.includes(data[type]))
+ if (list.length) {
+ console.error(
+ `错误:前端启用的登录方式:${list.join(',')};没有在服务端完成配置。配置文件路径:"/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json"`
+ );
+ }
+ }
+
+ // #ifdef APP-PLUS
+ //如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步)
+ if (loginTypes.includes('univerify')) {
+ uni.preLogin({
+ provider: 'univerify',
+ complete: e => {
+ console.log(e);
+ }
+ })
+ }
+ // #endif
+
+ //3. 绑定clientDB错误事件
+ // clientDB对象
+ const db = uniCloud.database()
+ db.on('error', onDBError)
+ //clientDB的错误提示
+ function onDBError({
+ code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue
+ message
+ }) {
+ console.error('onDBError', {
+ code,
+ message
+ });
+ }
+ // 解绑clientDB错误事件
+ //db.off('error', onDBError)
+
+
+ //4. 同步客户端push_clientid至device表
+ if (uniCloud.onRefreshToken) {
+ uniCloud.onRefreshToken(() => {
+ console.log('onRefreshToken');
+ if (uni.getPushClientId) {
+ uni.getPushClientId({
+ success: async function(e) {
+ console.log(e)
+ let pushClientId = e.cid
+ console.log(pushClientId);
+ let res = await uniIdCo.setPushCid({
+ pushClientId
+ })
+ console.log('getPushClientId', res);
+ },
+ fail(e) {
+ console.log(e)
+ }
+ })
+ }
+ })
+ }
+}
diff --git a/uni_modules/uni-id-pages/package.json b/uni_modules/uni-id-pages/package.json
new file mode 100644
index 0000000..fa04708
--- /dev/null
+++ b/uni_modules/uni-id-pages/package.json
@@ -0,0 +1,101 @@
+{
+ "id": "uni-id-pages",
+ "displayName": "uni-id-pages",
+ "version": "1.0.27",
+ "description": "云端一体简单、统一、可扩展的用户中心页面模版",
+ "keywords": [
+ "用户管理",
+ "用户中心",
+ "短信验证码",
+ "login",
+ "登录"
+ ],
+ "repository": "https://gitcode.net/dcloud/hello_uni-id-pages",
+ "engines": {
+ "HBuilderX": "^3.4.17"
+ },
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "",
+ "type": "unicloud-template-page"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-captcha",
+ "uni-config-center",
+ "uni-data-checkbox",
+ "uni-easyinput",
+ "uni-forms",
+ "uni-icons",
+ "uni-id-common",
+ "uni-list",
+ "uni-load-more",
+ "uni-popup",
+ "uni-scss",
+ "uni-transition",
+ "uni-open-bridge-common"
+ ],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ },
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "u",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u",
+ "钉钉": "u",
+ "快手": "u",
+ "飞书": "u",
+ "京东": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ },
+ "dependencies": {
+ }
+}
diff --git a/uni_modules/uni-id-pages/pages/common/webview/webview.vue b/uni_modules/uni-id-pages/pages/common/webview/webview.vue
new file mode 100644
index 0000000..83d07ec
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/common/webview/webview.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/login/login-smscode.vue b/uni_modules/uni-id-pages/pages/login/login-smscode.vue
new file mode 100644
index 0000000..df67bc4
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/login/login-smscode.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+ 请输入验证码
+ 先输入图形验证码,再获取短信验证码
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/login/login-withoutpwd.vue b/uni_modules/uni-id-pages/pages/login/login-withoutpwd.vue
new file mode 100644
index 0000000..868776c
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/login/login-withoutpwd.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+ 请选择登录方式
+
+
+ 将根据第三方账号服务平台的授权范围获取你的信息
+
+
+
+
+
+
+
+ 未注册的账号验证通过后将自动注册
+
+ +86
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/login/login-withpwd.vue b/uni_modules/uni-id-pages/pages/login/login-withpwd.vue
new file mode 100644
index 0000000..ca6fc5d
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/login/login-withpwd.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+ 账号密码登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 忘记了?
+ 找回密码
+
+ {{config.isAdmin ? '注册管理员账号': '注册账号'}}
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/register/register-admin.vue b/uni_modules/uni-id-pages/pages/register/register-admin.vue
new file mode 100644
index 0000000..71690d9
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/register/register-admin.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+ 创建超级管理员
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 已有账号?点此登录
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/register/register-by-email.vue b/uni_modules/uni-id-pages/pages/register/register-by-email.vue
new file mode 100644
index 0000000..f45dc57
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/register/register-by-email.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+ 邮箱验证码注册
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 用户名密码注册
+ 已有账号?点此登录
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/register/register.vue b/uni_modules/uni-id-pages/pages/register/register.vue
new file mode 100644
index 0000000..097d12f
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/register/register.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+ 用户名密码注册
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 邮箱验证码注册
+ 已有账号?点此登录
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/register/validator.js b/uni_modules/uni-id-pages/pages/register/validator.js
new file mode 100644
index 0000000..9173e3c
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/register/validator.js
@@ -0,0 +1,56 @@
+import passwordMod from '@/uni_modules/uni-id-pages/common/password.js'
+export default {
+ "username": {
+ "rules": [{
+ required: true,
+ errorMessage: '请输入用户名',
+ },
+ {
+ minLength: 3,
+ maxLength: 32,
+ errorMessage: '用户名长度在 {minLength} 到 {maxLength} 个字符',
+ },
+ {
+ validateFunction: function(rule, value, data, callback) {
+ // console.log(value);
+ if (/^1\d{10}$/.test(value) || /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(value)) {
+ callback('用户名不能是:手机号或邮箱')
+ };
+ if (/^\d+$/.test(value)) {
+ callback('用户名不能为纯数字')
+ };
+ if(/[\u4E00-\u9FA5\uF900-\uFA2D]{1,}/.test(value)){
+ callback('用户名不能包含中文')
+ }
+ return true
+ }
+ }
+ ],
+ "label": "用户名"
+ },
+ "nickname": {
+ "rules": [{
+ minLength: 3,
+ maxLength: 32,
+ errorMessage: '昵称长度在 {minLength} 到 {maxLength} 个字符',
+ },
+ {
+ validateFunction: function(rule, value, data, callback) {
+ // console.log(value);
+ if (/^1\d{10}$/.test(value) || /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(value)) {
+ callback('昵称不能是:手机号或邮箱')
+ };
+ if (/^\d+$/.test(value)) {
+ callback('昵称不能为纯数字')
+ };
+ if(/[\u4E00-\u9FA5\uF900-\uFA2D]{1,}/.test(value)){
+ callback('昵称不能包含中文')
+ }
+ return true
+ }
+ }
+ ],
+ "label": "昵称"
+ },
+ ...passwordMod.getPwdRules()
+}
diff --git a/uni_modules/uni-id-pages/pages/retrieve/retrieve-by-email.vue b/uni_modules/uni-id-pages/pages/retrieve/retrieve-by-email.vue
new file mode 100644
index 0000000..71ca8fe
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/retrieve/retrieve-by-email.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+ 通过邮箱验证码找回密码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 通过手机验证码找回密码
+
+ 返回登录
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/retrieve/retrieve.vue b/uni_modules/uni-id-pages/pages/retrieve/retrieve.vue
new file mode 100644
index 0000000..74ed220
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/retrieve/retrieve.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+
+ 通过手机验证码找回密码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 通过邮箱验证码找回密码
+
+ 返回登录
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/bind-mobile/bind-mobile.vue b/uni_modules/uni-id-pages/pages/userinfo/bind-mobile/bind-mobile.vue
new file mode 100644
index 0000000..15d68eb
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/bind-mobile/bind-mobile.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+ 绑定手机号
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/change_pwd/change_pwd.vue b/uni_modules/uni-id-pages/pages/userinfo/change_pwd/change_pwd.vue
new file mode 100644
index 0000000..d38c429
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/change_pwd/change_pwd.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+ 修改密码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/cropImage.vue b/uni_modules/uni-id-pages/pages/userinfo/cropImage/cropImage.vue
new file mode 100644
index 0000000..0a9e701
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/cropImage.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/README.md b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/README.md
new file mode 100644
index 0000000..9219f81
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/README.md
@@ -0,0 +1,227 @@
+> 插件来源:[https://ext.dcloud.net.cn/plugin?id=3594](https://ext.dcloud.net.cn/plugin?id=3594)
+##### 以下是作者写的插件介绍:
+
+# Clipper 图片裁剪
+> uniapp 图片裁剪,可用于图片头像等裁剪处理
+> [查看更多](http://liangei.gitee.io/limeui/#/clipper)
+> Q群:458377637
+
+
+## 平台兼容
+
+| H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ 小程序 | App |
+| --- | ---------- | ------------ | ---------- | ---------- | --------- | --- |
+| √ | √ | √ | 未测 | √ | √ | √ |
+
+
+## 代码演示
+### 基本用法
+`@success` 事件点击 👉 **确定** 后会返回生成的图片信息,包含 `url`、`width`、`height`
+
+```html
+
+
+
+```
+
+```js
+// 非uni_modules引入
+import lClipper from '@/components/lime-clipper/'
+// uni_modules引入
+import lClipper from '@/uni_modules/lime-clipper/components/lime-clipper/'
+export default {
+ components: {lClipper},
+ data() {
+ return {
+ show: false,
+ url: '',
+ }
+ }
+}
+```
+
+
+### 传入图片
+`image-url`可传入**相对路径**、**临时路径**、**本地路径**、**网络图片**
+
+* **当为网络地址时**
+* H5:👉 需要解决跨域问题。
+* 小程序:👉 需要配置 downloadFile 域名
+
+
+```html
+
+
+
+```
+
+```js
+export default {
+ components: {lClipper},
+ data() {
+ return {
+ imageUrl: 'https://img12.360buyimg.com/pop/s1180x940_jfs/t1/97205/26/1142/87801/5dbac55aEf795d962/48a4d7a63ff80b8b.jpg',
+ show: false,
+ url: '',
+ }
+ }
+}
+```
+
+
+### 确定按钮颜色
+样式变量名:`--l-clipper-confirm-color`
+可放到全局样式的 `page` 里或节点的 `style`
+```html
+
+```
+```css
+// css 中为组件设置 CSS 变量
+.clipper {
+ --l-clipper-confirm-color: linear-gradient(to right, #ff6034, #ee0a24)
+}
+// 全局
+page {
+ --l-clipper-confirm-color: linear-gradient(to right, #ff6034, #ee0a24)
+}
+```
+
+
+### 使用插槽
+共五个插槽 `cancel` 取消按钮、 `photo` 选择图片按钮、 `rotate` 旋转按钮、 `confirm` 确定按钮和默认插槽。
+
+```html
+
+
+
+ 取消
+ 选择图片
+ 旋转
+ 确定
+
+
+ 显示取消按钮
+
+
+ 显示选择图片按钮
+
+
+ 显示旋转按钮
+
+
+ 显示确定按钮
+
+
+ 锁定裁剪框宽度
+
+
+ 锁定裁剪框高度
+
+
+ 锁定裁剪框比例
+
+
+ 限制移动范围
+
+
+ 禁止缩放
+
+
+ 禁止旋转
+
+
+
+
+
+```
+
+```js
+export default {
+ components: {lClipper},
+ data() {
+ return {
+ show: false,
+ url: '',
+ isLockWidth: false,
+ isLockHeight: false,
+ isLockRatio: true,
+ isLimitMove: false,
+ isDisableScale: false,
+ isDisableRotate: false,
+ isShowCancelBtn: true,
+ isShowPhotoBtn: true,
+ isShowRotateBtn: true,
+ isShowConfirmBtn: true
+ }
+ }
+}
+```
+
+
+## API
+
+### Props
+
+| 参数 | 说明 | 类型 | 默认值 |
+| ------------- | ------------ | ---------------- | ------------ |
+| image-url | 图片路径 | string | |
+| quality | 图片的质量,取值范围为 [0, 1],不在范围内时当作1处理 | number | `1` |
+| source | `{album: '从相册中选择'}`key为图片来源类型,value为选项说明 | Object | |
+| width | 裁剪框宽度,单位为 `rpx` | number | `400` |
+| height | 裁剪框高度 | number | `400` |
+| min-width | 裁剪框最小宽度 | number | `200` |
+| min-height |裁剪框最小高度 | number | `200` |
+| max-width | 裁剪框最大宽度 | number | `600` |
+| max-height | 裁剪框最大宽度 | number | `600` |
+| min-ratio | 图片最小缩放比 | number | `0.5` |
+| max-ratio | 图片最大缩放比 | number | `2` |
+| rotate-angle | 旋转按钮每次旋转的角度 | number | `90` |
+| scale-ratio | 生成图片相对于裁剪框的比例, **比例越高生成图片越清晰** | number | `1` |
+| is-lock-width | 是否锁定裁剪框宽度 | boolean | `false` |
+| is-lock-height | 是否锁定裁剪框高度上 | boolean | `false` |
+| is-lock-ratio | 是否锁定裁剪框比例 | boolean | `true` |
+| is-disable-scale | 是否禁止缩放 | boolean | `false` |
+| is-disable-rotate | 是否禁止旋转 | boolean | `false` |
+| is-limit-move | 是否限制移动范围 | boolean | `false` |
+| is-show-photo-btn | 是否显示选择图片按钮 | boolean | `true` |
+| is-show-rotate-btn | 是否显示转按钮 | boolean | `true` |
+| is-show-confirm-btn | 是否显示确定按钮 | boolean | `true` |
+| is-show-cancel-btn | 是否显示关闭按钮 | boolean | `true` |
+
+
+
+### 事件 Events
+
+| 事件名 | 说明 | 回调 |
+| ------- | ------------ | -------------- |
+| success | 生成图片成功 | {`width`, `height`, `url`} |
+| fail | 生成图片失败 | `error` |
+| cancel | 关闭 | `false` |
+| ready | 图片加载完成 | {`width`, `height`, `path`, `orientation`, `type`} |
+| change | 图片大小改变时触发 | {`width`, `height`} |
+| rotate | 图片旋转时触发 | `angle` |
+
+## 常见问题
+> 1、H5端使用网络图片需要解决跨域问题。
+> 2、小程序使用网络图片需要去公众平台增加下载白名单!二级域名也需要配!
+> 3、H5端生成图片是base64,有时显示只有一半可以使用原生标签``
+> 4、IOS APP 请勿使用HBX2.9.3.20201014的版本!这个版本无法生成图片。
+> 5、APP端无成功反馈、也无失败反馈时,请更新基座和HBX。
+
+
+## 打赏
+如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。
+![输入图片说明](https://images.gitee.com/uploads/images/2020/1122/222521_bb543f96_518581.jpeg "微信图片编辑_20201122220352.jpg")
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/photo.svg b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/photo.svg
new file mode 100644
index 0000000..7b4b590
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/photo.svg
@@ -0,0 +1,19 @@
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/rotate.svg b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/rotate.svg
new file mode 100644
index 0000000..0143706
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/images/rotate.svg
@@ -0,0 +1,15 @@
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/index.css b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/index.css
new file mode 100644
index 0000000..ce542bf
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/index.css
@@ -0,0 +1,160 @@
+.flex-auto {
+ flex: auto;
+}
+.bg-transparent {
+ background-color: rgba(0,0,0,0.9);
+ transition-duration: 0.35s;
+}
+.l-clipper {
+ width: 100vw;
+ height: calc(100vh - var(--window-top));
+ background-color: rgba(0,0,0,0.9);
+ position: fixed;
+ top: var(--window-top);
+ left: 0;
+ z-index: 1;
+}
+.l-clipper-mask {
+ position: relative;
+ z-index: 2;
+ pointer-events: none;
+}
+.l-clipper__content {
+ pointer-events: none;
+ position: absolute;
+ border: 1rpx solid rgba(255,255,255,0.3);
+ box-sizing: border-box;
+ box-shadow: rgba(0,0,0,0.5) 0 0 0 80vh;
+ background: transparent;
+}
+.l-clipper__content::before,
+.l-clipper__content::after {
+ content: '';
+ position: absolute;
+ border: 1rpx dashed rgba(255,255,255,0.3);
+}
+.l-clipper__content::before {
+ width: 100%;
+ top: 33.33%;
+ height: 33.33%;
+ border-left: none;
+ border-right: none;
+}
+.l-clipper__content::after {
+ width: 33.33%;
+ left: 33.33%;
+ height: 100%;
+ border-top: none;
+ border-bottom: none;
+}
+.l-clipper__edge {
+ position: absolute;
+ width: 34rpx;
+ height: 34rpx;
+ border: 6rpx solid #fff;
+ pointer-events: auto;
+}
+.l-clipper__edge::before {
+ content: '';
+ position: absolute;
+ width: 40rpx;
+ height: 40rpx;
+ background-color: transparent;
+}
+.l-clipper__edge:nth-child(1) {
+ left: -6rpx;
+ top: -6rpx;
+ border-bottom-width: 0 !important;
+ border-right-width: 0 !important;
+}
+.l-clipper__edge:nth-child(1):before {
+ top: -50%;
+ left: -50%;
+}
+.l-clipper__edge:nth-child(2) {
+ right: -6rpx;
+ top: -6rpx;
+ border-bottom-width: 0 !important;
+ border-left-width: 0 !important;
+}
+.l-clipper__edge:nth-child(2):before {
+ top: -50%;
+ left: 50%;
+}
+.l-clipper__edge:nth-child(3) {
+ left: -6rpx;
+ bottom: -6rpx;
+ border-top-width: 0 !important;
+ border-right-width: 0 !important;
+}
+.l-clipper__edge:nth-child(3):before {
+ bottom: -50%;
+ left: -50%;
+}
+.l-clipper__edge:nth-child(4) {
+ right: -6rpx;
+ bottom: -6rpx;
+ border-top-width: 0 !important;
+ border-left-width: 0 !important;
+}
+.l-clipper__edge:nth-child(4):before {
+ bottom: -50%;
+ left: 50%;
+}
+.l-clipper-image {
+ width: 100%;
+ border-style: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transform-origin: center;
+}
+.l-clipper-canvas {
+ position: fixed;
+ z-index: 10;
+ left: -200vw;
+ top: -200vw;
+ pointer-events: none;
+}
+.l-clipper-tools {
+ position: fixed;
+ left: 0;
+ bottom: 10px;
+ width: 100%;
+ z-index: 99;
+ color: #fff;
+}
+.l-clipper-tools__btns {
+ font-weight: bold;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 100%;
+ padding: 20rpx 40rpx;
+ box-sizing: border-box;
+}
+.l-clipper-tools__btns .cancel {
+ width: 112rpx;
+ height: 60rpx;
+ text-align: center;
+ line-height: 60rpx;
+}
+.l-clipper-tools__btns .confirm {
+ width: 112rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ background-color: #07c160;
+ border-radius: 6rpx;
+ text-align: center;
+}
+.l-clipper-tools__btns image {
+ display: block;
+ width: 60rpx;
+ height: 60rpx;
+}
+.l-clipper-tools__btns {
+ flex-direction: row;
+}
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/limeClipper.vue b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/limeClipper.vue
new file mode 100644
index 0000000..8ae9389
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/limeClipper.vue
@@ -0,0 +1,816 @@
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/utils.js b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/utils.js
new file mode 100644
index 0000000..980c439
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/cropImage/limeClipper/utils.js
@@ -0,0 +1,244 @@
+/**
+ * 判断手指触摸位置
+ */
+export function determineDirection(clipX, clipY, clipWidth, clipHeight, currentX, currentY) {
+ /*
+ * (右下>>1 右上>>2 左上>>3 左下>>4)
+ */
+ let corner;
+ /**
+ * 思路:(利用直角坐标系)
+ * 1.找出裁剪框中心点
+ * 2.如点击坐标在上方点与左方点区域内,则点击为左上角
+ * 3.如点击坐标在下方点与右方点区域内,则点击为右下角
+ * 4.其他角同理
+ */
+ const mainPoint = [clipX + clipWidth / 2, clipY + clipHeight / 2]; // 中心点
+ const currentPoint = [currentX, currentY]; // 触摸点
+
+ if (currentPoint[0] <= mainPoint[0] && currentPoint[1] <= mainPoint[1]) {
+ corner = 3; // 左上
+ } else if (currentPoint[0] >= mainPoint[0] && currentPoint[1] <= mainPoint[1]) {
+ corner = 2; // 右上
+ } else if (currentPoint[0] <= mainPoint[0] && currentPoint[1] >= mainPoint[1]) {
+ corner = 4; // 左下
+ } else if (currentPoint[0] >= mainPoint[0] && currentPoint[1] >= mainPoint[1]) {
+ corner = 1; // 右下
+ }
+
+ return corner;
+}
+
+/**
+ * 图片边缘检测检测时,计算图片偏移量
+ */
+export function calcImageOffset(data, scale) {
+ let left = data.imageLeft;
+ let top = data.imageTop;
+ scale = scale || data.scale;
+
+ let imageWidth = data.imageWidth;
+ let imageHeight = data.imageHeight;
+ if ((data.angle / 90) % 2) {
+ imageWidth = data.imageHeight;
+ imageHeight = data.imageWidth;
+ }
+ const {
+ clipX,
+ clipWidth,
+ clipY,
+ clipHeight
+ } = data;
+
+ // 当前图片宽度/高度
+ const currentImageSize = (size) => (size * scale) / 2;
+ const currentImageWidth = currentImageSize(imageWidth);
+ const currentImageHeight = currentImageSize(imageHeight);
+
+ left = clipX + currentImageWidth >= left ? left : clipX + currentImageWidth;
+ left = clipX + clipWidth - currentImageWidth <= left ? left : clipX + clipWidth - currentImageWidth;
+ top = clipY + currentImageHeight >= top ? top : clipY + currentImageHeight;
+ top = clipY + clipHeight - currentImageHeight <= top ? top : clipY + clipHeight - currentImageHeight;
+ return {
+ left,
+ top,
+ scale
+ };
+}
+
+/**
+ * 图片边缘检测时,计算图片缩放比例
+ */
+export function calcImageScale(data, scale) {
+ scale = scale || data.scale;
+ let {
+ imageWidth,
+ imageHeight,
+ clipWidth,
+ clipHeight,
+ angle
+ } = data
+ if ((angle / 90) % 2) {
+ imageWidth = imageHeight;
+ imageHeight = imageWidth;
+ }
+ if (imageWidth * scale < clipWidth) {
+ scale = clipWidth / imageWidth;
+ }
+ if (imageHeight * scale < clipHeight) {
+ scale = Math.max(scale, clipHeight / imageHeight);
+ }
+ return scale;
+}
+
+/**
+ * 计算图片尺寸
+ */
+export function calcImageSize(width, height, data) {
+ let imageWidth = width,
+ imageHeight = height;
+ let {
+ clipWidth,
+ clipHeight,
+ sysinfo,
+ width: originWidth,
+ height: originHeight
+ } = data
+ if (imageWidth && imageHeight) {
+ if (imageWidth / imageHeight > (clipWidth || originWidth) / (clipWidth || originHeight)) {
+ imageHeight = clipHeight || originHeight;
+ imageWidth = (width / height) * imageHeight;
+ } else {
+ imageWidth = clipWidth || originWidth;
+ imageHeight = (height / width) * imageWidth;
+ }
+ } else {
+ let sys = sysinfo || uni.getSystemInfoSync();
+ imageWidth = sys.windowWidth;
+ imageHeight = 0;
+ }
+ return {
+ imageWidth,
+ imageHeight
+ };
+}
+
+/**
+ * 勾股定理求斜边
+ */
+export function calcPythagoreanTheorem(width, height) {
+ return Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));
+}
+
+/**
+ * 拖动裁剪框时计算
+ */
+export function clipTouchMoveOfCalculate(data, event) {
+ const clientX = event.touches[0].clientX;
+ const clientY = event.touches[0].clientY;
+
+ let {
+ clipWidth,
+ clipHeight,
+ clipY: oldClipY,
+ clipX: oldClipX,
+ clipStart,
+ isLockRatio,
+ maxWidth,
+ minWidth,
+ maxHeight,
+ minHeight
+ } = data;
+ maxWidth = maxWidth / 2;
+ minWidth = minWidth / 2;
+ minHeight = minHeight / 2;
+ maxHeight = maxHeight / 2;
+
+ let width = clipWidth,
+ height = clipHeight,
+ clipY = oldClipY,
+ clipX = oldClipX,
+ // 获取裁剪框实际宽度/高度
+ // 如果大于最大值则使用最大值
+ // 如果小于最小值则使用最小值
+ sizecorrect = () => {
+ width = width <= maxWidth ? (width >= minWidth ? width : minWidth) : maxWidth;
+ height = height <= maxHeight ? (height >= minHeight ? height : minHeight) : maxHeight;
+ },
+ sizeinspect = () => {
+ sizecorrect();
+ if ((width > maxWidth || width < minWidth || height > maxHeight || height < minHeight) && isLockRatio) {
+ return false;
+ } else {
+ return true;
+ }
+ };
+ //if (clipStart.corner) {
+ height = clipStart.height + (clipStart.corner > 1 && clipStart.corner < 4 ? 1 : -1) * (clipStart.y - clientY);
+ //}
+ switch (clipStart.corner) {
+ case 1:
+ width = clipStart.width - clipStart.x + clientX;
+ if (isLockRatio) {
+ height = width / (clipWidth / clipHeight);
+ }
+ if (!sizeinspect()) return;
+ break;
+ case 2:
+ width = clipStart.width - clipStart.x + clientX;
+ if (isLockRatio) {
+ height = width / (clipWidth / clipHeight);
+ }
+ if (!sizeinspect()) {
+ return;
+ } else {
+ clipY = clipStart.clipY - (height - clipStart.height);
+ }
+
+ break;
+ case 3:
+ width = clipStart.width + clipStart.x - clientX;
+ if (isLockRatio) {
+ height = width / (clipWidth / clipHeight);
+ }
+ if (!sizeinspect()) {
+ return;
+ } else {
+ clipY = clipStart.clipY - (height - clipStart.height);
+ clipX = clipStart.clipX - (width - clipStart.width);
+ }
+
+ break;
+ case 4:
+ width = clipStart.width + clipStart.x - clientX;
+ if (isLockRatio) {
+ height = width / (clipWidth / clipHeight);
+ }
+ if (!sizeinspect()) {
+ return;
+ } else {
+ clipX = clipStart.clipX - (width - clipStart.width);
+ }
+ break;
+ default:
+ break;
+ }
+ return {
+ width,
+ height,
+ clipX,
+ clipY
+ };
+}
+
+/**
+ * 单指拖动图片计算偏移
+ */
+export function imageTouchMoveOfCalcOffset(data, clientXForLeft, clientYForLeft) {
+ let left = clientXForLeft - data.touchRelative[0].x,
+ top = clientYForLeft - data.touchRelative[0].y;
+ return {
+ left,
+ top
+ };
+}
diff --git a/uni_modules/uni-id-pages/pages/userinfo/deactivate/deactivate.vue b/uni_modules/uni-id-pages/pages/userinfo/deactivate/deactivate.vue
new file mode 100644
index 0000000..d1d24d6
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/deactivate/deactivate.vue
@@ -0,0 +1,119 @@
+
+
+
+
+ 一、注销是不可逆操作,注销后:\n
+ 1.帐号将无法登录、无法找回。\n
+ 2.帐号所有信息都会清除(个人身份信息、粉丝数等;发布的作品、评论、点赞等;交易信息等),你
+ 的朋友将无法通过本应用帐号联系你,请自行备份相关
+ 信息和数据。\n
+
+ 二、重要提示\n
+ 1.封禁帐号(永久封禁、社交封禁、直播权限封禁)不能申请注销。\n
+ 2.注销后,你的身份证、三方帐号(微信、QQ、微博、支付宝)、手机号等绑定关系将解除,解除后可以绑定到其他帐号。\n
+ 3.注销后,手机号可以注册新的帐号,新帐号不会存在之前帐号的任何信息(作品、粉丝、评论、个人信息等)。\n
+ 4.注销本应用帐号前,需尽快处理帐号下的资金问题。\n
+ 5.视具体帐号情况而定,注销最多需要7天。\n
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/pages/userinfo/userinfo.vue b/uni_modules/uni-id-pages/pages/userinfo/userinfo.vue
new file mode 100644
index 0000000..9fb17c9
--- /dev/null
+++ b/uni_modules/uni-id-pages/pages/userinfo/userinfo.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-id-pages/readme.md b/uni_modules/uni-id-pages/readme.md
new file mode 100644
index 0000000..1650e45
--- /dev/null
+++ b/uni_modules/uni-id-pages/readme.md
@@ -0,0 +1,15 @@
+# 文档已移至uni-id-pages文档[https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html](https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html)
+
+
+
+关于插件更新的说明:
+
+所有uni_modules,在HBuilderX里点右键都可以直接升级。或者在插件市场导入覆盖。
+
+覆盖时HBuilderX会弹出代码差异比对,可以决定接受哪些更改、拒绝哪些更改。
+
+当拒绝局部修改时,注意可能产生兼容性问题。
+
+你需要二次开发uni-id-pages的前端页面,
+- 如果改动不大,那么每次更新uni-id-pages时,在HBuilderX的对比界面对比一下就好
+- 如果改动较大,建议复制一套前端页面到自己工程的pages目录下,pages.json里只引用根目录pages下的页面,不引用uni_modules下的页面。然后每次uni-id-pages更新,你对比下比上一版uni-id-pages改了什么,看你是否需要再合并到你自己的pages里。pages.json里不引用uni_modules里的页面的话,打包时不会把这些页面打包进去,不影响发行后的包体积
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/static/limeClipper/photo.svg b/uni_modules/uni-id-pages/static/limeClipper/photo.svg
new file mode 100644
index 0000000..7b4b590
--- /dev/null
+++ b/uni_modules/uni-id-pages/static/limeClipper/photo.svg
@@ -0,0 +1,19 @@
+
+
+
diff --git a/uni_modules/uni-id-pages/static/limeClipper/rotate.svg b/uni_modules/uni-id-pages/static/limeClipper/rotate.svg
new file mode 100644
index 0000000..0143706
--- /dev/null
+++ b/uni_modules/uni-id-pages/static/limeClipper/rotate.svg
@@ -0,0 +1,15 @@
+
+
+
diff --git a/uni_modules/uni-id-pages/static/login/apple.png b/uni_modules/uni-id-pages/static/login/apple.png
new file mode 100644
index 0000000000000000000000000000000000000000..04a3579cbd143037161da2779fb695f731818d81
GIT binary patch
literal 18205
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
literal 0
HcmV?d00001
diff --git a/uni_modules/uni-id-pages/static/uni-center/grey.png b/uni_modules/uni-id-pages/static/uni-center/grey.png
new file mode 100644
index 0000000000000000000000000000000000000000..2aae15a5d0b9eea8451df6395d53775bcc676f78
GIT binary patch
literal 6669
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
X90PicW&Nka#%63_p2KrU;E<}T
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