1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-09 19:01:42 +00:00

update work weixin setting (#3819)

This commit is contained in:
sniper-py
2019-07-08 15:44:38 +08:00
committed by Daniel Pan
parent d207be56bc
commit 97016a2e2b
14 changed files with 52 additions and 63 deletions

View File

@@ -5,7 +5,7 @@ import Logo from '../../components/logo';
import { gettext, siteRoot, isPro, isDefaultAdmin, canViewSystemInfo, canViewStatistic, import { gettext, siteRoot, isPro, isDefaultAdmin, canViewSystemInfo, canViewStatistic,
canConfigSystem, canManageLibrary, canManageUser, canManageGroup, canViewUserLog, canConfigSystem, canManageLibrary, canManageUser, canManageGroup, canViewUserLog,
canViewAdminLog, constanceEnabled, multiTenancy, multiInstitution, sysadminExtraEnabled, canViewAdminLog, constanceEnabled, multiTenancy, multiInstitution, sysadminExtraEnabled,
enableGuestInvitation, enableTermsAndConditions, enableFileScan, enableWorkWeixinDepartments } from '../../utils/constants'; enableGuestInvitation, enableTermsAndConditions, enableFileScan, enableWorkWeixin } from '../../utils/constants';
const propTypes = { const propTypes = {
isSidePanelClosed: PropTypes.bool.isRequired, isSidePanelClosed: PropTypes.bool.isRequired,
@@ -174,7 +174,7 @@ class SidePanel extends React.Component {
</a> </a>
</li> </li>
} }
{isDefaultAdmin && enableWorkWeixinDepartments && {isDefaultAdmin && enableWorkWeixin &&
<li className="nav-item"> <li className="nav-item">
<Link className={`nav-link ellipsis ${this.getActiveClass('departments')}`} to={siteRoot + 'sys/work-weixin/departments/'}> <Link className={`nav-link ellipsis ${this.getActiveClass('departments')}`} to={siteRoot + 'sys/work-weixin/departments/'}>
<span className="sf3-font-enterprise-wechat sf3-font" aria-hidden="true"></span> <span className="sf3-font-enterprise-wechat sf3-font" aria-hidden="true"></span>

View File

@@ -116,5 +116,5 @@ export const canManageUser = window.sysadmin ? window.sysadmin.pageOptions.admin
export const canManageGroup = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_manage_group : ''; export const canManageGroup = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_manage_group : '';
export const canViewUserLog = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_view_user_log : ''; export const canViewUserLog = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_view_user_log : '';
export const canViewAdminLog = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_view_admin_log : ''; export const canViewAdminLog = window.sysadmin ? window.sysadmin.pageOptions.admin_permissions.can_view_admin_log : '';
export const enableWorkWeixinDepartments = window.sysadmin ? window.sysadmin.pageOptions.enable_work_weixin_departments : ''; export const enableWorkWeixin = window.sysadmin ? window.sysadmin.pageOptions.enable_work_weixin : '';

View File

@@ -186,7 +186,7 @@ def login(request, template_name='registration/login.html',
getattr(settings, 'ENABLE_OAUTH', False) or \ getattr(settings, 'ENABLE_OAUTH', False) or \
getattr(settings, 'ENABLE_CAS', False) or \ getattr(settings, 'ENABLE_CAS', False) or \
getattr(settings, 'ENABLE_REMOTE_USER_AUTHENTICATION', False) or \ getattr(settings, 'ENABLE_REMOTE_USER_AUTHENTICATION', False) or \
getattr(settings, 'ENABLE_WORK_WEIXIN_OAUTH', False) getattr(settings, 'ENABLE_WORK_WEIXIN', False)
login_bg_image_path = get_login_bg_image_path() login_bg_image_path = get_login_bg_image_path()

View File

@@ -50,7 +50,7 @@ try:
from seahub.settings import ENABLE_FILE_SCAN from seahub.settings import ENABLE_FILE_SCAN
except ImportError: except ImportError:
ENABLE_FILE_SCAN = False ENABLE_FILE_SCAN = False
from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN_DEPARTMENTS from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN
def base(request): def base(request):
@@ -133,7 +133,7 @@ def base(request):
'enable_resumable_fileupload': dj_settings.ENABLE_RESUMABLE_FILEUPLOAD, 'enable_resumable_fileupload': dj_settings.ENABLE_RESUMABLE_FILEUPLOAD,
'service_url': get_service_url().rstrip('/'), 'service_url': get_service_url().rstrip('/'),
'enable_file_scan': ENABLE_FILE_SCAN, 'enable_file_scan': ENABLE_FILE_SCAN,
'enable_work_weixin_departments': ENABLE_WORK_WEIXIN_DEPARTMENTS, 'enable_work_weixin': ENABLE_WORK_WEIXIN,
'avatar_url': avatar_url if avatar_url else '', 'avatar_url': avatar_url if avatar_url else '',
} }

View File

@@ -4,7 +4,7 @@ from seahub.auth.backends import RemoteUserBackend
from seahub.base.accounts import User from seahub.base.accounts import User
from registration.models import (notify_admins_on_activate_request, from registration.models import (notify_admins_on_activate_request,
notify_admins_on_register_complete) notify_admins_on_register_complete)
from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN_OAUTH from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN
class OauthRemoteUserBackend(RemoteUserBackend): class OauthRemoteUserBackend(RemoteUserBackend):
""" """
@@ -23,7 +23,7 @@ class OauthRemoteUserBackend(RemoteUserBackend):
# Create active user by default. # Create active user by default.
activate_after_creation = getattr(settings, 'OAUTH_ACTIVATE_USER_AFTER_CREATION', True) activate_after_creation = getattr(settings, 'OAUTH_ACTIVATE_USER_AFTER_CREATION', True)
if ENABLE_WORK_WEIXIN_OAUTH: if ENABLE_WORK_WEIXIN:
create_unknown_user = getattr(settings, 'WORK_WEIXIN_OAUTH_CREATE_UNKNOWN_USER', True) 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) activate_after_creation = getattr(settings, 'WORK_WEIXIN_OAUTH_ACTIVATE_USER_AFTER_CREATION', True)

View File

@@ -301,12 +301,8 @@ SOCIAL_AUTH_PIPELINE = (
ENABLE_OAUTH = False ENABLE_OAUTH = False
ENABLE_WATERMARK = False ENABLE_WATERMARK = False
# allow user scan the work weixin qrcode to login # enable work weixin
ENABLE_WORK_WEIXIN_OAUTH = False ENABLE_WORK_WEIXIN = False
# allow seafile admin import user from work weixin
ENABLE_WORK_WEIXIN_DEPARTMENTS = False
# allow send unread msg to work weixin
ENABLE_WORK_WEIXIN_NOTIFICATIONS = False
# allow user to clean library trash # allow user to clean library trash
ENABLE_USER_CLEAN_TRASH = True ENABLE_USER_CLEAN_TRASH = True
@@ -914,5 +910,5 @@ if ENABLE_REMOTE_USER_AUTHENTICATION:
MIDDLEWARE_CLASSES += ('seahub.auth.middleware.SeafileRemoteUserMiddleware',) MIDDLEWARE_CLASSES += ('seahub.auth.middleware.SeafileRemoteUserMiddleware',)
AUTHENTICATION_BACKENDS += ('seahub.auth.backends.SeafileRemoteUserBackend',) AUTHENTICATION_BACKENDS += ('seahub.auth.backends.SeafileRemoteUserBackend',)
if ENABLE_OAUTH or ENABLE_WORK_WEIXIN_OAUTH: if ENABLE_OAUTH or ENABLE_WORK_WEIXIN:
AUTHENTICATION_BACKENDS += ('seahub.oauth.backends.OauthRemoteUserBackend',) AUTHENTICATION_BACKENDS += ('seahub.oauth.backends.OauthRemoteUserBackend',)

View File

@@ -122,7 +122,7 @@
</li> </li>
{% endif %} {% endif %}
{% if is_default_admin and enable_work_weixin_departments %} {% if is_default_admin and enable_work_weixin %}
<li class="tab"> <li class="tab">
<a href="{{ SITE_ROOT }}sys/work-weixin/departments/"><span class="sf3-font-enterprise-wechat sf3-font"></span></a> <a href="{{ SITE_ROOT }}sys/work-weixin/departments/"><span class="sf3-font-enterprise-wechat sf3-font"></span></a>
</li> </li>

View File

@@ -133,7 +133,7 @@
</li> </li>
{% endif %} {% endif %}
{% if is_default_admin and enable_work_weixin_departments %} {% if is_default_admin and enable_work_weixin %}
<li class="tab"> <li class="tab">
<a href="{{ SITE_ROOT }}sys/work-weixin/departments/"><span class="sf3-font-enterprise-wechat sf3-font"></span>企业微信集成</a> <a href="{{ SITE_ROOT }}sys/work-weixin/departments/"><span class="sf3-font-enterprise-wechat sf3-font"></span>企业微信集成</a>
</li> </li>

View File

@@ -108,7 +108,7 @@ app["pageOptions"] = {
cur_note: {% if request.cur_note %} {'id': '{{ request.cur_note.id }}'} {% else %} null {% endif %}, cur_note: {% if request.cur_note %} {'id': '{{ request.cur_note.id }}'} {% else %} null {% endif %},
is_default_admin: {% if is_default_admin %} true {% else %} false {% endif %}, is_default_admin: {% if is_default_admin %} true {% else %} false {% endif %},
enable_file_scan: {% if enable_file_scan %} true {% else %} false {% endif %}, enable_file_scan: {% if enable_file_scan %} true {% else %} false {% endif %},
enable_work_weixin_departments: {% if enable_work_weixin_departments %} true {% else %} false {% endif %}, enable_work_weixin: {% if enable_work_weixin %} true {% else %} false {% endif %},
admin_permissions: { admin_permissions: {
"can_view_system_info": {% if user.admin_permissions.can_view_system_info %} true {% else %} false {% endif %}, "can_view_system_info": {% if user.admin_permissions.can_view_system_info %} true {% else %} false {% endif %},
"can_view_statistic": {% if user.admin_permissions.can_view_statistic %} true {% else %} false {% endif %}, "can_view_statistic": {% if user.admin_permissions.can_view_statistic %} true {% else %} false {% endif %},

View File

@@ -15,7 +15,7 @@
enable_terms_and_conditions: {% if enable_terms_and_conditions %} true {% else %} false {% endif %}, enable_terms_and_conditions: {% if enable_terms_and_conditions %} true {% else %} false {% endif %},
is_default_admin: {% if is_default_admin %} true {% else %} false {% endif %}, is_default_admin: {% if is_default_admin %} true {% else %} false {% endif %},
enable_file_scan: {% if enable_file_scan %} true {% else %} false {% endif %}, enable_file_scan: {% if enable_file_scan %} true {% else %} false {% endif %},
enable_work_weixin_departments: {% if enable_work_weixin_departments %} true {% else %} false {% endif %}, enable_work_weixin: {% if enable_work_weixin %} true {% else %} false {% endif %},
admin_permissions: { admin_permissions: {
"can_view_system_info": {% if user.admin_permissions.can_view_system_info %} true {% else %} false {% endif %}, "can_view_system_info": {% if user.admin_permissions.can_view_system_info %} true {% else %} false {% endif %},
"can_view_statistic": {% if user.admin_permissions.can_view_statistic %} true {% else %} false {% endif %}, "can_view_statistic": {% if user.admin_permissions.can_view_statistic %} true {% else %} false {% endif %},

View File

@@ -35,7 +35,7 @@ def sso(request):
if getattr(settings, 'ENABLE_CAS', False): if getattr(settings, 'ENABLE_CAS', False):
return HttpResponseRedirect(reverse('cas_ng_login') + next_param) return HttpResponseRedirect(reverse('cas_ng_login') + next_param)
if getattr(settings, 'ENABLE_WORK_WEIXIN_OAUTH', False): if getattr(settings, 'ENABLE_WORK_WEIXIN', False):
return HttpResponseRedirect(reverse('work_weixin_oauth_login') + next_param) return HttpResponseRedirect(reverse('work_weixin_oauth_login') + next_param)
return HttpResponseRedirect(next_page) return HttpResponseRedirect(next_page)

View File

@@ -98,7 +98,7 @@ try:
from seahub.settings import ENABLE_FILE_SCAN from seahub.settings import ENABLE_FILE_SCAN
except ImportError: except ImportError:
ENABLE_FILE_SCAN = False ENABLE_FILE_SCAN = False
from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN_DEPARTMENTS from seahub.work_weixin.settings import ENABLE_WORK_WEIXIN
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -133,7 +133,7 @@ def sysadmin(request):
'enable_limit_ipaddress': ENABLE_LIMIT_IPADDRESS, 'enable_limit_ipaddress': ENABLE_LIMIT_IPADDRESS,
'trash_repos_expire_days': expire_days if expire_days > 0 else 30, 'trash_repos_expire_days': expire_days if expire_days > 0 else 30,
'enable_file_scan': ENABLE_FILE_SCAN, 'enable_file_scan': ENABLE_FILE_SCAN,
'enable_work_weixin_departments': ENABLE_WORK_WEIXIN_DEPARTMENTS, 'enable_work_weixin': ENABLE_WORK_WEIXIN,
}) })
@login_required @login_required
@@ -148,7 +148,7 @@ def sysadmin_react_fake_view(request):
'enable_guest_invitation': ENABLE_GUEST_INVITATION, 'enable_guest_invitation': ENABLE_GUEST_INVITATION,
'enable_terms_and_conditions': config.ENABLE_TERMS_AND_CONDITIONS, 'enable_terms_and_conditions': config.ENABLE_TERMS_AND_CONDITIONS,
'enable_file_scan': ENABLE_FILE_SCAN, 'enable_file_scan': ENABLE_FILE_SCAN,
'enable_work_weixin_departments': ENABLE_WORK_WEIXIN_DEPARTMENTS, 'enable_work_weixin': ENABLE_WORK_WEIXIN,
}) })
@login_required @login_required

View File

@@ -3,13 +3,13 @@
from django.conf import settings from django.conf import settings
# # work weixin base # # work weixin base
ENABLE_WORK_WEIXIN = getattr(settings, 'ENABLE_WORK_WEIXIN', False)
WORK_WEIXIN_CORP_ID = getattr(settings, 'WORK_WEIXIN_CORP_ID', '') WORK_WEIXIN_CORP_ID = getattr(settings, 'WORK_WEIXIN_CORP_ID', '')
WORK_WEIXIN_AGENT_SECRET = getattr(settings, 'WORK_WEIXIN_AGENT_SECRET', '') WORK_WEIXIN_AGENT_SECRET = getattr(settings, 'WORK_WEIXIN_AGENT_SECRET', '')
WORK_WEIXIN_ACCESS_TOKEN_URL = getattr(settings, 'WORK_WEIXIN_ACCESS_TOKEN_URL', WORK_WEIXIN_ACCESS_TOKEN_URL = getattr(settings, 'WORK_WEIXIN_ACCESS_TOKEN_URL',
'https://qyapi.weixin.qq.com/cgi-bin/gettoken') 'https://qyapi.weixin.qq.com/cgi-bin/gettoken')
# # admin work weixin departments # # admin work weixin departments
ENABLE_WORK_WEIXIN_DEPARTMENTS = getattr(settings, 'ENABLE_WORK_WEIXIN_DEPARTMENTS', False)
WORK_WEIXIN_DEPARTMENTS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENTS_URL', WORK_WEIXIN_DEPARTMENTS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENTS_URL',
'https://qyapi.weixin.qq.com/cgi-bin/department/list') 'https://qyapi.weixin.qq.com/cgi-bin/department/list')
WORK_WEIXIN_DEPARTMENT_MEMBERS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENT_MEMBERS_URL', WORK_WEIXIN_DEPARTMENT_MEMBERS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENT_MEMBERS_URL',
@@ -17,7 +17,6 @@ WORK_WEIXIN_DEPARTMENT_MEMBERS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENT_M
# # work weixin oauth # # work weixin oauth
WORK_WEIXIN_AGENT_ID = getattr(settings, 'WORK_WEIXIN_AGENT_ID', '') WORK_WEIXIN_AGENT_ID = getattr(settings, 'WORK_WEIXIN_AGENT_ID', '')
ENABLE_WORK_WEIXIN_OAUTH = getattr(settings, 'ENABLE_WORK_WEIXIN_OAUTH', False)
WORK_WEIXIN_UID_PREFIX = WORK_WEIXIN_CORP_ID + '_' WORK_WEIXIN_UID_PREFIX = WORK_WEIXIN_CORP_ID + '_'
WORK_WEIXIN_USER_INFO_AUTO_UPDATE = getattr(settings, 'WORK_WEIXIN_USER_INFO_AUTO_UPDATE', True) WORK_WEIXIN_USER_INFO_AUTO_UPDATE = getattr(settings, 'WORK_WEIXIN_USER_INFO_AUTO_UPDATE', True)
WORK_WEIXIN_AUTHORIZATION_URL = getattr(settings, 'WORK_WEIXIN_AUTHORIZATION_URL', WORK_WEIXIN_AUTHORIZATION_URL = getattr(settings, 'WORK_WEIXIN_AUTHORIZATION_URL',
@@ -28,7 +27,6 @@ WORK_WEIXIN_GET_USER_PROFILE_URL = getattr(settings, 'WORK_WEIXIN_GET_USER_PROFI
'https://qyapi.weixin.qq.com/cgi-bin/user/get') 'https://qyapi.weixin.qq.com/cgi-bin/user/get')
# # work weixin notifications # # work weixin notifications
ENABLE_WORK_WEIXIN_NOTIFICATIONS = getattr(settings, 'ENABLE_WORK_WEIXIN_NOTIFICATIONS', False)
WORK_WEIXIN_NOTIFICATIONS_URL = getattr(settings, 'WORK_WEIXIN_NOTIFICATIONS_URL', WORK_WEIXIN_NOTIFICATIONS_URL = getattr(settings, 'WORK_WEIXIN_NOTIFICATIONS_URL',
'https://qyapi.weixin.qq.com/cgi-bin/message/send') 'https://qyapi.weixin.qq.com/cgi-bin/message/send')

View File

@@ -8,11 +8,11 @@ import requests
from django.core.cache import cache from django.core.cache import cache
from seahub.utils import normalize_cache_key from seahub.utils import normalize_cache_key
from seahub.work_weixin.settings import WORK_WEIXIN_CORP_ID, WORK_WEIXIN_AGENT_SECRET, \ from seahub.work_weixin.settings import WORK_WEIXIN_CORP_ID, WORK_WEIXIN_AGENT_SECRET, \
WORK_WEIXIN_ACCESS_TOKEN_URL, ENABLE_WORK_WEIXIN_DEPARTMENTS, \ WORK_WEIXIN_ACCESS_TOKEN_URL, ENABLE_WORK_WEIXIN, \
WORK_WEIXIN_DEPARTMENTS_URL, WORK_WEIXIN_DEPARTMENT_MEMBERS_URL, \ WORK_WEIXIN_DEPARTMENTS_URL, WORK_WEIXIN_DEPARTMENT_MEMBERS_URL, \
ENABLE_WORK_WEIXIN_OAUTH, WORK_WEIXIN_AGENT_ID, WORK_WEIXIN_AUTHORIZATION_URL, \ WORK_WEIXIN_AGENT_ID, WORK_WEIXIN_AUTHORIZATION_URL, \
WORK_WEIXIN_GET_USER_INFO_URL, WORK_WEIXIN_GET_USER_PROFILE_URL, \ WORK_WEIXIN_GET_USER_INFO_URL, WORK_WEIXIN_GET_USER_PROFILE_URL, \
ENABLE_WORK_WEIXIN_NOTIFICATIONS, WORK_WEIXIN_NOTIFICATIONS_URL WORK_WEIXIN_NOTIFICATIONS_URL
from seahub.profile.models import Profile from seahub.profile.models import Profile
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -66,21 +66,22 @@ def handler_work_weixin_api_response(response):
def work_weixin_base_check(): def work_weixin_base_check():
""" work weixin base check """ work weixin base check
""" """
if not ENABLE_WORK_WEIXIN:
return False
if not WORK_WEIXIN_CORP_ID or not WORK_WEIXIN_AGENT_SECRET or not WORK_WEIXIN_ACCESS_TOKEN_URL: if not WORK_WEIXIN_CORP_ID or not WORK_WEIXIN_AGENT_SECRET or not WORK_WEIXIN_ACCESS_TOKEN_URL:
logger.error('work weixin base relevant settings invalid.') logger.error('work weixin base relevant settings invalid.')
logger.error('WORK_WEIXIN_CORP_ID: %s' % WORK_WEIXIN_CORP_ID) logger.error('WORK_WEIXIN_CORP_ID: %s' % WORK_WEIXIN_CORP_ID)
logger.error('WORK_WEIXIN_AGENT_SECRET: %s' % WORK_WEIXIN_AGENT_SECRET) logger.error('WORK_WEIXIN_AGENT_SECRET: %s' % WORK_WEIXIN_AGENT_SECRET)
logger.error('WORK_WEIXIN_ACCESS_TOKEN_URL: %s' % WORK_WEIXIN_ACCESS_TOKEN_URL) logger.error('WORK_WEIXIN_ACCESS_TOKEN_URL: %s' % WORK_WEIXIN_ACCESS_TOKEN_URL)
return False return False
return True return True
def work_weixin_oauth_check(): def work_weixin_oauth_check():
""" use for work weixin login and profile bind """ use for work weixin login and profile bind
""" """
if not ENABLE_WORK_WEIXIN_OAUTH:
return False
else:
if not work_weixin_base_check(): if not work_weixin_base_check():
return False return False
@@ -101,9 +102,6 @@ def work_weixin_oauth_check():
def admin_work_weixin_departments_check(): def admin_work_weixin_departments_check():
""" use for admin work weixin departments """ use for admin work weixin departments
""" """
if not ENABLE_WORK_WEIXIN_DEPARTMENTS:
return False
else:
if not work_weixin_base_check(): if not work_weixin_base_check():
return False return False
@@ -120,9 +118,6 @@ def admin_work_weixin_departments_check():
def work_weixin_notifications_check(): def work_weixin_notifications_check():
""" use for send work weixin notifications """ use for send work weixin notifications
""" """
if not ENABLE_WORK_WEIXIN_NOTIFICATIONS:
return False
else:
if not work_weixin_base_check(): if not work_weixin_base_check():
return False return False