mirror of https://github.com/jumpserver/jumpserver
feat: 协作分享增加读写控制
parent
4c5e47cb99
commit
789eb0cf36
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
|
||||
from django.db.models import TextChoices
|
||||
from django.db.models import TextChoices, IntegerChoices
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
|
@ -65,3 +65,8 @@ class SessionType(TextChoices):
|
|||
normal = 'normal', _('Normal')
|
||||
tunnel = 'tunnel', _('Tunnel')
|
||||
command = 'command', _('Command')
|
||||
|
||||
|
||||
class ActionPermission(IntegerChoices):
|
||||
read_only = 0, _('Read Only')
|
||||
writable = 1, _('Writable')
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.17 on 2023-04-03 04:58
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('terminal', '0059_session_account_id'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='sessionsharing',
|
||||
name='action_permission',
|
||||
field=models.IntegerField(default=1, verbose_name='Action permission'),
|
||||
),
|
||||
]
|
|
@ -31,6 +31,10 @@ class SessionSharing(JMSBaseModel, OrgModelMixin):
|
|||
)
|
||||
users = models.TextField(blank=True, verbose_name=_("User"))
|
||||
|
||||
action_permission = models.IntegerField(
|
||||
default=1, verbose_name=_('Action permission')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ('-date_created',)
|
||||
verbose_name = _('Session sharing')
|
||||
|
@ -142,3 +146,6 @@ class SessionJoinRecord(JMSBaseModel, OrgModelMixin):
|
|||
self.date_left = timezone.now()
|
||||
self.is_finished = True
|
||||
self.save()
|
||||
@property
|
||||
def action_permission(self):
|
||||
return self.sharing.action_permission
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
from rest_framework import serializers
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
|
||||
from common.utils.random import random_string
|
||||
from rest_framework import serializers
|
||||
|
||||
from common.serializers.fields import LabeledChoiceField
|
||||
from common.utils.common import pretty_string
|
||||
from common.utils.random import random_string
|
||||
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
|
||||
from ..const import ActionPermission
|
||||
from ..models import SessionSharing, SessionJoinRecord
|
||||
|
||||
__all__ = ['SessionSharingSerializer', 'SessionJoinRecordSerializer']
|
||||
|
@ -12,13 +15,17 @@ class SessionSharingSerializer(OrgResourceModelSerializerMixin):
|
|||
users = serializers.ListSerializer(
|
||||
child=serializers.CharField(max_length=36), allow_null=True, write_only=True
|
||||
)
|
||||
action_permission = LabeledChoiceField(
|
||||
default=1, choices=ActionPermission.choices, write_only=True, label=_('Action permission')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = SessionSharing
|
||||
fields_mini = ['id']
|
||||
fields_small = fields_mini + [
|
||||
'verify_code', 'is_active', 'expired_time', 'created_by',
|
||||
'date_created', 'date_updated', 'users', 'users_display'
|
||||
'date_created', 'date_updated', 'users', 'users_display',
|
||||
'action_permission'
|
||||
]
|
||||
fields_fk = ['session', 'creator']
|
||||
fields = fields_small + fields_fk
|
||||
|
@ -40,13 +47,17 @@ class SessionSharingSerializer(OrgResourceModelSerializerMixin):
|
|||
|
||||
|
||||
class SessionJoinRecordSerializer(OrgResourceModelSerializerMixin):
|
||||
action_permission = LabeledChoiceField(
|
||||
choices=ActionPermission.choices, read_only=True, label=_('Action permission')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = SessionJoinRecord
|
||||
fields_mini = ['id']
|
||||
fields_small = fields_mini + [
|
||||
'joiner_display', 'verify_code', 'date_joined', 'date_left',
|
||||
'remote_addr', 'login_from', 'is_success', 'reason', 'is_finished',
|
||||
'created_by', 'date_created', 'date_updated'
|
||||
'created_by', 'date_created', 'date_updated', 'action_permission'
|
||||
]
|
||||
fields_fk = ['session', 'sharing', 'joiner']
|
||||
fields = fields_small + fields_fk
|
||||
|
|
Loading…
Reference in New Issue