perf: Notify info css optimization

This commit is contained in:
feng
2025-09-10 14:02:09 +08:00
committed by feng626
parent 71766418bb
commit 8420989509
8 changed files with 58 additions and 28 deletions

View File

@@ -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)

View File

@@ -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>

View File

@@ -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>

View File

@@ -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)

View File

@@ -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):

View File

@@ -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]:

View File

@@ -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']),

View File

@@ -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 organizations 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>