mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-11 04:09:45 +00:00
perf: Notify info css optimization
This commit is contained in:
@@ -2,6 +2,7 @@ from django.template.loader import render_to_string
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from accounts.models import Account
|
||||
from acls.models import LoginACL, LoginAssetACL
|
||||
from assets.models import Asset
|
||||
from audits.models import UserLoginLog
|
||||
from notifications.notifications import UserMessage
|
||||
@@ -11,8 +12,9 @@ from users.models import User
|
||||
class UserLoginReminderMsg(UserMessage):
|
||||
subject = _('User login reminder')
|
||||
|
||||
def __init__(self, user, user_log: UserLoginLog):
|
||||
def __init__(self, user, user_log: UserLoginLog, acl: LoginACL):
|
||||
self.user_log = user_log
|
||||
self.acl_name = str(acl)
|
||||
super().__init__(user)
|
||||
|
||||
def get_html_msg(self) -> dict:
|
||||
@@ -22,6 +24,7 @@ class UserLoginReminderMsg(UserMessage):
|
||||
'city': user_log.city,
|
||||
'username': user_log.username,
|
||||
'recipient': self.user,
|
||||
'acl_name': self.acl_name,
|
||||
'user_agent': user_log.user_agent,
|
||||
}
|
||||
message = render_to_string('acls/user_login_reminder.html', context)
|
||||
@@ -41,21 +44,29 @@ class UserLoginReminderMsg(UserMessage):
|
||||
class AssetLoginReminderMsg(UserMessage):
|
||||
subject = _('User login alert for asset')
|
||||
|
||||
def __init__(self, user, asset: Asset, login_user: User, account: Account, input_username):
|
||||
def __init__(
|
||||
self, user, asset: Asset, login_user: User,
|
||||
account: Account, acl: LoginAssetACL,
|
||||
ip, input_username
|
||||
):
|
||||
self.ip = ip
|
||||
self.asset = asset
|
||||
self.login_user = login_user
|
||||
self.account = account
|
||||
self.acl_name = str(acl)
|
||||
self.login_user = login_user
|
||||
self.input_username = input_username
|
||||
super().__init__(user)
|
||||
|
||||
def get_html_msg(self) -> dict:
|
||||
context = {
|
||||
'ip': self.ip,
|
||||
'recipient': self.user,
|
||||
'username': self.login_user.username,
|
||||
'name': self.login_user.name,
|
||||
'asset': str(self.asset),
|
||||
'account': self.input_username,
|
||||
'account_name': self.account.name,
|
||||
'acl_name': self.acl_name,
|
||||
}
|
||||
message = render_to_string('acls/asset_login_reminder.html', context)
|
||||
|
||||
|
@@ -6,8 +6,10 @@
|
||||
<p><strong>{% trans 'Asset details' %}:</strong></p>
|
||||
<ul>
|
||||
<li><strong>{% trans 'User' %}:</strong> [{{ name }}({{ username }})]</li>
|
||||
<li><strong>IP:</strong> [{{ ip }}]</li>
|
||||
<li><strong>{% trans 'Assets' %}:</strong> [{{ asset }}]</li>
|
||||
<li><strong>{% trans 'Account' %}:</strong> [{{ account_name }}({{ account }})]</li>
|
||||
<li><strong>{% trans 'Login asset acl' %}:</strong> [{{ acl_name }}]</li>
|
||||
</ul>
|
||||
<hr>
|
||||
|
||||
|
@@ -9,6 +9,7 @@
|
||||
<li><strong>IP:</strong> [{{ ip }}]</li>
|
||||
<li><strong>{% trans 'Login city' %}:</strong> [{{ city }}]</li>
|
||||
<li><strong>{% trans 'User agent' %}:</strong> [{{ user_agent }}]</li>
|
||||
<li><strong>{% trans 'Login acl' %}:</strong> [{{ acl_name }}]</li>
|
||||
</ul>
|
||||
<hr>
|
||||
|
||||
|
@@ -116,7 +116,7 @@ def send_login_info_to_reviewers(instance: UserLoginLog | str, auth_acl_id):
|
||||
|
||||
reviewers = acl.reviewers.all()
|
||||
for reviewer in reviewers:
|
||||
UserLoginReminderMsg(reviewer, instance).publish_async()
|
||||
UserLoginReminderMsg(reviewer, instance, acl).publish_async()
|
||||
|
||||
|
||||
@receiver(post_auth_success)
|
||||
|
@@ -525,7 +525,8 @@ class ConnectionTokenViewSet(AuthFaceMixin, ExtraActionApiMixin, RootOrgViewMixi
|
||||
self._record_operate_log(acl, asset)
|
||||
for reviewer in reviewers:
|
||||
AssetLoginReminderMsg(
|
||||
reviewer, asset, user, account, self.input_username
|
||||
reviewer, asset, user, account, acl,
|
||||
ip, self.input_username
|
||||
).publish_async()
|
||||
|
||||
def create_face_verify(self, response):
|
||||
|
@@ -1,6 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import uuid
|
||||
from django.utils import timezone
|
||||
from rest_framework import generics
|
||||
from rest_framework.fields import DateTimeField
|
||||
@@ -228,6 +227,9 @@ class InsecureCommandAlertAPI(generics.CreateAPIView):
|
||||
command.update({
|
||||
'_account': session.account,
|
||||
'_org_name': session.org.name,
|
||||
'_protocol': session.protocol,
|
||||
'_remote_addr': session.remote_addr,
|
||||
'_login_from': session.get_login_from_display(),
|
||||
})
|
||||
|
||||
if risk_level in [RiskLevelChoices.reject, RiskLevelChoices.review_reject]:
|
||||
|
@@ -98,10 +98,14 @@ class CommandWarningMessage(CommandAlertMixin, UserMessage):
|
||||
cmd_group_name = cmd_group.name if cmd_group else ''
|
||||
|
||||
context = {
|
||||
'recipient': self.user,
|
||||
'command': command['input'],
|
||||
'user': command['user'],
|
||||
'asset': command['asset'],
|
||||
'account': command.get('_account', ''),
|
||||
'protocol': command.get('_protocol', ''),
|
||||
'remote_addr': command.get('_remote_addr', ''),
|
||||
'login_from': command.get('_login_from', ''),
|
||||
'cmd_filter_acl': cmd_acl_name,
|
||||
'cmd_group': cmd_group_name,
|
||||
'risk_level': RiskLevelChoices.get_label(command['risk_level']),
|
||||
|
@@ -1,25 +1,34 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div>
|
||||
<b>{% trans 'Asset' %}: </b> <span>{{ asset }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'User' %}: </b> <span>{{ user }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'Account' %}: </b> <span>{{ account }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'Risk level' %}: </b><span>{{ risk_level }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'Command acl' %}: </b> <span>{{ cmd_filter_acl }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'Command group' %}: </b> <span>{{ cmd_group}}</span>
|
||||
<br/>
|
||||
{% if session_url %}
|
||||
<b>{% trans 'Session' %}: </b>
|
||||
<a href="{{ session_url }}" target="_blank">{% trans 'View' %}</a>
|
||||
<br/>
|
||||
<h3>{% trans 'Dear' %}: {{ recipient.name }} [{{ recipient.username }}]</h3>
|
||||
<hr>
|
||||
<p>{% trans 'We would like to inform you that a command alert has been triggered with the following details:' %}</p>
|
||||
|
||||
<p><strong>{% trans 'Alert details' %}:</strong></p>
|
||||
<ul>
|
||||
<li><strong>{% trans 'User' %}:</strong> [{{ user }}]</li>
|
||||
<li><strong>{% trans 'Asset' %}:</strong> [{{ asset }}]</li>
|
||||
<li><strong>{% trans 'Account' %}:</strong> [{{ account }}]</li>
|
||||
{% if remote_addr %}
|
||||
<li><strong>IP:</strong> [{{ remote_addr }}]</li>
|
||||
{% endif %}
|
||||
<b>{% trans 'Organization' %}: </b> <span>{{ org }}</span>
|
||||
<br/>
|
||||
<b>{% trans 'Command' %}: </b><span>{{ command }}</span>
|
||||
<br/>
|
||||
</div>
|
||||
{% if login_from %}
|
||||
<li><strong>{% trans 'Login from' %}:</strong> [{{ login_from }}]</li>
|
||||
{% endif %}
|
||||
{% if protocol %}
|
||||
<li><strong>{% trans 'Protocol' %}:</strong> [{{ protocol }}]</li>
|
||||
{% endif %}
|
||||
<li><strong>{% trans 'Risk level' %}:</strong> [{{ risk_level }}]</li>
|
||||
<li><strong>{% trans 'Command acl' %}:</strong> [{{ cmd_filter_acl }}]</li>
|
||||
<li><strong>{% trans 'Command group' %}:</strong> [{{ cmd_group }}]</li>
|
||||
{% if session_url %}
|
||||
<li><strong>{% trans 'Session' %}:</strong> <a href="{{ session_url }}" target="_blank">{% trans 'View session' %}</a></li>
|
||||
{% endif %}
|
||||
<li><strong>{% trans 'Organization' %}:</strong> [{{ org }}]</li>
|
||||
<li><strong>{% trans 'Command' %}:</strong> [{{ command }}]</li>
|
||||
</ul>
|
||||
<hr>
|
||||
|
||||
<p>{% trans 'Please review this command execution to ensure it complies with your organization’s security policies. If you did not authorize this action or notice anything unusual, please take the necessary actions immediately.' %}</p>
|
||||
|
||||
<p>{% trans 'Thank you for your attention to this matter' %}!</p>
|
Reference in New Issue
Block a user