1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 14:50:29 +00:00

update profile form work weixin (#3660)

* update profile form work weixin

* overwrite profile from work weixin
This commit is contained in:
sniper-py
2019-06-14 17:16:57 +08:00
committed by lian
parent 7648f0747d
commit ac8dae56ca
3 changed files with 29 additions and 14 deletions

View File

@@ -19,7 +19,7 @@ WORK_WEIXIN_DEPARTMENT_MEMBERS_URL = getattr(settings, 'WORK_WEIXIN_DEPARTMENT_M
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) 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 + '_'
AUTO_UPDATE_WORK_WEIXIN_USER_INFO = getattr(settings, 'AUTO_UPDATE_WORK_WEIXIN_USER_INFO', False) 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',
'https://open.work.weixin.qq.com/wwopen/sso/qrConnect') 'https://open.work.weixin.qq.com/wwopen/sso/qrConnect')
WORK_WEIXIN_GET_USER_INFO_URL = getattr(settings, 'WORK_WEIXIN_GET_USER_INFO_URL', WORK_WEIXIN_GET_USER_INFO_URL = getattr(settings, 'WORK_WEIXIN_GET_USER_INFO_URL',

View File

@@ -138,12 +138,27 @@ def work_weixin_notifications_check():
def update_work_weixin_user_info(api_user): def update_work_weixin_user_info(api_user):
""" update user profile from work weixin """ update user profile from work weixin
use for work weixin departments, login, profile bind
""" """
email = api_user.get('username') # update additional user info
try: username = api_user.get('username')
# update additional user info nickname = api_user.get('name')
nickname = api_user.get("name", None) contact_email = api_user.get('contact_email')
if nickname is not None:
Profile.objects.add_or_update(email, nickname) # make sure the contact_email is unique
except Exception as e: if contact_email and Profile.objects.get_profile_by_contact_email(contact_email):
logger.error(e) logger.warning('contact email %s already exists' % contact_email)
contact_email = ''
profile_kwargs = {}
if nickname:
profile_kwargs['nickname'] = nickname
if contact_email:
profile_kwargs['contact_email'] = contact_email
if profile_kwargs:
try:
Profile.objects.add_or_update(username, **profile_kwargs)
except Exception as e:
logger.error(e)

View File

@@ -17,7 +17,7 @@ from seahub.base.accounts import User
from seahub.work_weixin.settings import WORK_WEIXIN_AUTHORIZATION_URL, WORK_WEIXIN_CORP_ID, \ from seahub.work_weixin.settings import WORK_WEIXIN_AUTHORIZATION_URL, WORK_WEIXIN_CORP_ID, \
WORK_WEIXIN_AGENT_ID, WORK_WEIXIN_PROVIDER, \ WORK_WEIXIN_AGENT_ID, WORK_WEIXIN_PROVIDER, \
WORK_WEIXIN_GET_USER_INFO_URL, WORK_WEIXIN_GET_USER_PROFILE_URL, WORK_WEIXIN_UID_PREFIX, \ WORK_WEIXIN_GET_USER_INFO_URL, WORK_WEIXIN_GET_USER_PROFILE_URL, WORK_WEIXIN_UID_PREFIX, \
AUTO_UPDATE_WORK_WEIXIN_USER_INFO WORK_WEIXIN_USER_INFO_AUTO_UPDATE
from seahub.work_weixin.utils import work_weixin_oauth_check, get_work_weixin_access_token, \ from seahub.work_weixin.utils import work_weixin_oauth_check, get_work_weixin_access_token, \
handler_work_weixin_api_response, update_work_weixin_user_info handler_work_weixin_api_response, update_work_weixin_user_info
from seahub.utils.auth import gen_user_virtual_id, VIRTUAL_ID_EMAIL_DOMAIN from seahub.utils.auth import gen_user_virtual_id, VIRTUAL_ID_EMAIL_DOMAIN
@@ -100,8 +100,8 @@ def work_weixin_oauth_callback(request):
return render_error( return render_error(
request, _('Error, new user registration is not allowed, please contact administrator.')) request, _('Error, new user registration is not allowed, please contact administrator.'))
if is_new_user or AUTO_UPDATE_WORK_WEIXIN_USER_INFO: # update user info
# update user info if is_new_user or WORK_WEIXIN_USER_INFO_AUTO_UPDATE:
user_info_data = { user_info_data = {
'access_token': access_token, 'access_token': access_token,
'userid': user_id, 'userid': user_id,
@@ -193,8 +193,8 @@ def work_weixin_oauth_connect_callback(request):
SocialAuthUser.objects.add(email, WORK_WEIXIN_PROVIDER, uid) SocialAuthUser.objects.add(email, WORK_WEIXIN_PROVIDER, uid)
if AUTO_UPDATE_WORK_WEIXIN_USER_INFO: # update user info
# update user info if WORK_WEIXIN_USER_INFO_AUTO_UPDATE:
user_info_data = { user_info_data = {
'access_token': access_token, 'access_token': access_token,
'userid': user_id, 'userid': user_id,