From 322ecf19dad3057e56638552a10618e4e920e83b Mon Sep 17 00:00:00 2001 From: yuyuanshifu <747342561@qq.com> Date: Thu, 5 Nov 2020 17:21:30 +0800 Subject: [PATCH] cloudbrain user login --- custom/conf/app.ini.sample | 3 ++ docs/opendata对外接口文档.docx | Bin 16277 -> 16211 bytes models/attachment.go | 2 +- models/login_source.go | 42 +++++++++++++++++ models/user.go | 4 ++ modules/auth/cloudbrain/cloudbrain.go | 63 ++++++++++++++++++++++++++ modules/cloudbrain/cloudbrain.go | 0 modules/setting/setting.go | 6 +++ routers/repo/attachment.go | 3 ++ 9 files changed, 122 insertions(+), 1 deletion(-) mode change 100644 => 100755 models/login_source.go mode change 100644 => 100755 models/user.go create mode 100755 modules/auth/cloudbrain/cloudbrain.go mode change 100644 => 100755 modules/cloudbrain/cloudbrain.go diff --git a/custom/conf/app.ini.sample b/custom/conf/app.ini.sample index f166912aa..87027910e 100755 --- a/custom/conf/app.ini.sample +++ b/custom/conf/app.ini.sample @@ -1049,6 +1049,9 @@ RESULT_BACKEND = redis://localhost:6379 HOST = http://192.168.204.24 USERNAME = PASSWORD = +USER_CENTER_HOST = http://192.168.202.73:31441 +CLIENT_ID = 3Z377wcplxeE2qpycpjv +CLIENT_SECRET = J5ykfVl2kcxW0H9cawSL ; cloudbrain visit opendata USER = cW4cMtH24eoWPE7X PWD = 4BPmgvK2hb2Eywwyp4YZRY4B7yQf4DAC diff --git a/docs/opendata对外接口文档.docx b/docs/opendata对外接口文档.docx index 15619ffecee3c9eb73768546f0ae97d0061b3eb5..88229ff1216dc1345b1555f72fba7d11ff5aa305 100755 GIT binary patch delta 7428 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 delta 7465 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