mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
# ~*~ coding: utf-8 ~*~
 | 
						|
import uuid
 | 
						|
 | 
						|
from rest_framework import generics
 | 
						|
from common.permissions import IsOrgAdmin
 | 
						|
from rest_framework.permissions import IsAuthenticated
 | 
						|
from django.conf import settings
 | 
						|
 | 
						|
from common.permissions import (
 | 
						|
    IsCurrentUserOrReadOnly
 | 
						|
)
 | 
						|
from .. import serializers
 | 
						|
from ..models import User
 | 
						|
from ..utils import send_reset_password_success_mail
 | 
						|
from .mixins import UserQuerysetMixin
 | 
						|
 | 
						|
__all__ = [
 | 
						|
    'UserResetPasswordApi', 'UserResetPKApi',
 | 
						|
    'UserProfileApi', 'UserUpdatePKApi',
 | 
						|
    'UserPasswordApi', 'UserPublicKeyApi'
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
class UserResetPasswordApi(UserQuerysetMixin, generics.UpdateAPIView):
 | 
						|
    queryset = User.objects.all()
 | 
						|
    serializer_class = serializers.UserSerializer
 | 
						|
    permission_classes = (IsOrgAdmin,)
 | 
						|
 | 
						|
    def perform_update(self, serializer):
 | 
						|
        # Note: we are not updating the user object here.
 | 
						|
        # We just do the reset-password stuff.
 | 
						|
        from ..utils import send_reset_password_mail
 | 
						|
        user = self.get_object()
 | 
						|
        user.password_raw = str(uuid.uuid4())
 | 
						|
        user.save()
 | 
						|
        send_reset_password_mail(user)
 | 
						|
 | 
						|
 | 
						|
class UserResetPKApi(UserQuerysetMixin, generics.UpdateAPIView):
 | 
						|
    serializer_class = serializers.UserSerializer
 | 
						|
    permission_classes = (IsOrgAdmin,)
 | 
						|
 | 
						|
    def perform_update(self, serializer):
 | 
						|
        from ..utils import send_reset_ssh_key_mail
 | 
						|
        user = self.get_object()
 | 
						|
        user.public_key = None
 | 
						|
        user.save()
 | 
						|
        send_reset_ssh_key_mail(user)
 | 
						|
 | 
						|
 | 
						|
# 废弃
 | 
						|
class UserUpdatePKApi(UserQuerysetMixin, generics.UpdateAPIView):
 | 
						|
    serializer_class = serializers.UserPKUpdateSerializer
 | 
						|
    permission_classes = (IsCurrentUserOrReadOnly,)
 | 
						|
 | 
						|
    def perform_update(self, serializer):
 | 
						|
        user = self.get_object()
 | 
						|
        user.public_key = serializer.validated_data['public_key']
 | 
						|
        user.save()
 | 
						|
 | 
						|
 | 
						|
class UserProfileApi(generics.RetrieveUpdateAPIView):
 | 
						|
    permission_classes = (IsAuthenticated,)
 | 
						|
    serializer_class = serializers.UserProfileSerializer
 | 
						|
 | 
						|
    def get_object(self):
 | 
						|
        return self.request.user
 | 
						|
 | 
						|
 | 
						|
class UserPasswordApi(generics.RetrieveUpdateAPIView):
 | 
						|
    permission_classes = (IsAuthenticated,)
 | 
						|
    serializer_class = serializers.UserUpdatePasswordSerializer
 | 
						|
 | 
						|
    def get_object(self):
 | 
						|
        return self.request.user
 | 
						|
 | 
						|
 | 
						|
class UserPublicKeyApi(generics.RetrieveUpdateAPIView):
 | 
						|
    permission_classes = (IsAuthenticated,)
 | 
						|
    serializer_class = serializers.UserUpdatePublicKeySerializer
 | 
						|
 | 
						|
    def get_object(self):
 | 
						|
        return self.request.user
 | 
						|
 | 
						|
    def perform_update(self, serializer):
 | 
						|
        super().perform_update(serializer)
 | 
						|
        send_reset_password_success_mail(self.request, self.get_object())
 |