From 3b60f3065885daa47d3236142e43ae20acb25c5d Mon Sep 17 00:00:00 2001 From: lian Date: Mon, 20 Apr 2020 16:52:50 +0800 Subject: [PATCH] weixin oauth login (#4538) Co-authored-by: lian --- media/img/weixin.png | Bin 0 -> 1343 bytes seahub/base/context_processors.py | 2 + seahub/oauth/backends.py | 7 ++ seahub/settings.py | 5 +- seahub/templates/choose_register.html | 4 + seahub/templates/registration/login.html | 9 ++ seahub/urls.py | 1 + seahub/views/__init__.py | 3 + seahub/weixin/__init__.py | 0 seahub/weixin/settings.py | 19 ++++ seahub/weixin/urls.py | 10 ++ seahub/weixin/views.py | 138 +++++++++++++++++++++++ 12 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 media/img/weixin.png create mode 100644 seahub/weixin/__init__.py create mode 100644 seahub/weixin/settings.py create mode 100644 seahub/weixin/urls.py create mode 100644 seahub/weixin/views.py diff --git a/media/img/weixin.png b/media/img/weixin.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc0128d68ac08ec0d74368133cad9c9eed4a50f GIT binary patch literal 1343 zcmV-F1;F}=P)JNRA}D4 zTT5=-Fbwq=hM}bq6oHmbQ3O7QnnmDac#2v07_u=ieC#$&rv8x@pFZWXX$<;=*?1=+Tpd6^QZ`=xa4iCfGr@iWKE z>=xsJ+sqQFVBCI|$x|X+ROibq7Za5aYmu`qhj8aX46HF=aSS#yDpdjl17_A9!1pAE zkQt+x{UnJYK4gp-a!?BO#&!5l`2(Nli~!tIl|vLhRXGUvMCCArPgD-XWmOJUnB}q# z2A(1Zog-tk5rAz9*KyCEiUCZyPe%c^(GtAVeN80bDuwGPD#xS0T^-n{aKNrU zQ^{hlfZNPc<~_x_?y{wG`!8y=AMky}Z?pB8)D|5{3cLFCam%tw7}u8kT-_>#3|lT( zAulZXpEfCS3p@(5=STtHGq=V{z_*eOJGHIx^y+690WB^paIvMdT7_gO09Jg8Z@2Hr znj=2It3nO} z>kS2-9M7E*Z3jk7W4--puFtwM0JuH8Ej^zsa%5yQiupVoy*%)InB+wU0n7$SJ0SCX z;+0{`ln$u{6gMVriF%TGu955!Td#38k)4;E{W^wn5@7yA+Yh8o}(-2}~8)N-~y%_m(`cfq+Xn za2*D0*gho-GeyVNrGda~JF$I6bcfQ71>QzTk4E0W0)MitcsnE^8SuoGqW0nI_gVtn zQ@^e_;9OYd6Q7y~u69Wl1U76TV|Ll8#!^MiR=9SToGi{Zh88W*OC56h0F2(DE1eOT zk5^!t7q4w5WQuB#l^aqYLrX#n%r3C)qx_s^!uF-3SYZn;-8yLpV!+{sxHE-UyrT?w z!1shk)a6-^&1NN8xKut{=_epOus!5&9u;ZA9eZiv_{6ImkNIZwI+q+};kP`-ek@?>Xe5!^S% zK3_e5$HUz>{rB_AWCx+?PFRy2-KIMePIlOw?i4%O@p!s(_hbk9e#Q`ezoJND2tQ*O z88B>&QHYC{i1$n^slLpE1z?vU(nn>m4|1w6kC_aYm+1DDd$7*@#KF437uWIS%I7RZ ziUjI@$u$}q4stu`rvoLwEeS8;mxLcjLw`hW*xzhp*?fRQ_k#cc002ovPDHLkV1fs$ BVWa>6 literal 0 HcmV?d00001 diff --git a/seahub/base/context_processors.py b/seahub/base/context_processors.py index 55e8b425b6..915094b80f 100644 --- a/seahub/base/context_processors.py +++ b/seahub/base/context_processors.py @@ -45,6 +45,7 @@ try: except ImportError: ENABLE_FILE_SCAN = False from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN +from seahub.weixin.settings import ENABLE_WEIXIN try: from seahub.settings import SIDE_NAV_FOOTER_CUSTOM_HTML @@ -111,6 +112,7 @@ def base(request): 'org': org, 'site_name': get_site_name(), 'enable_signup': config.ENABLE_SIGNUP, + 'enable_weixin': ENABLE_WEIXIN, 'max_file_name': MAX_FILE_NAME, 'has_file_search': HAS_FILE_SEARCH, 'show_repo_download_button': SHOW_REPO_DOWNLOAD_BUTTON, diff --git a/seahub/oauth/backends.py b/seahub/oauth/backends.py index 6da8dca8a7..29cfd518ca 100644 --- a/seahub/oauth/backends.py +++ b/seahub/oauth/backends.py @@ -5,6 +5,7 @@ from seahub.base.accounts import User from registration.models import (notify_admins_on_activate_request, notify_admins_on_register_complete) from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN +from seahub.weixin.settings import ENABLE_WEIXIN from seahub.dingtalk.settings import ENABLE_DINGTALK class OauthRemoteUserBackend(RemoteUserBackend): @@ -28,6 +29,12 @@ class OauthRemoteUserBackend(RemoteUserBackend): create_unknown_user = getattr(settings, 'WORK_WEIXIN_OAUTH_CREATE_UNKNOWN_USER', True) activate_after_creation = getattr(settings, 'WORK_WEIXIN_OAUTH_ACTIVATE_USER_AFTER_CREATION', True) + if ENABLE_WEIXIN: + from seahub.weixin.settings import WEIXIN_OAUTH_CREATE_UNKNOWN_USER, \ + WEIXIN_OAUTH_ACTIVATE_USER_AFTER_CREATION + create_unknown_user = WEIXIN_OAUTH_CREATE_UNKNOWN_USER + activate_after_creation = WEIXIN_OAUTH_ACTIVATE_USER_AFTER_CREATION + if ENABLE_DINGTALK: from seahub.dingtalk.settings import DINGTALK_QR_CONNECT_CREATE_UNKNOWN_USER, \ DINGTALK_QR_CONNECT_ACTIVATE_USER_AFTER_CREATION diff --git a/seahub/settings.py b/seahub/settings.py index 9de2cb6191..d5aefb851b 100644 --- a/seahub/settings.py +++ b/seahub/settings.py @@ -279,6 +279,9 @@ ENABLE_WATERMARK = False # enable work weixin ENABLE_WORK_WEIXIN = False +# enable weixin +ENABLE_WEIXIN = False + # enable dingtalk ENABLE_DINGTALK = False @@ -888,7 +891,7 @@ if ENABLE_REMOTE_USER_AUTHENTICATION: MIDDLEWARE_CLASSES += ('seahub.auth.middleware.SeafileRemoteUserMiddleware',) AUTHENTICATION_BACKENDS += ('seahub.auth.backends.SeafileRemoteUserBackend',) -if ENABLE_OAUTH or ENABLE_WORK_WEIXIN or ENABLE_DINGTALK: +if ENABLE_OAUTH or ENABLE_WORK_WEIXIN or ENABLE_WEIXIN or ENABLE_DINGTALK: AUTHENTICATION_BACKENDS += ('seahub.oauth.backends.OauthRemoteUserBackend',) ##################### diff --git a/seahub/templates/choose_register.html b/seahub/templates/choose_register.html index 6058f907a8..f05ab7b332 100644 --- a/seahub/templates/choose_register.html +++ b/seahub/templates/choose_register.html @@ -16,7 +16,11 @@ {% block extra_script %}{{block.super}}