From 74c1d40daeca4583a7a8b8c57e52248c1cfe5989 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Thu, 20 Aug 2020 22:32:02 +0000 Subject: [PATCH] catch duplicate users --- api/tacticalrmm/accounts/views.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/api/tacticalrmm/accounts/views.py b/api/tacticalrmm/accounts/views.py index f30fddd9..a85d1eb6 100644 --- a/api/tacticalrmm/accounts/views.py +++ b/api/tacticalrmm/accounts/views.py @@ -3,6 +3,7 @@ import pyotp from django.contrib.auth import login from django.conf import settings from django.shortcuts import get_object_or_404 +from django.db import IntegrityError from rest_framework.views import APIView from rest_framework.authtoken.serializers import AuthTokenSerializer @@ -13,6 +14,7 @@ from rest_framework import status from .models import User from agents.models import Agent +from tacticalrmm.utils import notify_error from .serializers import UserSerializer, TOTPSetupSerializer @@ -68,9 +70,16 @@ class GetAddUsers(APIView): def post(self, request): # add new user - user = User.objects.create_user( - request.data["username"], request.data["email"], request.data["password"] - ) + try: + user = User.objects.create_user( + request.data["username"], + request.data["email"], + request.data["password"], + ) + except IntegrityError: + return notify_error( + f"ERROR: User {request.data['username']} already exists!" + ) user.first_name = request.data["first_name"] user.last_name = request.data["last_name"]