mirror of https://github.com/jumpserver/jumpserver
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from django.utils.translation import gettext_lazy as _
|
|
from rest_framework import serializers
|
|
|
|
from audits.const import LoginTypeChoices
|
|
from common.serializers.fields import LabeledChoiceField, ObjectRelatedField
|
|
from users.models import User
|
|
from ..models import UserSession
|
|
|
|
|
|
class UserSessionSerializer(serializers.ModelSerializer):
|
|
type = LabeledChoiceField(choices=LoginTypeChoices.choices, label=_("Type"))
|
|
user = ObjectRelatedField(required=False, queryset=User.objects, label=_('User'))
|
|
is_current_user_session = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = UserSession
|
|
fields_mini = ['id']
|
|
fields_small = fields_mini + [
|
|
'type', 'ip', 'city', 'user_agent', 'user', 'is_current_user_session',
|
|
'backend', 'backend_display', 'date_created', 'date_expired'
|
|
]
|
|
fields = fields_small
|
|
extra_kwargs = {
|
|
"backend_display": {"label": _("Authentication backend")},
|
|
}
|
|
|
|
def get_is_current_user_session(self, obj):
|
|
request = self.context.get('request')
|
|
if not request:
|
|
return False
|
|
return request.session.session_key == obj.key
|
|
|