From e7fbe8bb49fc4351f37b5678f01bd675e534e2da Mon Sep 17 00:00:00 2001 From: weifashi <605403358@qq.com> Date: Wed, 8 Nov 2023 18:37:08 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=20=E5=8D=87=E7=BA=A7=20office=20?= =?UTF-8?q?=E5=88=B0=207.5=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/ApproveController.php | 2 +- app/Http/Controllers/Api/DialogController.php | 52 +++++++------- app/Http/Controllers/Api/FileController.php | 38 ++++++++--- app/Http/Controllers/Api/UsersController.php | 34 +++++----- app/Module/Doo.php | 2 +- composer.json | 3 +- composer.lock | 67 ++++++++++++++++++- docker-compose.yml | 5 +- resources/assets/js/components/OnlyOffice.vue | 12 +++- 9 files changed, 156 insertions(+), 59 deletions(-) diff --git a/app/Http/Controllers/Api/ApproveController.php b/app/Http/Controllers/Api/ApproveController.php index 8d348d4d7..e58e76109 100755 --- a/app/Http/Controllers/Api/ApproveController.php +++ b/app/Http/Controllers/Api/ApproveController.php @@ -1104,7 +1104,7 @@ class ApproveController extends AbstractController /** - * @api {get} api/approve/user/status 19. 获取用户审批状态 + * @api {get} api/approve/user/status 20. 获取用户审批状态 * * @apiVersion 1.0.0 * @apiGroup system diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index c1ab7291a..e3492a652 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -868,8 +868,8 @@ class DialogController extends AbstractController } /** - * @api {post} api/dialog/msg/sendfiles 17. 群发文件上传 - * @api {post} api/dialog/msg/sendfiles 18. 群发文件上传 + * @api {post} api/dialog/msg/sendfiles 19. 群发文件上传 + * @api {post} api/dialog/msg/sendfiles 19. 群发文件上传 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -924,7 +924,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/sendfileid 19. 通过文件ID发送文件 + * @api {get} api/dialog/msg/sendfileid 20. 通过文件ID发送文件 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -994,7 +994,7 @@ class DialogController extends AbstractController } /** - * @api {post} api/dialog/msg/sendanon 20. 发送匿名消息 + * @api {post} api/dialog/msg/sendanon 21. 发送匿名消息 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1047,7 +1047,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/readlist 21. 获取消息阅读情况 + * @api {get} api/dialog/msg/readlist 22. 获取消息阅读情况 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1076,7 +1076,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/detail 22. 消息详情 + * @api {get} api/dialog/msg/detail 23. 消息详情 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1124,7 +1124,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/download 23. 文件下载 + * @api {get} api/dialog/msg/download 24. 文件下载 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1165,7 +1165,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/withdraw 24. 聊天消息撤回 + * @api {get} api/dialog/msg/withdraw 25. 聊天消息撤回 * * @apiDescription 消息撤回限制24小时内,需要token身份 * @apiVersion 1.0.0 @@ -1191,7 +1191,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/mark 25. 消息标记操作 + * @api {get} api/dialog/msg/mark 26. 消息标记操作 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1258,7 +1258,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/silence 26. 消息免打扰 + * @api {get} api/dialog/msg/silence 27. 消息免打扰 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1321,7 +1321,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/forward 27. 转发消息给 + * @api {get} api/dialog/msg/forward 28. 转发消息给 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1358,7 +1358,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/emoji 28. emoji回复 + * @api {get} api/dialog/msg/emoji 29. emoji回复 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1393,7 +1393,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/tag 29. 标注/取消标注 + * @api {get} api/dialog/msg/tag 30. 标注/取消标注 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1422,7 +1422,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/todo 30. 设待办/取消待办 + * @api {get} api/dialog/msg/todo 31. 设待办/取消待办 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1465,7 +1465,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/todolist 31. 获取消息待办情况 + * @api {get} api/dialog/msg/todolist 32. 获取消息待办情况 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1495,7 +1495,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/done 32. 完成待办 + * @api {get} api/dialog/msg/done 33. 完成待办 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1542,7 +1542,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/msg/color 30. 设置颜色 + * @api {get} api/dialog/msg/color 34. 设置颜色 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1583,7 +1583,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/add 33. 新增群组 + * @api {get} api/dialog/group/add 35. 新增群组 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1645,7 +1645,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/edit 34. 修改群组 + * @api {get} api/dialog/group/edit 36. 修改群组 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1706,7 +1706,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/adduser 35. 添加群成员 + * @api {get} api/dialog/group/adduser 37. 添加群成员 * * @apiDescription 需要token身份 * - 有群主时:只有群主可以邀请 @@ -1742,7 +1742,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/deluser 36. 移出(退出)群成员 + * @api {get} api/dialog/group/deluser 38. 移出(退出)群成员 * * @apiDescription 需要token身份 * - 只有群主、邀请人可以踢人 @@ -1786,7 +1786,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/transfer 37. 转让群组 + * @api {get} api/dialog/group/transfer 39. 转让群组 * * @apiDescription 需要token身份 * - 只有群主且是个人类型群可以解散 @@ -1830,7 +1830,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/disband 38. 解散群组 + * @api {get} api/dialog/group/disband 40. 解散群组 * * @apiDescription 需要token身份 * - 只有群主且是个人类型群可以解散 @@ -1858,7 +1858,7 @@ class DialogController extends AbstractController } /** - * @api {get} api/dialog/group/searchuser 39. 搜索个人群(仅限管理员) + * @api {get} api/dialog/group/searchuser 41. 搜索个人群(仅限管理员) * * @apiDescription 需要token身份,用于创建部门搜索个人群组 * @apiVersion 1.0.0 @@ -1887,7 +1887,7 @@ class DialogController extends AbstractController } /** - * @api {post} api/dialog/okr/add 39. 创建OKR评论会话 + * @api {post} api/dialog/okr/add 42. 创建OKR评论会话 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1926,7 +1926,7 @@ class DialogController extends AbstractController } /** - * @api {post} api/dialog/okr/push 40. 推送OKR相关信息 + * @api {post} api/dialog/okr/push 43. 推送OKR相关信息 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index ff0e7866f..02c299a78 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -606,7 +606,29 @@ class FileController extends AbstractController } /** - * @api {get} api/file/content/office 10. 保存文件内容(office) + * @api {get} api/file/office/token 10. 获取token + * + * @apiDescription 需要token身份 + * @apiVersion 1.0.0 + * @apiGroup file + * @apiName office__token + * + * @apiParam {array} config + * + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function office__token() + { + User::auth(); + $config = Request::input('config'); + $token = \Firebase\JWT\JWT::encode($config, env('APP_KEY') ,'HS256'); + return Base::retSuccess('成功', $token); + } + + /** + * @api {get} api/file/content/office 11. 保存文件内容(office) * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -660,7 +682,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/content/upload 11. 保存文件内容(上传文件) + * @api {get} api/file/content/upload 12. 保存文件内容(上传文件) * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -684,7 +706,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/content/history 12. 获取内容历史 + * @api {get} api/file/content/history 13. 获取内容历史 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -716,7 +738,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/content/restore 13. 恢复文件历史 + * @api {get} api/file/content/restore 14. 恢复文件历史 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -756,7 +778,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/share 14. 获取共享信息 + * @api {get} api/file/share 15. 获取共享信息 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -792,7 +814,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/share/update 15. 设置共享 + * @api {get} api/file/share/update 16. 设置共享 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -882,7 +904,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/share/out 16. 退出共享 + * @api {get} api/file/share/out 17. 退出共享 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -916,7 +938,7 @@ class FileController extends AbstractController } /** - * @api {get} api/file/link 17. 获取链接 + * @api {get} api/file/link 18. 获取链接 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 9e11e4f69..bce63d019 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -1223,7 +1223,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/meeting/link 16. 【会议】获取分享链接 + * @api {get} api/users/meeting/link 17. 【会议】获取分享链接 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1252,7 +1252,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/meeting/tourist 16. 【会议】游客信息 + * @api {get} api/users/meeting/tourist 18. 【会议】游客信息 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1275,7 +1275,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/meeting/invitation 17. 【会议】发送邀请 + * @api {get} api/users/meeting/invitation 19. 【会议】发送邀请 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1322,7 +1322,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/email/send 18. 发送邮箱验证码 + * @api {get} api/users/email/send 20. 发送邮箱验证码 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1362,7 +1362,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/email/edit 19. 修改邮箱 + * @api {get} api/users/email/edit 21. 修改邮箱 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1407,7 +1407,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/delete/account 20. 删除帐号 + * @api {get} api/users/delete/account 22. 删除帐号 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1469,7 +1469,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/department/list 21. 部门列表(限管理员) + * @api {get} api/users/department/list 23. 部门列表(限管理员) * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1488,7 +1488,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/department/add 22. 新建、修改部门(限管理员) + * @api {get} api/users/department/add 24. 新建、修改部门(限管理员) * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1571,7 +1571,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/department/del 23. 删除部门(限管理员) + * @api {get} api/users/department/del 25. 删除部门(限管理员) * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1601,7 +1601,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/checkin/get 24. 获取签到设置 + * @api {get} api/users/checkin/get 26. 获取签到设置 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1622,7 +1622,7 @@ class UsersController extends AbstractController } /** - * @api {post} api/users/checkin/save 25. 保存签到设置 + * @api {post} api/users/checkin/save 27. 保存签到设置 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1670,7 +1670,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/checkin/list 26. 获取签到数据 + * @api {get} api/users/checkin/list 28. 获取签到数据 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1717,7 +1717,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/socket/status 27. 获取socket状态 + * @api {get} api/users/socket/status 29. 获取socket状态 * * @apiDescription 需要token身份 * @apiVersion 1.0.0 @@ -1740,7 +1740,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/key/client 28. 客户端KEY + * @api {get} api/users/key/client 30. 客户端KEY * * @apiDescription 获取客户端KEY,用于加密数据发送给服务端 * @apiVersion 1.0.0 @@ -1782,7 +1782,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/bot/info 29. 机器人信息 + * @api {get} api/users/bot/info 31. 机器人信息 * * @apiDescription 需要token身份,获取我的机器人信息 * @apiVersion 1.0.0 @@ -1833,7 +1833,7 @@ class UsersController extends AbstractController } /** - * @api {post} api/users/bot/edit 30. 编辑机器人 + * @api {post} api/users/bot/edit 32. 编辑机器人 * * @apiDescription 需要token身份,编辑 我的机器人 或 管理员修改系统机器人 信息 * @apiVersion 1.0.0 @@ -1919,7 +1919,7 @@ class UsersController extends AbstractController } /** - * @api {get} api/users/share/list 31. 获取分享列表 + * @api {get} api/users/share/list 33. 获取分享列表 * * @apiVersion 1.0.0 * @apiGroup users diff --git a/app/Module/Doo.php b/app/Module/Doo.php index fcf85b2a9..7e1c6f3f8 100644 --- a/app/Module/Doo.php +++ b/app/Module/Doo.php @@ -51,7 +51,7 @@ class Doo char* pgpEncrypt(char* plainText, char* publicKey); char* pgpDecrypt(char* cipherText, char* privateKey, char* passphrase); EOF, "/usr/lib/doo/doo.so"); - $token = $token ?: Base::headerOrInput('token'); + $token = $token ?: Base::headerOrInput('dootask-token') ?: Base::headerOrInput('token'); $language = $language ?: Base::headerOrInput('language'); self::$doo->initialize("/var/www", $token, $language); } diff --git a/composer.json b/composer.json index 3305967da..d7b40f62e 100644 --- a/composer.json +++ b/composer.json @@ -11,13 +11,14 @@ "php": "^8.0", "ext-curl": "*", "ext-gd": "*", + "ext-imagick": "*", "ext-json": "*", "ext-libxml": "*", "ext-openssl": "*", "ext-simplexml": "*", - "ext-imagick": "*", "directorytree/ldaprecord-laravel": "^2.7", "fideloper/proxy": "^4.4.1", + "firebase/php-jwt": "^6.9", "fruitcake/laravel-cors": "^2.0.4", "guanguans/notify": "^1.21.1", "guzzlehttp/guzzle": "^7.3.0", diff --git a/composer.lock b/composer.lock index 3bff81ff7..dbf88f4ee 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d09676319c2877afde501237e463d885", + "content-hash": "dc4de9c8ff8d12bf23759e7f9ca2e542", "packages": [ { "name": "asm89/stack-cors", @@ -829,6 +829,69 @@ }, "time": "2022-02-09T13:33:34+00:00" }, + { + "name": "firebase/php-jwt", + "version": "v6.9.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "f03270e63eaccf3019ef0f32849c497385774e11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f03270e63eaccf3019ef0f32849c497385774e11", + "reference": "f03270e63eaccf3019ef0f32849c497385774e11", + "shasum": "" + }, + "require": { + "php": "^7.4||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.9.0" + }, + "time": "2023-10-05T00:24:42+00:00" + }, { "name": "fruitcake/laravel-cors", "version": "v2.2.0", @@ -10631,8 +10694,10 @@ "php": "^8.0", "ext-curl": "*", "ext-gd": "*", + "ext-imagick": "*", "ext-json": "*", "ext-libxml": "*", + "ext-openssl": "*", "ext-simplexml": "*" }, "platform-dev": [], diff --git a/docker-compose.yml b/docker-compose.yml index 164d780ed..7b376935c 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -83,7 +83,7 @@ services: office: container_name: "dootask-office-${APP_ID}" - image: "onlyoffice/documentserver:7.3.2.8" + image: "onlyoffice/documentserver:7.5" volumes: - ./docker/office/logs:/var/log/onlyoffice - ./docker/office/data:/var/www/onlyoffice/Data @@ -95,7 +95,8 @@ services: - ./docker/office/resources/spreadsheeteditor/main/resources/css/app.css:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/main/resources/css/app.css - ./docker/office/resources/spreadsheeteditor/mobile/css/887.css:/var/www/onlyoffice/documentserver/web-apps/apps/spreadsheeteditor/mobile/css/887.css environment: - JWT_ENABLED: false + JWT_ENABLED: true + JWT_SECRET: ${APP_KEY} networks: extnetwork: ipv4_address: "${APP_IPPR}.6" diff --git a/resources/assets/js/components/OnlyOffice.vue b/resources/assets/js/components/OnlyOffice.vue index 7593d5b95..452355f95 100644 --- a/resources/assets/js/components/OnlyOffice.vue +++ b/resources/assets/js/components/OnlyOffice.vue @@ -241,7 +241,7 @@ export default { "forcesave": true, "help": false, }, - "callbackUrl": `http://nginx/api/file/content/office?id=${codeId}&token=${this.userToken}`, + "callbackUrl": `http://nginx/api/file/content/office?id=${codeId}&dootask-token=${this.userToken}`, }, "events": { "onDocumentReady": this.onDocumentReady, @@ -265,7 +265,15 @@ export default { } } this.$nextTick(() => { - this.docEditor = new DocsAPI.DocEditor(this.id, config); + this.$store.dispatch("call", { + url: 'file/office/token', + data: { config: config }, + }).then(({data}) => { + config.token = data + this.docEditor = new DocsAPI.DocEditor(this.id, config); + }).catch(({msg}) => { + $A.modalError({content: msg}); + }); }) })() },