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', '')
|
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',
|
||||||
|
@@ -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)
|
||||||
|
@@ -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,
|
||||||
|
Reference in New Issue
Block a user