diff --git a/integrations/jeesite/5.2.1/README.md b/integrations/jeesite/5.2.1/README.md new file mode 100644 index 00000000..8be95162 --- /dev/null +++ b/integrations/jeesite/5.2.1/README.md @@ -0,0 +1,13 @@ + +# JustAuth 源码地址 +https://github.com/justauth/JustAuth + +# 文档地址 + +https://justauth.wiki/guide/quickstart/how-to-use + +# 视频演示 + +https://b23.tv/8eZQCJD + +【jeesite+ruoyi+ruoyi-vue plus+maxkey+JustAuth+oauthor2统一认证统一门户演示-哔哩哔哩】 \ No newline at end of file diff --git a/integrations/jeesite/5.2.1/db/maxkey.erm b/integrations/jeesite/5.2.1/db/maxkey.erm new file mode 100644 index 00000000..543907da --- /dev/null +++ b/integrations/jeesite/5.2.1/db/maxkey.erm @@ -0,0 +1,3590 @@ + + + + true + 100 + A4 210 x 297 mm + 30 + 30 + 30 + 30 + + 0 + 1.0 + 0 + 0 + + 128 + 128 + 192 + + + 255 + 255 + 255 + + Segoe UI + 9 + + StandardSQL + false + + + 0 + true + 2 + 1 + 1 + false + true + false + false + + + db\maxkey.sql + UTF-8 + CR+LF + false + 7be191506f9daa8070b3ac14921dffd44063d2bb + null + + true + false + true + false + true + false + false + false + false + false + false + false + false + false + false + true + false + true + false + false + + + + + null + db\maxkey.xls + + + en + + true + true + true + + + + true + true + true + + + db\maxkey.png + + true + true + + + + + + + false + + + + + 0 + + + + false + false + + + + + false + + + + + + -1 + -1 + Microsoft YaHei UI + 9 + 50 + 50 + + 255 + 255 + 255 + + + + false + 2016-12-25 17:25:00 + + Project Name + + + + Model Name + + + + Version + + + + Company + + + + Author + + + + + + + + + 7be191506f9daa8070b3ac14921dffd44063d2bb + Default + + + + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + 64 + null + false + null + false + false + false + + false + 租户代码 + 租户代码 + corp_code + varchar(n) + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + 100 + null + false + null + false + false + false + + false + 租户名称 + 租户名称 + corp_name + nvarchar(n) + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + 64 + null + false + null + false + false + false + + false + + 创建者 + create_by + varchar(n) + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + null + null + false + null + false + false + false + + false + + 创建时间 + create_date + datetime + + + f01926071736b56b898949cc0720149c71504324 + null + null + false + null + false + false + false + + false + + 扩展 Date 1 + extend_d1 + datetime + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + null + null + false + null + false + false + false + + false + + 扩展 Date 2 + extend_d2 + datetime + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + null + null + false + null + false + false + false + + false + + 扩展 Date 3 + extend_d3 + datetime + + + c8d21e24bc69aac295703b0bae56269035b729f0 + null + null + false + null + false + false + false + + false + + 扩展 Date 4 + extend_d4 + datetime + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 1 + extend_f1 + decimal(p,s) + + + 2e958c528620621985af4394590198feed57cdf9 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 2 + extend_f2 + decimal(p,s) + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 3 + extend_f3 + decimal(p,s) + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 4 + extend_f4 + decimal(p,s) + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 1 + extend_i1 + decimal(p) + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 2 + extend_i2 + decimal(p) + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 3 + extend_i3 + decimal(p) + + + 53d8c730fcec69d341f44089817ae06eb4844278 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 4 + extend_i4 + decimal(p) + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 1000 + null + false + null + false + false + false + + false + + 扩展 JSON + extend_json + varchar(n) + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 500 + null + false + null + false + false + false + + false + + 扩展 String 1 + extend_s1 + nvarchar(n) + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 500 + null + false + null + false + false + false + + false + + 扩展 String 2 + extend_s2 + nvarchar(n) + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + 500 + null + false + null + false + false + false + + false + + 扩展 String 3 + extend_s3 + nvarchar(n) + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 500 + null + false + null + false + false + false + + false + + 扩展 String 4 + extend_s4 + nvarchar(n) + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 500 + null + false + null + false + false + false + + false + + 扩展 String 5 + extend_s5 + nvarchar(n) + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 500 + null + false + null + false + false + false + + false + + 扩展 String 6 + extend_s6 + nvarchar(n) + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 500 + null + false + null + false + false + false + + false + + 扩展 String 7 + extend_s7 + nvarchar(n) + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 500 + null + false + null + false + false + false + + false + + 扩展 String 8 + extend_s8 + nvarchar(n) + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 64 + null + false + null + false + false + false + + false + + 编号 + id + varchar(n) + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 64 + null + false + null + false + false + false + + false + + 父级编号 + parent_code + varchar(n) + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + 767 + null + false + null + false + false + false + + false + + 所有父级编号 + parent_codes + varchar(n) + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 500 + null + false + null + false + false + false + + false + + 备注信息 + remarks + nvarchar(n) + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 1 + null + false + null + false + false + false + + false + + 状态(0正常 1删除 2停用 3冻结 4审核 5驳回 9草稿) + status + character(n) + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + 1 + null + false + null + false + false + false + + false + + 状态(0正常 1删除 2停用) + status + character(n) + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 64 + null + false + null + false + false + false + + false + + 区域选择 + test_area_code + varchar(n) + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 100 + null + false + null + false + false + false + + false + + 区域名称 + test_area_name + nvarchar(n) + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 200 + null + false + null + false + false + false + + false + + 复选框 + test_checkbox + varchar(n) + + + d829e707316a49d39e5a11da5f5d36030a856b86 + 64 + null + false + null + false + false + false + + false + + 父表主键 + test_data_id + varchar(n) + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + null + null + false + null + false + false + false + + false + + 日期选择 + test_date + datetime + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + null + null + false + null + false + false + false + + false + + 日期时间 + test_datetime + datetime + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 200 + null + false + null + false + false + false + + false + + 单行文本 + test_input + varchar(n) + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 64 + null + false + null + false + false + false + + false + + 机构选择 + test_office_code + varchar(n) + + + 791691b791efedc2d14867a152b4de58f4567326 + 10 + null + false + null + false + false + false + + false + + 单选框 + test_radio + varchar(n) + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 10 + null + false + null + false + false + false + + false + + 下拉框 + test_select + varchar(n) + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 200 + null + false + null + false + false + false + + false + + 下拉多选 + test_select_multiple + varchar(n) + + + ae103dc1fb50094552e56afd72015481271913db + null + null + false + null + false + false + false + + false + + 排序号 + test_sort + integer + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 200 + null + false + null + false + false + false + + false + + 多行文本 + test_textarea + nvarchar(n) + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 64 + null + false + null + false + false + false + + false + + 用户选择 + test_user_code + varchar(n) + + + 70e9482ae432d16e734a730100e366ddab33564c + 64 + null + false + null + false + false + false + + false + + 节点编码 + tree_code + varchar(n) + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + 1 + null + false + null + false + false + false + + false + + 是否最末级 + tree_leaf + character(n) + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + 4 + null + false + null + false + false + false + + false + + 层次级别 + tree_level + decimal(p) + + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 200 + null + false + null + false + false + false + + false + + 节点名称 + tree_name + nvarchar(n) + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 767 + null + false + null + false + false + false + + false + + 全节点名 + tree_names + varchar(n) + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 10 + null + false + null + false + false + false + + false + + 排序号(升序) + tree_sort + decimal(p) + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 767 + null + false + null + false + false + false + + false + + 所有排序号 + tree_sorts + varchar(n) + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + 64 + null + false + null + false + false + false + + false + + 更新者 + update_by + varchar(n) + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + null + null + false + null + false + false + false + + false + + 更新时间 + update_date + datetime + + + + + + + e553474c37270813e70025e433a4cf8a64653e13 + 438 + 387 + Segoe UI + 9 + 864 + 36 + + 128 + 128 + 192 + + + + test_tree + 测试树表 + + + + + + + 70e9482ae432d16e734a730100e366ddab33564c + 7e417ee9d0dd69c767a5853922621946ed4fb2d8 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 39f501890586173d229e83610cfbfaa6e3a85374 + + + + + nvarchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + +
+ + 5435ef11ea53f170fe3491b199c113e47932e175 + 401 + 320 + Segoe UI + 9 + 36 + 36 + + 128 + 128 + 192 + + + + test_data + 测试数据 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + d82778c36626013cd39fd790da6f55a9762f0c76 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 3e14b40dc07c134329a40752973acfad2ffdc48b + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 8050d948828b16267482e9e3716219321f206b81 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 3664605e054c39531ca8e91aa4463c955a993357 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + f7b189ecdc92c78bfaae9c736318ab6a5aedd396 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 6e4837ab55b592669ccc7ebfc8b1ed96a00607b3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 9fb81bdc12ed017f62e9dd4529025e536eff7f08 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 9d9478798ed2766a81b0e5a8a022eb89d9c5cc34 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + c131dc5cb7ce6f1aa5e8d5f86f2002c8ae1bb8f6 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + cfe3c330968a9a824c2cf933b227887d3e9615ac + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 23041cb30875514136904ea11043c7ea1924f048 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + b6d5dc8745c0fa484ed6f14e90a42282ca1b285d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + d244401ff7302bb5b75092016531952d093b238b + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + +
+ + 5a836e654b7b7d19f102e87336fefa079d98a2e6 + 438 + 346 + Segoe UI + 9 + 468 + 36 + + 128 + 128 + 192 + + + + test_data_child + 测试数据子表 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 34477707bcf8a7810e12e9565aff085f6fb1e0ad + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ae103dc1fb50094552e56afd72015481271913db + ec8a047dffe3cf2e4d95ba3e26c3bac0382d95c9 + + + + + integer + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + d829e707316a49d39e5a11da5f5d36030a856b86 + b095c44611ed08156277676d9a3a0ce52b9b05ef + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 78715aa66a10a9b190ad69b8ed792e9a2f4946e3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 693f8af2fe6cf45255b6f2bc7e9077f3630c3dd8 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 04216c384533b70b8e86b571fa2beef7157bab5a + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 0b6f63094be90aa8674460cce26be10327827ceb + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 363e8cfcf4a6b228e656decadacba29280906555 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 7875aa5fee3d6f9587180fb8fce9343a56cdc34e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 61c49a2f7807c55c8f85110c30889d5b403e4b04 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + b91171b99f3628aadb0e6986fbfa30cc547b280e + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 9f33d190101e56f93f5ece0fd7c5cdda3e704b4c + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 16121b5aa08fc170883408ec2d0487281a132d9d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 1afc7f146271f5c90ea811aa24c08ce25d12552e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 343f0db997b913f299b0496c4306d3617ad708de + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + +
+
+ + + 845c82ebd869d5620b1ef2c2b6f438b11a045082 + BaseEntity + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 02ecedc0de5850cba25bc91919ed39d414b74111 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 2fe6a36385238c1b21c76deae00a7afa00ff5538 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + ea920cba2fe0eaee64a2310ece7cda4b198b37ec + BaseEntityCorp + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + b8ea4b73d6d32a222e5abfd453287575ae518480 + + + + + varchar(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + b94f5fe344185c40739cf93d1090686001bb11e0 + + + + + nvarchar(n) + + JeeSite + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + DataEntity + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + f0036584bd8711715579d21994a0105935605a7e + + + + + character(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + c391a15752a8eb58bc558a39d1b431f7ee125e0e + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + e2e82ba86e15fd67397355e711255b1625078ae1 + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + fd0546fc2d4e01c35dcbc23913add68a99fabd73 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + f8ea4fc4a778a0b94398a661a1ed8608f0e8d28d + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 69e01b6d4f42df40a09540ef4ba10ed8e006abaa + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 85024a2953cf3e3c9c1cce49b2351853ab0d125b + DataEntityNoStatus + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + e5355faba5ec3c9128507dd4c48ea9230631cf83 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + 6bed374c39d181003a4f92d76d79a4119176ba0c + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + f9db19bb567760bbdd554d75bbfdc891c89f9da9 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + ee78b079f7d319bf8119fd01439cd97424ff49fa + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + f7b88ecec0ef386bb384c228842a7587432112fb + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 118dab95fc1f792cd468b9f66af2d4fabd98c39b + ExtendEntity + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 6ccadddab6ce48441ca7abd798cda6f3debf4a0c + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 93ab0ba3b47b01934614dbd3e572358c9f99e6ea + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + a78c7961910a5e697027d1a3530b1afaa8ea8c94 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 40085364ec7a58653e96f8659aadd258d7556bc7 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 9787d7fe93ee31c5b4979fd620ff6e4b2777eccf + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 95c55b81b7e9e1a9bb01aa3d88fb90c648641c4e + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 16f44dfc7964796f109293bc49afd58dcb4eec1f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 39b1dffa083f74afc30df621845cf7f0ed71394f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 7584cc6360ae7edc99e1f619042eba5865b2c4c7 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + f0b5383e05c6b3f6e5f65b33b33009826c83d014 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 260d5f31009fff18000d1e64f4f877926e621306 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 53d8c730fcec69d341f44089817ae06eb4844278 + a83144f40e7ae64e46a4b4ed651379774a953b17 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 2a5203a275171a250870cf6cb224a910aa9354ec + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2e958c528620621985af4394590198feed57cdf9 + 3ef5bd65a7dcd74b9a9d8a292ec395f66b7de32b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 01d0849bdda56a8d8f24befdadc3fc9b007ae92b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 1c8ed63d72f40f0fe2f05815675771bdf3f824f8 + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f01926071736b56b898949cc0720149c71504324 + 2b49e875138bfb329aaa352629650b7881435123 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + 5c6ec16226d85b0411b7077cb9a6e0c7aa8d74d1 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + d92b8f7fa7a2be49c7f00c447a603b136e84261d + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c8d21e24bc69aac295703b0bae56269035b729f0 + 095a76f07a3cd2bdc6cc442757c11012e1974f4a + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 42c5d8f490f69b93e77698efa030ca23988ae696 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + TreeEntity + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 394369b90c0a5b6efeed3cf823c642605d7a1653 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + e8d877396943acfec73023dba2c1c6e3d7802d62 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 23f973124aedd0244533f4e7b3b103c548b966be + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 984d5eac2b3221118a61655e4a5a49c78e0f0151 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + b2f246a3f0ade317eaa9915e2fd539abae5a5ec8 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + f5a9968479420f08da2e98d21136b3ed4b6e396f + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 618194ebfc8c6c42efcef3a4af0b8054f6af209b + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/integrations/jeesite/5.2.1/doc/统一认证+单点登录+OAuthor2协议演示.docx b/integrations/jeesite/5.2.1/doc/统一认证+单点登录+OAuthor2协议演示.docx new file mode 100644 index 00000000..38453bf8 Binary files /dev/null and b/integrations/jeesite/5.2.1/doc/统一认证+单点登录+OAuthor2协议演示.docx differ diff --git a/integrations/jeesite/5.2.1/pom.xml b/integrations/jeesite/5.2.1/pom.xml new file mode 100644 index 00000000..6656ae21 --- /dev/null +++ b/integrations/jeesite/5.2.1/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + + com.jeesite + jeesite-parent + 5.2.1-SNAPSHOT + ../../parent/pom.xml + + + jeesite-module-maxkey + jar + + JeeSite Module maxkey + http://jeesite.com + 2013-Now + + + + + com.jeesite + jeesite-module-core + ${project.parent.version} + + + + + me.zhyd.oauth + JustAuth + 1.16.5 + + + + + + + thinkgem + WangZhen + thinkgem at 163.com + Project lead + +8 + + + + + JeeSite + http://jeesite.com + + + \ No newline at end of file diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/AuthCustomSource.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/AuthCustomSource.java new file mode 100644 index 00000000..625f9bdf --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/AuthCustomSource.java @@ -0,0 +1,60 @@ +package com.jeesite.modules.maxkey.base; + +import com.jeesite.modules.maxkey.oauth.realm.request.AuthMaxKeyJeeGitRequest; + +import me.zhyd.oauth.config.AuthSource; +import me.zhyd.oauth.request.AuthDefaultRequest; + +/** + * Oauth2 默认接口说明 + * + * @author 长春叭哥 2023年02月23日 + * + */ +public enum AuthCustomSource implements AuthSource { + + /** + * 自己搭建的gitlab私服 + */ + MAXKEY { + /** + * 授权的api + * + * @return url + */ + @Override + public String authorize() { + return AuthMaxKeyJeeGitRequest.BASE_HOST + "/sign/authz/oauth/v20/authorize"; + } + + /** + * 获取accessToken的api + * + * @return url + */ + @Override + public String accessToken() { + return AuthMaxKeyJeeGitRequest.BASE_HOST + "/sign/authz/oauth/v20/token"; + } + + /** + * 获取用户信息的api + * + * @return url + */ + @Override + public String userInfo() { + return AuthMaxKeyJeeGitRequest.BASE_HOST + "/sign/api/oauth/v20/me"; + } + + /** + * 平台对应的 AuthRequest 实现类,必须继承自 {@link AuthDefaultRequest} + * + * @return class + */ + @Override + public Class getTargetClass() { + return AuthMaxKeyJeeGitRequest.class; + } + } +} \ No newline at end of file diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/IBaseJustOauth2Controller.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/IBaseJustOauth2Controller.java new file mode 100644 index 00000000..4a6eca2a --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/IBaseJustOauth2Controller.java @@ -0,0 +1,64 @@ +package com.jeesite.modules.maxkey.base; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import me.zhyd.oauth.model.AuthCallback; + + +/** + * 第三方授权登录 商业级版本功能实现咨询QQJeeSite彩虹:1766571055 + * @author 长春叭哥 + * @version 2020-02-23 + */ +public interface IBaseJustOauth2Controller { + + /** + * Oauth2 登录 + * @param source + * @param request + * @return + */ + public String login(@PathVariable("source") String source, HttpServletRequest request); + + /** + * 回调地址 + * @param source + * @param callback + * @param redirectAttributes + * @param model + * @param request + * @param response + * @return + */ + public String callback(@PathVariable("source") String source, AuthCallback callback, RedirectAttributes redirectAttributes, Model model, HttpServletRequest request, HttpServletResponse response); + + /** + * 绑定用户 + * @param id + * @param username + * @param password + * @param validCode + * @param request + * @param response + * @return + */ + public String binder(String id, String username, String password, String validCode, HttpServletRequest request, HttpServletResponse response); + + /** + * 解绑用户 + * @param id + * @param request + * @param response + * @return + */ + public String unbind(String id, HttpServletRequest request, HttpServletResponse response) ; + +} diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/JustAuthPlatformInfo.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/JustAuthPlatformInfo.java new file mode 100644 index 00000000..f3767d13 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/base/JustAuthPlatformInfo.java @@ -0,0 +1,118 @@ +package com.jeesite.modules.maxkey.base; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * + * @author 长春叭哥 + * @version 2023-02-23 + */ +public enum JustAuthPlatformInfo { + + /** + * 平台 + */ + GITEE("Gitee", "", "", "v1.0.1", false), + BAIDU("百度", "", "", "v1.0.1", false), + CODING("coding", "", "", "v1.0.1", false), + CSDN("CSDN", "", "", "v1.0.1", false), + DINGTALK("钉钉扫码登录", "", "", "v1.0.1", false), + GITHUB("Github", "", "", "v1.0.1", false), + OSCHINA("开源中国", "", "", "v1.0.1", false), + ALIPAY("支付宝", "", "", "v1.0.1", false), + WEIBO("微博", "", "", "v1.0.1", false), + + DOUYIN("抖音", "", "", "v1.4.0", false), + ELEME("饿了么", "", "", "v1.12.0", false), + FACEBOOK("Facebook", "", "", "v1.3.0", false), + GITLAB("Gitlab", "", "", "v1.11.0", false), + GOOGLE("Google", "", "", "v1.3.0", false), + HUAWEI("华为", "", "", "v1.10.0", false), + JD("京东", "", "", "v1.15.1", false), + KUJIALE("酷家乐", "", "", "v1.11.0", false), + LINKEDIN("领英", "", "", "v1.4.0", false), + MEITUAN("美团", "", "", "v1.12.0", false), + MICROSOFT("微软", "", "", "v1.5.0", false), + MI("小米", "", "", "v1.5.0", false), + PINTEREST("Pinterest", "", "", "v1.9.0", false), + QQ("QQ", "", "", "v1.1.0", false), + RENREN("人人", "", "", "v1.9.0", false), + STACK_OVERFLOW("Stack Overflow", "", "", "v1.9.0", false), + TAOBAO("淘宝", "", "", "v1.2.0", false), + TEAMBITION("Teambition", "", "", "v1.9.0", false), + WECHAT_ENTERPRISE("企业微信二维码登录", "", "", "v1.10.0", false), + WECHAT_MP("微信公众平台", "", "", "v1.14.0", false), + WECHAT_OPEN("微信开放平台", "", "", "v1.1.0", false), + TOUTIAO("今日头条", "", "", "v1.6.0-beta", false), + TWITTER("推特", "", "", "v1.13.0", false), + ALIYUN("阿里云", "", "", "v1.15.5", false), + MYGITLAB("自定义的Gitlab", "", "", "v1.13.0", false), + XMLY("喜马拉雅", "", "", "v1.15.9", false), + WECHAT_ENTERPRISE_WEB("企业微信网页登录", "", "", "v1.15.9", false), + FEISHU("飞书", "", "", "1.15.9", false), + AMAZON("Amazon", "", "", "1.16.0", true), + DINGTALK_ACCOUNT("钉钉账号登录", "", "", "v1.16.0", true), + SLACK("slack 登录", "", "", "v1.16.0", true), + LINE("line 登录", "", "", "v1.16.0", true), + okta("Okta 登录", "", "", "v1.16.0", true), + proginn("程序员客栈", "", "", "v1.16.2", true), + ; + + // 平台名 + private final String name; + // 帮助文档 + private final String readme; + // 官网api文档 + private final String apiDoc; + // 集成该平台的 版本 + private final String since; + private final boolean latest; + + JustAuthPlatformInfo(String name, String readme, String apiDoc, String since, boolean latest) { + this.name = name; + this.readme = readme; + this.apiDoc = apiDoc; + this.since = since; + this.latest = latest; + } + + public static List> getPlatformInfos() { + List> list = new LinkedList<>(); + Map map = null; + JustAuthPlatformInfo[] justAuthPlatformInfos = JustAuthPlatformInfo.values(); + for (JustAuthPlatformInfo justAuthPlatformInfo : justAuthPlatformInfos) { + map = new HashMap<>(); + map.put("name", justAuthPlatformInfo.getName()); + map.put("readme", justAuthPlatformInfo.getReadme()); + map.put("apiDoc", justAuthPlatformInfo.getApiDoc()); + map.put("since", justAuthPlatformInfo.getSince()); + map.put("enname", justAuthPlatformInfo.name().toLowerCase()); + map.put("isLatest", justAuthPlatformInfo.isLatest()); + list.add(map); + } + return list; + } + + public String getName() { + return name; + } + + public String getReadme() { + return readme; + } + + public String getApiDoc() { + return apiDoc; + } + + public String getSince() { + return since; + } + + public boolean isLatest() { + return latest; + } +} \ No newline at end of file diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/oauth/realm/request/AuthMaxKeyJeeGitRequest.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/oauth/realm/request/AuthMaxKeyJeeGitRequest.java new file mode 100644 index 00000000..b6607e96 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/oauth/realm/request/AuthMaxKeyJeeGitRequest.java @@ -0,0 +1,55 @@ +package com.jeesite.modules.maxkey.oauth.realm.request; + +import com.alibaba.fastjson.JSONObject; +import com.jeesite.common.config.Global; +import com.jeesite.common.mapper.JsonMapper; +import com.jeesite.modules.maxkey.base.AuthCustomSource; +import com.jeesite.modules.maxkey.utils.AuthCustomExceptionUtils; + +import me.zhyd.oauth.cache.AuthStateCache; +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.config.AuthSource; +import me.zhyd.oauth.model.AuthCallback; +import me.zhyd.oauth.model.AuthToken; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.request.AuthDefaultRequest; + +public class AuthMaxKeyJeeGitRequest extends AuthDefaultRequest { + + public static final String BASE_HOST = Global.getProperty("oauth2.maxkey.serverUrl"); + + /** + * 设定归属域 + * + * @param config + */ + public AuthMaxKeyJeeGitRequest(AuthConfig config) { + super(config, AuthCustomSource.MAXKEY); + } + + public AuthMaxKeyJeeGitRequest(AuthConfig config, AuthSource source) { + super(config, source); + } + + public AuthMaxKeyJeeGitRequest(AuthConfig config, AuthStateCache authStateCache) { + super(config, AuthCustomSource.MAXKEY, authStateCache); + } + + @Override + protected AuthToken getAccessToken(AuthCallback authCallback) { + String body = doPostAuthorizationCode(authCallback.getCode()); + JSONObject object = JSONObject.parseObject(body); + System.out.println("getAccessToken:"+JsonMapper.toJson(object)); + AuthCustomExceptionUtils.checkResponse(object); + return AuthToken.builder().accessToken(object.getString("access_token")).refreshToken(object.getString("refresh_token")).idToken(object.getString("id_token")).tokenType(object.getString("token_type")).scope(object.getString("scope")).build(); + } + + @Override + protected AuthUser getUserInfo(AuthToken authToken) { + String body = doGetUserInfo(authToken); + JSONObject object = JSONObject.parseObject(body); + AuthCustomExceptionUtils.checkResponse(object); + return AuthUser.builder().uuid(object.getString("id")).username(object.getString("username")).nickname(object.getString("name")).avatar(object.getString("avatar_url")).blog(object.getString("web_url")).company(object.getString("organization")).location(object.getString("location")).email(object.getString("email")).remark(object.getString("bio")).token(authToken).source(source.toString()).build(); + } + +} diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/AuthCustomExceptionUtils.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/AuthCustomExceptionUtils.java new file mode 100644 index 00000000..1f857f17 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/AuthCustomExceptionUtils.java @@ -0,0 +1,19 @@ +package com.jeesite.modules.maxkey.utils; + +import com.alibaba.fastjson.JSONObject; + +import me.zhyd.oauth.exception.AuthException; + +public class AuthCustomExceptionUtils { + + public static void checkResponse(JSONObject object) { + // oauth/token 验证异常 + if (object.containsKey("error")) { + throw new AuthException(object.getString("error_description")); + } + // user 验证异常 + if (object.containsKey("message")) { + throw new AuthException(object.getString("message")); + } + } +} diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/Oauth2UserLoginUtils.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/Oauth2UserLoginUtils.java new file mode 100644 index 00000000..22d207a0 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/utils/Oauth2UserLoginUtils.java @@ -0,0 +1,404 @@ +package com.jeesite.modules.maxkey.utils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.xkcoding.http.config.HttpConfig; + +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.enums.scope.*; +import me.zhyd.oauth.exception.AuthException; + +import me.zhyd.oauth.request.*; +import me.zhyd.oauth.utils.AuthScopeUtils; + + +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.util.Arrays; + + + +import org.apache.shiro.authc.AuthenticationException; + +import com.jeesite.common.config.Global; +import com.jeesite.common.shiro.authc.FormToken; +import com.jeesite.common.shiro.filter.FormFilter; +import com.jeesite.common.web.http.ServletUtils; +import com.jeesite.modules.maxkey.oauth.realm.request.AuthMaxKeyJeeGitRequest; +import com.jeesite.modules.sys.utils.UserUtils; + +public class Oauth2UserLoginUtils{ + + private static final Boolean DEMO_MODE=true; + private static final String DEFAULT_USER_CODE="system"; + + public static String getAuthUserToSysUserCode(String oauthUserId) { + //自行实现第三方用户到jeesite用户之间逻辑转换关系 + if(DEMO_MODE) { + return DEFAULT_USER_CODE; + } + return oauthUserId; + } + + public static void loginByOauthUserId(String oauthUserId) { + + HttpServletRequest request = ServletUtils.getRequest(); + HttpServletResponse response = ServletUtils.getResponse(); + try { + // FormToken 构造方法的三个参数:登录名、是否内部登录无条件、请求对象 + UserUtils.getSubject().login(new FormToken(getAuthUserToSysUserCode(oauthUserId), true, request)); + System.out.println("登录成功,__sid=" + UserUtils.getSession().getId()); + FormFilter.onLoginSuccess(request, response); + } catch (AuthenticationException e) { + FormFilter.onLoginFailure(e, request, response); + } + + } + + + /** + * 根据具体的授权来源,获取授权请求工具类 + * + * @param source + * @return + */ + @SuppressWarnings("deprecation") + public static AuthRequest getAuthRequest(String source) { + AuthRequest authRequest = null; + switch (source.toLowerCase()) { + case "maxkey": + + +// jeegit: +// clientId: 823874316692094976 +// clientSecret: t74BMTcwMjIwMjMwODIzNTA4NDQFLu +// serverUrl: http://sso.maxkey.top +// redirectUri: http://localhost:8980/js/oauth2/callback/jeegit +// className: com.jeesite.modules.oauth2.request.AuthMaxKeyRequest + authRequest = new AuthMaxKeyJeeGitRequest(AuthConfig.builder() + .clientId(Global.getProperty("oauth2." + source + ".clientId")) + .clientSecret(Global.getProperty("oauth2." + source + ".clientSecret")) + .redirectUri(Global.getProperty("oauth2." + source + ".redirectUri")) + .build()); + break; + case "dingtalk": + authRequest = new AuthDingTalkRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/dingtalk") + .build()); + break; + case "baidu": + authRequest = new AuthBaiduRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/baidu") + .scopes(Arrays.asList( + AuthBaiduScope.BASIC.getScope(), + AuthBaiduScope.SUPER_MSG.getScope(), + AuthBaiduScope.NETDISK.getScope() + )) +// .clientId("") +// .clientSecret("") +// .redirectUri("http://localhost:9001/oauth/baidu/callback") + .build()); + break; + case "github": + authRequest = new AuthGithubRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/github") + .scopes(AuthScopeUtils.getScopes(AuthGithubScope.values())) + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); + break; + case "gitee": + authRequest = new AuthGiteeRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://127.0.0.1:8443/oauth/callback/gitee") + .scopes(AuthScopeUtils.getScopes(AuthGiteeScope.values())) + .build()); + break; + case "weibo": + authRequest = new AuthWeiboRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/weibo") + .scopes(Arrays.asList( + AuthWeiboScope.EMAIL.getScope(), + AuthWeiboScope.FRIENDSHIPS_GROUPS_READ.getScope(), + AuthWeiboScope.STATUSES_TO_ME_READ.getScope() + )) + .build()); + break; + case "coding": + authRequest = new AuthCodingRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/coding") + .domainPrefix("") + .scopes(Arrays.asList( + AuthCodingScope.USER.getScope(), + AuthCodingScope.USER_EMAIL.getScope(), + AuthCodingScope.USER_PHONE.getScope() + )) + .build()); + break; + case "oschina": + authRequest = new AuthOschinaRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/oschina") + .build()); + break; + case "alipay": + // 支付宝在创建回调地址时,不允许使用localhost或者127.0.0.1,所以这儿的回调地址使用的局域网内的ip + authRequest = new AuthAlipayRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .alipayPublicKey("") + .redirectUri("https://www.zhyd.me/oauth/callback/alipay") + .build()); + break; + case "qq": + authRequest = new AuthQqRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/qq") + .build()); + break; + case "wechat_open": + authRequest = new AuthWeChatOpenRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://www.zhyd.me/oauth/callback/wechat") + .build()); + break; + case "csdn": + authRequest = new AuthCsdnRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/csdn") + .build()); + break; + case "taobao": + authRequest = new AuthTaobaoRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/taobao") + .build()); + break; + case "google": + authRequest = new AuthGoogleRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/google") + .scopes(AuthScopeUtils.getScopes(AuthGoogleScope.USER_EMAIL, AuthGoogleScope.USER_PROFILE, AuthGoogleScope.USER_OPENID)) + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); + break; + case "facebook": + authRequest = new AuthFacebookRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("https://justauth.cn/oauth/callback/facebook") + .scopes(AuthScopeUtils.getScopes(AuthFacebookScope.values())) + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); + break; + case "douyin": + authRequest = new AuthDouyinRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/douyin") + .build()); + break; + case "linkedin": + authRequest = new AuthLinkedinRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/linkedin") + .scopes(null) + .build()); + break; + case "microsoft": + authRequest = new AuthMicrosoftRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/microsoft") + .scopes(Arrays.asList( + AuthMicrosoftScope.USER_READ.getScope(), + AuthMicrosoftScope.USER_READWRITE.getScope(), + AuthMicrosoftScope.USER_READBASIC_ALL.getScope(), + AuthMicrosoftScope.USER_READ_ALL.getScope(), + AuthMicrosoftScope.USER_READWRITE_ALL.getScope(), + AuthMicrosoftScope.USER_INVITE_ALL.getScope(), + AuthMicrosoftScope.USER_EXPORT_ALL.getScope(), + AuthMicrosoftScope.USER_MANAGEIDENTITIES_ALL.getScope(), + AuthMicrosoftScope.FILES_READ.getScope() + )) + .build()); + break; + case "mi": + authRequest = new AuthMiRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/mi") + .build()); + break; + case "toutiao": + authRequest = new AuthToutiaoRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/toutiao") + .build()); + break; + case "teambition": + authRequest = new AuthTeambitionRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://127.0.0.1:8443/oauth/callback/teambition") + .build()); + break; + case "pinterest": + authRequest = new AuthPinterestRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("https://eadmin.innodev.com.cn/oauth/callback/pinterest") + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); + break; + case "renren": + authRequest = new AuthRenrenRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://127.0.0.1:8443/oauth/callback/teambition") + .build()); + break; + case "stack_overflow": + authRequest = new AuthStackOverflowRequest(AuthConfig.builder() + .clientId("") + .clientSecret("((") + .redirectUri("http://localhost:8443/oauth/callback/stack_overflow") + .stackOverflowKey("") + .build()); + break; + case "huawei": + authRequest = new AuthHuaweiRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://127.0.0.1:8443/oauth/callback/huawei") + .scopes(Arrays.asList( + AuthHuaweiScope.BASE_PROFILE.getScope(), + AuthHuaweiScope.MOBILE_NUMBER.getScope(), + AuthHuaweiScope.ACCOUNTLIST.getScope(), + AuthHuaweiScope.SCOPE_DRIVE_FILE.getScope(), + AuthHuaweiScope.SCOPE_DRIVE_APPDATA.getScope() + )) + .build()); + break; + case "wechat_enterprise": + authRequest = new AuthWeChatEnterpriseQrcodeRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://justauth.cn/oauth/callback/wechat_enterprise") + .agentId("1000003") + .build()); + break; + case "kujiale": + authRequest = new AuthKujialeRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/kujiale") + .build()); + break; + case "gitlab": + authRequest = new AuthGitlabRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/gitlab") + .scopes(AuthScopeUtils.getScopes(AuthGitlabScope.values())) + .build()); + break; + case "meituan": + authRequest = new AuthMeituanRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/meituan") + .build()); + break; + case "eleme": + authRequest = new AuthElemeRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://dblog-web.zhyd.me/oauth/callback/eleme") + .build()); + break; + case "twitter": + authRequest = new AuthTwitterRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("https://threelogin.31huiyi.com/oauth/callback/twitter") + // 针对国外平台配置代理 + .httpConfig(HttpConfig.builder() + .timeout(15000) + .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080))) + .build()) + .build()); + break; + case "wechat_mp": + authRequest = new AuthWeChatMpRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("") + .build()); + break; + case "aliyun": + authRequest = new AuthAliyunRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/aliyun") + .build()); + break; + case "xmly": + authRequest = new AuthXmlyRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/xmly") + .build()); + break; + case "feishu": + authRequest = new AuthFeishuRequest(AuthConfig.builder() + .clientId("") + .clientSecret("") + .redirectUri("http://localhost:8443/oauth/callback/feishu") + .build()); + break; + default: + break; + } + if (null == authRequest) { + throw new AuthException("未获取到有效的Auth配置"); + } + return authRequest; + } + +} diff --git a/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/web/JustOauth2Controller.java b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/web/JustOauth2Controller.java new file mode 100644 index 00000000..fe708a09 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/java/com/jeesite/modules/maxkey/web/JustOauth2Controller.java @@ -0,0 +1,82 @@ +package com.jeesite.modules.maxkey.web; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import com.jeesite.common.config.Global; +import com.jeesite.common.mapper.JsonMapper; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.maxkey.base.IBaseJustOauth2Controller; +import com.jeesite.modules.maxkey.utils.Oauth2UserLoginUtils; + +import me.zhyd.oauth.model.AuthCallback; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.request.AuthRequest; +import me.zhyd.oauth.utils.AuthStateUtils; + +/** + * 推荐参考案例https://github.com/justauth/JustAuth-demo/blob/master/src/main/java/me/zhyd/justauth/RestAuthController.java + * JustAuth 控制层 + * + * @author 长春叭哥 + * @version 2023-02-23 + */ +@Controller +@RequestMapping({ "/oauth2" }) +public class JustOauth2Controller extends BaseController implements IBaseJustOauth2Controller { + + @Override + @RequestMapping({"/login/{source}"}) + public String login(String source, HttpServletRequest request) { + // TODO Auto-generated method stub + logger.debug(source); + return "redirect:" + Oauth2UserLoginUtils.getAuthRequest(source).authorize((request.getParameter("state") == null ? AuthStateUtils.createState() : request.getParameter("state"))); + } + + @Override + @RequestMapping({"/callback/{source}"}) + public String callback(String source, AuthCallback callback, RedirectAttributes redirectAttributes, Model model, HttpServletRequest request, HttpServletResponse response) { + // TODO Auto-generated method stub + logger.debug(source); + + AuthRequest authRequest = Oauth2UserLoginUtils.getAuthRequest(source); + AuthResponse rauthResponse = authRequest.login(callback); + if(rauthResponse.getData() instanceof AuthUser) { + AuthUser authUser = (AuthUser) rauthResponse.getData(); + //处理相关的绑定业务,该处仅做简单集成与演示专用。 + logger.debug("authUser:"+JsonMapper.toJson(authUser)); + Oauth2UserLoginUtils.loginByOauthUserId(authUser.getUsername()); + return renderResult(Global.TRUE, text("回调信息获取成功!")); + } else { + return null; + } + + } + + @Override + @PostMapping({"/binder"}) + @ResponseBody + public String binder(String id, String username, String password, String validCode, HttpServletRequest request, HttpServletResponse response) { + // TODO Auto-generated method stub + logger.debug(id, username); + return null; + } + + @Override + @RequestMapping({"/unbind"}) + @ResponseBody + public String unbind(String id, HttpServletRequest request, HttpServletResponse response) { + // TODO Auto-generated method stub + logger.debug(id); + return null; + } + +} diff --git a/integrations/jeesite/5.2.1/src/main/resources/config/jeesite-maxkey.yml b/integrations/jeesite/5.2.1/src/main/resources/config/jeesite-maxkey.yml new file mode 100644 index 00000000..b01a7ef2 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/resources/config/jeesite-maxkey.yml @@ -0,0 +1,59 @@ +# 温馨提示:不建议直接修改此文件,为了平台升级方便,建议将需要修改的参数值,复制到application.yml里进行覆盖该参数值。 + +#maxkey: +# enabled: true + + + +oauth2: + # 码云 + maxkey: + clientId: 821060415982141440 + clientSecret: MrjGMDkwMjIwMjMxNTE0MzkxODAv5o + serverUrl: http://sso.maxkey.top + redirectUri: http://localhost:8981/js/oauth2/callback/maxkey + className: com.jeesite.modules.maxkey.oauth.realm.request.AuthMaxKeyJeeGitRequest + gitee: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/gitee + # 腾讯QQ + qq: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/qq + unionid: xxxxxx + + # 微信开放平台 + weixin: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/weixin + + # 微信公众平台 + weixin_mp: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/weixin_mp + + # 企业微信 + weixin_qy: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/weixin_qy + agentId: xxxxxx + # 钉钉 + ding_talk: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/ding_talk + # Github + github: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/github + # 百度 + baidu: + clientId: xxxxxx + clientSecret: xxxxxx + redirectUri: http://127.0.0.1:8980/js/oauth2/callback/baidu \ No newline at end of file diff --git a/integrations/jeesite/5.2.1/src/main/resources/db/upgrade/maxkey/versions b/integrations/jeesite/5.2.1/src/main/resources/db/upgrade/maxkey/versions new file mode 100644 index 00000000..80444066 --- /dev/null +++ b/integrations/jeesite/5.2.1/src/main/resources/db/upgrade/maxkey/versions @@ -0,0 +1 @@ +5.2.1 \ No newline at end of file