mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
862 B
30 lines
862 B
# -*- coding: utf-8 -*-
|
|
#
|
|
|
|
from ..models import AuthBook
|
|
from .base import BaseBackend
|
|
|
|
|
|
class AuthBookBackend(BaseBackend):
|
|
@classmethod
|
|
def filter(cls, username=None, assets=None, latest=True, **kwargs):
|
|
queryset = AuthBook.objects.all()
|
|
if username is not None:
|
|
queryset = queryset.filter(username=username)
|
|
if assets:
|
|
queryset = queryset.filter(asset__in=assets)
|
|
if latest:
|
|
queryset = queryset.latest_version()
|
|
return queryset
|
|
|
|
@classmethod
|
|
def create(cls, **kwargs):
|
|
auth_info = {
|
|
'password': kwargs.pop('password', ''),
|
|
'public_key': kwargs.pop('public_key', ''),
|
|
'private_key': kwargs.pop('private_key', '')
|
|
}
|
|
obj = AuthBook.objects.create(**kwargs)
|
|
obj.set_auth(**auth_info)
|
|
return obj
|