feat: Set the default expiration days for adding user and asset permissions

pull/15423/head
ewall555 2025-05-09 17:21:27 +08:00 committed by 老广
parent f4f74909a8
commit 48239b0c63
6 changed files with 25 additions and 5 deletions

View File

@ -51,6 +51,19 @@ def date_expired_default():
years = 70 years = 70
return timezone.now() + timezone.timedelta(days=365 * years) return timezone.now() + timezone.timedelta(days=365 * years)
def user_date_expired_default():
try:
days = int(settings.USER_DEFAULT_EXPIRED_DAYS)
except TypeError:
days = 25550
return timezone.now() + timezone.timedelta(days=days)
def asset_permission_date_expired_default():
try:
days = int(settings.ASSET_PERMISSION_DEFAULT_EXPIRED_DAYS)
except TypeError:
days = 25550
return timezone.now() + timezone.timedelta(days=days)
def union_queryset(*args, base_queryset=None): def union_queryset(*args, base_queryset=None):
if len(args) == 1: if len(args) == 1:

View File

@ -229,6 +229,8 @@ class Config(dict):
'TOKEN_EXPIRATION': 3600 * 24, 'TOKEN_EXPIRATION': 3600 * 24,
'DEFAULT_EXPIRED_YEARS': 70, 'DEFAULT_EXPIRED_YEARS': 70,
'USER_DEFAULT_EXPIRED_DAYS': 25550,
'ASSET_PERMISSION_DEFAULT_EXPIRED_DAYS': 25550,
'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_DOMAIN': None,
'CSRF_COOKIE_DOMAIN': None, 'CSRF_COOKIE_DOMAIN': None,
'SESSION_COOKIE_NAME_PREFIX': None, 'SESSION_COOKIE_NAME_PREFIX': None,

View File

@ -117,7 +117,9 @@ EMAIL_CUSTOM_USER_CREATED_BODY = CONFIG.EMAIL_CUSTOM_USER_CREATED_BODY
EMAIL_CUSTOM_USER_CREATED_SIGNATURE = CONFIG.EMAIL_CUSTOM_USER_CREATED_SIGNATURE EMAIL_CUSTOM_USER_CREATED_SIGNATURE = CONFIG.EMAIL_CUSTOM_USER_CREATED_SIGNATURE
DISPLAY_PER_PAGE = CONFIG.DISPLAY_PER_PAGE DISPLAY_PER_PAGE = CONFIG.DISPLAY_PER_PAGE
DEFAULT_EXPIRED_YEARS = 70 DEFAULT_EXPIRED_YEARS = CONFIG.DEFAULT_EXPIRED_YEARS
USER_DEFAULT_EXPIRED_DAYS = CONFIG.USER_DEFAULT_EXPIRED_DAYS
ASSET_PERMISSION_DEFAULT_EXPIRED_DAYS = CONFIG.ASSET_PERMISSION_DEFAULT_EXPIRED_DAYS
USER_GUIDE_URL = CONFIG.USER_GUIDE_URL USER_GUIDE_URL = CONFIG.USER_GUIDE_URL
HTTP_LISTEN_PORT = CONFIG.HTTP_LISTEN_PORT HTTP_LISTEN_PORT = CONFIG.HTTP_LISTEN_PORT
WS_LISTEN_PORT = CONFIG.WS_LISTEN_PORT WS_LISTEN_PORT = CONFIG.WS_LISTEN_PORT

View File

@ -8,7 +8,7 @@ from django.utils.translation import gettext_lazy as _
from accounts.const import AliasAccount from accounts.const import AliasAccount
from accounts.models import Account from accounts.models import Account
from assets.models import Asset from assets.models import Asset
from common.utils import date_expired_default, lazyproperty from common.utils import asset_permission_date_expired_default, lazyproperty
from common.utils.timezone import local_now from common.utils.timezone import local_now
from labels.mixins import LabeledMixin from labels.mixins import LabeledMixin
from orgs.mixins.models import JMSOrgBaseModel from orgs.mixins.models import JMSOrgBaseModel
@ -77,7 +77,7 @@ class AssetPermission(LabeledMixin, JMSOrgBaseModel):
actions = models.IntegerField(default=ActionChoices.connect, verbose_name=_("Actions")) actions = models.IntegerField(default=ActionChoices.connect, verbose_name=_("Actions"))
date_start = models.DateTimeField(default=timezone.now, db_index=True, verbose_name=_("Date start")) date_start = models.DateTimeField(default=timezone.now, db_index=True, verbose_name=_("Date start"))
date_expired = models.DateTimeField( date_expired = models.DateTimeField(
default=date_expired_default, db_index=True, verbose_name=_('Date expired') default=asset_permission_date_expired_default, db_index=True, verbose_name=_('Date expired')
) )
is_active = models.BooleanField(default=True, verbose_name=_('Active')) is_active = models.BooleanField(default=True, verbose_name=_('Active'))
from_ticket = models.BooleanField(default=False, verbose_name=_('From ticket')) from_ticket = models.BooleanField(default=False, verbose_name=_('From ticket'))

View File

@ -64,6 +64,9 @@ class PrivateSettingSerializer(PublicSettingSerializer):
GPT_MODEL = serializers.CharField() GPT_MODEL = serializers.CharField()
FILE_UPLOAD_SIZE_LIMIT_MB = serializers.IntegerField() FILE_UPLOAD_SIZE_LIMIT_MB = serializers.IntegerField()
DEFAULT_EXPIRED_YEARS = serializers.IntegerField()
USER_DEFAULT_EXPIRED_DAYS = serializers.IntegerField()
ASSET_PERMISSION_DEFAULT_EXPIRED_DAYS = serializers.IntegerField()
class ServerInfoSerializer(serializers.Serializer): class ServerInfoSerializer(serializers.Serializer):
CURRENT_TIME = serializers.DateTimeField() CURRENT_TIME = serializers.DateTimeField()

View File

@ -22,7 +22,7 @@ from rest_framework.exceptions import PermissionDenied
from common.db import fields, models as jms_models from common.db import fields, models as jms_models
from common.utils import ( from common.utils import (
date_expired_default, get_logger, lazyproperty, user_date_expired_default, get_logger, lazyproperty,
random_string, bulk_create_with_signal random_string, bulk_create_with_signal
) )
from labels.mixins import LabeledMixin from labels.mixins import LabeledMixin
@ -868,7 +868,7 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, LabeledMixin, JSONFilterM
) )
is_first_login = models.BooleanField(default=True, verbose_name=_('Is first login')) is_first_login = models.BooleanField(default=True, verbose_name=_('Is first login'))
date_expired = models.DateTimeField( date_expired = models.DateTimeField(
default=date_expired_default, blank=True, null=True, default=user_date_expired_default, blank=True, null=True,
db_index=True, verbose_name=_('Date expired') db_index=True, verbose_name=_('Date expired')
) )
created_by = models.CharField(max_length=30, default='', blank=True, verbose_name=_('Created by')) created_by = models.CharField(max_length=30, default='', blank=True, verbose_name=_('Created by'))