Skip to content

Commit

Permalink
fix code
Browse files Browse the repository at this point in the history
  • Loading branch information
likesclever committed Jan 16, 2024
1 parent 61ada61 commit 8547f66
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 21 deletions.
8 changes: 8 additions & 0 deletions frontend/src/components/common/notice-item.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const MSG_TYPE_DRAFT_REVIEWER = 'draft_reviewer';
// const MSG_TYPE_GUEST_INVITATION_ACCEPTED = 'guest_invitation_accepted';
const MSG_TYPE_REPO_MONITOR = 'repo_monitor';
const MSG_TYPE_DELETED_FILES = 'deleted_files';
const MSG_TYPE_SAML_SSO_FAILED = 'saml_sso_failed';

class NoticeItem extends React.Component {

Expand Down Expand Up @@ -282,6 +283,13 @@ class NoticeItem extends React.Component {
return { avatar_url : null, notice };
}

if (noticeType === MSG_TYPE_SAML_SSO_FAILED) {
const { error_msg } = detail;
let notice = gettext(error_msg);

return { avatar_url : null, notice };
}

// if (noticeType === MSG_TYPE_GUEST_INVITATION_ACCEPTED) {

// }
Expand Down
2 changes: 1 addition & 1 deletion seahub/adfs_auth/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def config_settings_loader(request):
try:
conf = SPConfig()
conf.load(copy.deepcopy(saml_config))
except RuntimeError as e:
except Exception as e:
logger.exception('Failed to load adfs/saml config, error: %s' % e)
raise RuntimeError('Failed to load adfs/saml config, error: %s' % e)
return conf
40 changes: 20 additions & 20 deletions seahub/adfs_auth/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ def login(request, org_id=None):
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: ADFS/SAML service error. '
'Please report to your organization (company) administrator.'))
except Exception as e:
Expand Down Expand Up @@ -200,11 +200,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: Bad response from ADFS/SAML service. '
'Please report to your organization (company) administrator.'))

Expand All @@ -217,11 +217,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: ADFS/SAML service error. '
'Please report to your organization (company) administrator.'))
except Exception as e:
Expand All @@ -244,11 +244,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: Bad response from ADFS/SAML service. '
'Please report to your organization (company) administrator.'))
if response is None:
Expand All @@ -258,11 +258,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: Bad response from ADFS/SAML service. '
'Please report to your organization (company) administrator.'))

Expand Down Expand Up @@ -314,7 +314,7 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
error_msg = 'The number of users exceeds the license limit.'
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseForbidden(_('Internal server error. Please contact system administrator.'))

# check user number limit by org member quota
Expand All @@ -329,7 +329,7 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
error_msg = 'Failed to create new user: the number of users exceeds the organization quota.'
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
return HttpResponseForbidden(_('Failed to create new user: '
'the number of users exceeds the organization quota. '
'Please report to your organization (company) administrator.'))
Expand All @@ -347,11 +347,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseForbidden(_('Login failed: failed to create user. '
'Please report to your organization (company) administrator.'))

Expand All @@ -362,11 +362,11 @@ def assertion_consumer_service(request, org_id=None, attribute_mapping=None, cre
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseForbidden(_('Login failed: user is deactivated. '
'Please report to your organization (company) administrator.'))

Expand Down Expand Up @@ -401,11 +401,11 @@ def metadata(request, org_id=None):
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: ADFS/SAML service error. '
'Please report to your organization (company) administrator.'))
except Exception as e:
Expand Down Expand Up @@ -452,11 +452,11 @@ def saml2_connect(request, org_id=None):
if org:
org_admins = get_org_admins(org)
for org_admin in org_admins:
saml_sso_failed.send(sender=None, to_user=org_admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=org_admin.email, error_msg=error_msg)
else:
admins = User.objects.get_superusers()
for admin in admins:
saml_sso_failed.send(sender=None, to_user=admin, error_msg=error_msg)
saml_sso_failed.send(sender=None, to_user=admin.email, error_msg=error_msg)
return HttpResponseBadRequest(_('Login failed: ADFS/SAML service error. '
'Please report to your organization (company) administrator.'))
except Exception as e:
Expand Down
8 changes: 8 additions & 0 deletions seahub/notifications/management/commands/send_notices.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,11 @@ def format_repo_monitor_msg(self, notice):

return notice

def format_saml_sso_error_msg(self, notice):
d = json.loads(notice.detail)
notice.error_msg = d['error_msg']
return notice

def format_sdoc_msg(self, sdoc_queryset, sdoc_notice):
sdoc_obj = sdoc_queryset.filter(uuid=sdoc_notice.doc_uuid).first()
if not sdoc_obj:
Expand Down Expand Up @@ -421,6 +426,9 @@ def do_action(self):
elif notice.is_repo_monitor_msg():
notice = self.format_repo_monitor_msg(notice)

elif notice.is_saml_sso_error_msg():
notice = self.format_saml_sso_error_msg(notice)

if notice is None:
continue

Expand Down
3 changes: 3 additions & 0 deletions seahub/notifications/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,9 @@ def is_repo_monitor_msg(self):
def is_deleted_files_msg(self):
return self.msg_type == MSG_TYPE_DELETED_FILES

def is_saml_sso_error_msg(self):
return self.msg_type == MSG_TYPE_SAML_SSO_FAILED

def user_message_detail_to_dict(self):
"""Parse user message detail, returns dict contains ``message`` and
``msg_from``.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
{% elif notice.is_deleted_files_msg %}
<p style="line-height:1.5; margin:.2em 10px .2em 0;">{% blocktrans with repo_url=notice.repo_url repo_name=notice.repo_name %}A large number of files in your library <a href="{{url_base}}{{ repo_url }}">{{ repo_name }}</a> has been deleted recently.{% endblocktrans %}</p>

{% elif notice.is_saml_sso_error_msg %}
<p style="line-height:1.5; margin:.2em 10px .2em 0;">{% blocktrans %}{{notice.error_msg}}{% endblocktrans %}</p>

{% elif notice.is_repo_monitor_msg %}
<p style="line-height:1.5; margin:.2em 10px .2em 0;">
{% if notice.obj_type == 'file' %}
Expand Down
7 changes: 7 additions & 0 deletions seahub/notifications/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,13 @@ def update_notice_detail(request, notices):
except Exception as e:
logger.error(e)

elif notice.is_saml_sso_error_msg():
try:
d = json.loads(notice.detail)
notice.detail = d
except Exception as e:
logger.error(e)

return notices


Expand Down

0 comments on commit 8547f66

Please sign in to comment.