mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-11 12:19:41 +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 django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from accounts.models import Account
|
from accounts.models import Account
|
||||||
|
from acls.models import LoginACL, LoginAssetACL
|
||||||
from assets.models import Asset
|
from assets.models import Asset
|
||||||
from audits.models import UserLoginLog
|
from audits.models import UserLoginLog
|
||||||
from notifications.notifications import UserMessage
|
from notifications.notifications import UserMessage
|
||||||
@@ -11,8 +12,9 @@ from users.models import User
|
|||||||
class UserLoginReminderMsg(UserMessage):
|
class UserLoginReminderMsg(UserMessage):
|
||||||
subject = _('User login reminder')
|
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.user_log = user_log
|
||||||
|
self.acl_name = str(acl)
|
||||||
super().__init__(user)
|
super().__init__(user)
|
||||||
|
|
||||||
def get_html_msg(self) -> dict:
|
def get_html_msg(self) -> dict:
|
||||||
@@ -22,6 +24,7 @@ class UserLoginReminderMsg(UserMessage):
|
|||||||
'city': user_log.city,
|
'city': user_log.city,
|
||||||
'username': user_log.username,
|
'username': user_log.username,
|
||||||
'recipient': self.user,
|
'recipient': self.user,
|
||||||
|
'acl_name': self.acl_name,
|
||||||
'user_agent': user_log.user_agent,
|
'user_agent': user_log.user_agent,
|
||||||
}
|
}
|
||||||
message = render_to_string('acls/user_login_reminder.html', context)
|
message = render_to_string('acls/user_login_reminder.html', context)
|
||||||
@@ -41,21 +44,29 @@ class UserLoginReminderMsg(UserMessage):
|
|||||||
class AssetLoginReminderMsg(UserMessage):
|
class AssetLoginReminderMsg(UserMessage):
|
||||||
subject = _('User login alert for asset')
|
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.asset = asset
|
||||||
self.login_user = login_user
|
|
||||||
self.account = account
|
self.account = account
|
||||||
|
self.acl_name = str(acl)
|
||||||
|
self.login_user = login_user
|
||||||
self.input_username = input_username
|
self.input_username = input_username
|
||||||
super().__init__(user)
|
super().__init__(user)
|
||||||
|
|
||||||
def get_html_msg(self) -> dict:
|
def get_html_msg(self) -> dict:
|
||||||
context = {
|
context = {
|
||||||
|
'ip': self.ip,
|
||||||
'recipient': self.user,
|
'recipient': self.user,
|
||||||
'username': self.login_user.username,
|
'username': self.login_user.username,
|
||||||
'name': self.login_user.name,
|
'name': self.login_user.name,
|
||||||
'asset': str(self.asset),
|
'asset': str(self.asset),
|
||||||
'account': self.input_username,
|
'account': self.input_username,
|
||||||
'account_name': self.account.name,
|
'account_name': self.account.name,
|
||||||
|
'acl_name': self.acl_name,
|
||||||
}
|
}
|
||||||
message = render_to_string('acls/asset_login_reminder.html', context)
|
message = render_to_string('acls/asset_login_reminder.html', context)
|
||||||
|
|
||||||
|
@@ -6,8 +6,10 @@
|
|||||||
<p><strong>{% trans 'Asset details' %}:</strong></p>
|
<p><strong>{% trans 'Asset details' %}:</strong></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>{% trans 'User' %}:</strong> [{{ name }}({{ username }})]</li>
|
<li><strong>{% trans 'User' %}:</strong> [{{ name }}({{ username }})]</li>
|
||||||
|
<li><strong>IP:</strong> [{{ ip }}]</li>
|
||||||
<li><strong>{% trans 'Assets' %}:</strong> [{{ asset }}]</li>
|
<li><strong>{% trans 'Assets' %}:</strong> [{{ asset }}]</li>
|
||||||
<li><strong>{% trans 'Account' %}:</strong> [{{ account_name }}({{ account }})]</li>
|
<li><strong>{% trans 'Account' %}:</strong> [{{ account_name }}({{ account }})]</li>
|
||||||
|
<li><strong>{% trans 'Login asset acl' %}:</strong> [{{ acl_name }}]</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
<li><strong>IP:</strong> [{{ ip }}]</li>
|
<li><strong>IP:</strong> [{{ ip }}]</li>
|
||||||
<li><strong>{% trans 'Login city' %}:</strong> [{{ city }}]</li>
|
<li><strong>{% trans 'Login city' %}:</strong> [{{ city }}]</li>
|
||||||
<li><strong>{% trans 'User agent' %}:</strong> [{{ user_agent }}]</li>
|
<li><strong>{% trans 'User agent' %}:</strong> [{{ user_agent }}]</li>
|
||||||
|
<li><strong>{% trans 'Login acl' %}:</strong> [{{ acl_name }}]</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
@@ -116,7 +116,7 @@ def send_login_info_to_reviewers(instance: UserLoginLog | str, auth_acl_id):
|
|||||||
|
|
||||||
reviewers = acl.reviewers.all()
|
reviewers = acl.reviewers.all()
|
||||||
for reviewer in reviewers:
|
for reviewer in reviewers:
|
||||||
UserLoginReminderMsg(reviewer, instance).publish_async()
|
UserLoginReminderMsg(reviewer, instance, acl).publish_async()
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_auth_success)
|
@receiver(post_auth_success)
|
||||||
|
@@ -525,7 +525,8 @@ class ConnectionTokenViewSet(AuthFaceMixin, ExtraActionApiMixin, RootOrgViewMixi
|
|||||||
self._record_operate_log(acl, asset)
|
self._record_operate_log(acl, asset)
|
||||||
for reviewer in reviewers:
|
for reviewer in reviewers:
|
||||||
AssetLoginReminderMsg(
|
AssetLoginReminderMsg(
|
||||||
reviewer, asset, user, account, self.input_username
|
reviewer, asset, user, account, acl,
|
||||||
|
ip, self.input_username
|
||||||
).publish_async()
|
).publish_async()
|
||||||
|
|
||||||
def create_face_verify(self, response):
|
def create_face_verify(self, response):
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
import uuid
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework import generics
|
from rest_framework import generics
|
||||||
from rest_framework.fields import DateTimeField
|
from rest_framework.fields import DateTimeField
|
||||||
@@ -228,6 +227,9 @@ class InsecureCommandAlertAPI(generics.CreateAPIView):
|
|||||||
command.update({
|
command.update({
|
||||||
'_account': session.account,
|
'_account': session.account,
|
||||||
'_org_name': session.org.name,
|
'_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]:
|
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 ''
|
cmd_group_name = cmd_group.name if cmd_group else ''
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
|
'recipient': self.user,
|
||||||
'command': command['input'],
|
'command': command['input'],
|
||||||
'user': command['user'],
|
'user': command['user'],
|
||||||
'asset': command['asset'],
|
'asset': command['asset'],
|
||||||
'account': command.get('_account', ''),
|
'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_filter_acl': cmd_acl_name,
|
||||||
'cmd_group': cmd_group_name,
|
'cmd_group': cmd_group_name,
|
||||||
'risk_level': RiskLevelChoices.get_label(command['risk_level']),
|
'risk_level': RiskLevelChoices.get_label(command['risk_level']),
|
||||||
|
@@ -1,25 +1,34 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
<div>
|
<h3>{% trans 'Dear' %}: {{ recipient.name }} [{{ recipient.username }}]</h3>
|
||||||
<b>{% trans 'Asset' %}: </b> <span>{{ asset }}</span>
|
<hr>
|
||||||
<br/>
|
<p>{% trans 'We would like to inform you that a command alert has been triggered with the following details:' %}</p>
|
||||||
<b>{% trans 'User' %}: </b> <span>{{ user }}</span>
|
|
||||||
<br/>
|
<p><strong>{% trans 'Alert details' %}:</strong></p>
|
||||||
<b>{% trans 'Account' %}: </b> <span>{{ account }}</span>
|
<ul>
|
||||||
<br/>
|
<li><strong>{% trans 'User' %}:</strong> [{{ user }}]</li>
|
||||||
<b>{% trans 'Risk level' %}: </b><span>{{ risk_level }}</span>
|
<li><strong>{% trans 'Asset' %}:</strong> [{{ asset }}]</li>
|
||||||
<br/>
|
<li><strong>{% trans 'Account' %}:</strong> [{{ account }}]</li>
|
||||||
<b>{% trans 'Command acl' %}: </b> <span>{{ cmd_filter_acl }}</span>
|
{% if remote_addr %}
|
||||||
<br/>
|
<li><strong>IP:</strong> [{{ remote_addr }}]</li>
|
||||||
<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/>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<b>{% trans 'Organization' %}: </b> <span>{{ org }}</span>
|
{% if login_from %}
|
||||||
<br/>
|
<li><strong>{% trans 'Login from' %}:</strong> [{{ login_from }}]</li>
|
||||||
<b>{% trans 'Command' %}: </b><span>{{ command }}</span>
|
{% endif %}
|
||||||
<br/>
|
{% if protocol %}
|
||||||
</div>
|
<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