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:
@@ -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', '')
|
||||
ENABLE_WORK_WEIXIN_OAUTH = getattr(settings, 'ENABLE_WORK_WEIXIN_OAUTH', False)
|
||||
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',
|
||||
'https://open.work.weixin.qq.com/wwopen/sso/qrConnect')
|
||||
WORK_WEIXIN_GET_USER_INFO_URL = getattr(settings, 'WORK_WEIXIN_GET_USER_INFO_URL',
|
||||
|
@@ -138,12 +138,27 @@ def work_weixin_notifications_check():
|
||||
|
||||
def update_work_weixin_user_info(api_user):
|
||||
""" update user profile from work weixin
|
||||
|
||||
use for work weixin departments, login, profile bind
|
||||
"""
|
||||
email = api_user.get('username')
|
||||
try:
|
||||
# update additional user info
|
||||
nickname = api_user.get("name", None)
|
||||
if nickname is not None:
|
||||
Profile.objects.add_or_update(email, nickname)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
# update additional user info
|
||||
username = api_user.get('username')
|
||||
nickname = api_user.get('name')
|
||||
contact_email = api_user.get('contact_email')
|
||||
|
||||
# make sure the contact_email is unique
|
||||
if contact_email and Profile.objects.get_profile_by_contact_email(contact_email):
|
||||
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)
|
||||
|
@@ -17,7 +17,7 @@ from seahub.base.accounts import User
|
||||
from seahub.work_weixin.settings import WORK_WEIXIN_AUTHORIZATION_URL, WORK_WEIXIN_CORP_ID, \
|
||||
WORK_WEIXIN_AGENT_ID, WORK_WEIXIN_PROVIDER, \
|
||||
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, \
|
||||
handler_work_weixin_api_response, update_work_weixin_user_info
|
||||
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(
|
||||
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 = {
|
||||
'access_token': access_token,
|
||||
'userid': user_id,
|
||||
@@ -193,8 +193,8 @@ def work_weixin_oauth_connect_callback(request):
|
||||
|
||||
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 = {
|
||||
'access_token': access_token,
|
||||
'userid': user_id,
|
||||
|
Reference in New Issue
Block a user