mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-10 11:49:10 +00:00
服务账号注册机制更改 (#2079)
* [Update] 服务账号注册 * [Update] 修改settings配置 * [Update] 修改settings * [Update] 整理terminal api * [Update] 修改terminal api * [Update] 修改terminal注册机制
This commit is contained in:
@@ -2,19 +2,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import uuid
|
||||
import base64
|
||||
from collections import OrderedDict
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.hashers import make_password
|
||||
from django.contrib.auth.models import AbstractUser, UserManager
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.core import signing
|
||||
from django.core.cache import cache
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils import timezone
|
||||
from django.shortcuts import reverse
|
||||
|
||||
from common.utils import get_signer, date_expired_default
|
||||
from orgs.mixins import OrgManager
|
||||
from orgs.utils import current_org
|
||||
|
||||
|
||||
@@ -274,15 +275,38 @@ class User(AbstractUser):
|
||||
token = PrivateToken.objects.create(user=self)
|
||||
return token.key
|
||||
|
||||
def refresh_private_token(self):
|
||||
from .authentication import PrivateToken
|
||||
PrivateToken.objects.filter(user=self).delete()
|
||||
return PrivateToken.objects.create(user=self)
|
||||
|
||||
def create_bearer_token(self, request=None):
|
||||
expiration = settings.TOKEN_EXPIRATION or 3600
|
||||
if request:
|
||||
remote_addr = request.META.get('REMOTE_ADDR', '')
|
||||
else:
|
||||
remote_addr = '0.0.0.0'
|
||||
if not isinstance(remote_addr, bytes):
|
||||
remote_addr = remote_addr.encode("utf-8")
|
||||
remote_addr = base64.b16encode(remote_addr) # .replace(b'=', '')
|
||||
token = cache.get('%s_%s' % (self.id, remote_addr))
|
||||
if not token:
|
||||
token = uuid.uuid4().hex
|
||||
cache.set(token, self.id, expiration)
|
||||
cache.set('%s_%s' % (self.id, remote_addr), token, expiration)
|
||||
return token
|
||||
|
||||
def refresh_bearer_token(self, token):
|
||||
pass
|
||||
|
||||
def create_access_key(self):
|
||||
from . import AccessKey
|
||||
access_key = AccessKey.objects.create(user=self)
|
||||
return access_key
|
||||
|
||||
def refresh_private_token(self):
|
||||
from .authentication import PrivateToken
|
||||
PrivateToken.objects.filter(user=self).delete()
|
||||
return PrivateToken.objects.create(user=self)
|
||||
@property
|
||||
def access_key(self):
|
||||
return self.access_keys.first()
|
||||
|
||||
def is_member_of(self, user_group):
|
||||
if user_group in self.groups.all():
|
||||
@@ -345,7 +369,8 @@ class User(AbstractUser):
|
||||
'phone': self.phone,
|
||||
'otp_level': self.otp_level,
|
||||
'comment': self.comment,
|
||||
'date_expired': self.date_expired.strftime('%Y-%m-%d %H:%M:%S') if self.date_expired is not None else None
|
||||
'date_expired': self.date_expired.strftime('%Y-%m-%d %H:%M:%S') \
|
||||
if self.date_expired is not None else None
|
||||
})
|
||||
|
||||
@classmethod
|
||||
|
Reference in New Issue
Block a user