added validation to heck if the user is the one allowed to access
This commit is contained in:
parent
b8ca7286f2
commit
1faf46cc1b
1 changed files with 16 additions and 1 deletions
|
@ -1,5 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
|
import os
|
||||||
|
import dotenv
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
|
@ -28,6 +30,7 @@ from django.views.generic import (
|
||||||
)
|
)
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
from rest_framework.renderers import JSONRenderer
|
||||||
from guardian.mixins import PermissionRequiredMixin
|
from guardian.mixins import PermissionRequiredMixin
|
||||||
from oca.pool import WrongIdError
|
from oca.pool import WrongIdError
|
||||||
from stored_messages.api import mark_read
|
from stored_messages.api import mark_read
|
||||||
|
@ -36,7 +39,7 @@ from stored_messages.settings import stored_messages_settings
|
||||||
|
|
||||||
from datacenterlight.cms_models import DCLCalculatorPluginModel
|
from datacenterlight.cms_models import DCLCalculatorPluginModel
|
||||||
from datacenterlight.models import VMTemplate, VMPricing
|
from datacenterlight.models import VMTemplate, VMPricing
|
||||||
from datacenterlight.utils import create_vm, get_cms_integration
|
from datacenterlight.utils import create_vm, get_cms_integration, check_otp, env
|
||||||
from hosting.models import UserCardDetail
|
from hosting.models import UserCardDetail
|
||||||
from membership.models import CustomUser, StripeCustomer
|
from membership.models import CustomUser, StripeCustomer
|
||||||
from opennebula_api.models import OpenNebulaManager
|
from opennebula_api.models import OpenNebulaManager
|
||||||
|
@ -68,9 +71,12 @@ from .models import (
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a \
|
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a \
|
||||||
backend connection error. please try again in a few \
|
backend connection error. please try again in a few \
|
||||||
minutes."
|
minutes."
|
||||||
|
|
||||||
|
|
||||||
decorators = [never_cache]
|
decorators = [never_cache]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1760,11 +1766,20 @@ def forbidden_view(request, exception=None, reason=''):
|
||||||
|
|
||||||
|
|
||||||
class CheckUserVM(APIView):
|
class CheckUserVM(APIView):
|
||||||
|
renderer_classes = (JSONRenderer, )
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
try:
|
try:
|
||||||
email = request.data['email']
|
email = request.data['email']
|
||||||
ip = request.data['ip']
|
ip = request.data['ip']
|
||||||
|
user = request.data['user']
|
||||||
|
realm = request.data['realm']
|
||||||
|
token = request.data['token']
|
||||||
|
if user != env('ACCOUNT_NAME'):
|
||||||
|
return Response("User not allowed", 403)
|
||||||
|
response = check_otp(user, realm, token)
|
||||||
|
if response != 200:
|
||||||
|
return Response('Invalid token', 403)
|
||||||
uservms = VMDetail.objects.filter(user__email=email)
|
uservms = VMDetail.objects.filter(user__email=email)
|
||||||
if len(uservms) > 0:
|
if len(uservms) > 0:
|
||||||
for i in range(len(uservms)):
|
for i in range(len(uservms)):
|
||||||
|
|
Loading…
Reference in a new issue