Exemplo n.º 1
0
def grant_access(request):
	'''
	Grant an access to a server on user.
	View Type: Form POST
	'''
	if request.user.groups.filter(name__in=["heimdall-admin", "heimdall"]):
		if request.method == 'POST':
			user = None
			host = None

			if request.POST['username'] != '[[ALL]]':
				user = User.objects.get(username=request.POST['username'])
			else:
				print('TODO: look after demands')

			if request.POST['hostname'] != '[[ALL]]':
				host = Server.objects.get(hostname=request.POST['hostname'])
			else:
				print('TODO: look after demands')

			if request.POST['hostuser'] != '[[ALL]]':
				hostuser = request.POST['hostuser']
			else:
				print('TODO: look after demands')

			request_type = request.POST['type']
			if request_type == 'grant':

				message = None

				if not SshKeys.objects.filter(user=user).exists():
					message = 'No RSA saved on database. Contact user to set his RSA key.'
				elif SshKeys.objects.filter(user=user).count() > 1:
					message = 'More than one RSA saved on database. Contact administrator to set his RSA key.'
				else:
					rsa_key = SshKeys.objects.get(user=user)
					err = Controller.addPermission(user, host, request.POST['hostuser'], rsa_key)

					if Demands.objects.filter(user=user, server=host, hostuser=hostuser).exists():
						demand = Demands.objects.get(user=user, server=host, hostuser=hostuser)
						demand.close_date = datetime.today()
						demand.accepted = True
						demand.markAsIgnore = False
						demand.save()

					if err is None:
						if request.POST['username'] != '[[ALL]]':
							message = 'Permission granted on: ' + host.hostname + ' with ' + hostuser + ' (for the user ' + user.username + ')'
						else:
							message = 'All requested permissions granted'
					else:
						message = err.message

				messages.success(request, message)
			else:
				host = Server.objects.get(hostname=request.POST['hostname'])
				demand = Demands.objects.get(user=user, server=host, hostuser=hostuser)
				demand.close_date = datetime.today()
				demand.accepted = False
				demand.markAsIgnore = False
				demand.save()

				message = 'Permission rejected on: ' + host.hostname + ' with ' + hostuser + ' (for the user ' + user.username + ')'
				messages.success(request, message)
	else:
		messages.success(request, 'You have not the rights to do this action')

	return HttpResponseRedirect(reverse('admin-permissions'))
Exemplo n.º 2
0
def grant_access(request):
    '''
	Grant an access to a server on user.
	View Type: Form POST
	'''
    if request.user.groups.filter(name__in=["heimdall-admin", "heimdall"]):
        if request.method == 'POST':
            user = None
            host = None

            if request.POST['username'] != '[[ALL]]':
                user = User.objects.get(username=request.POST['username'])
            else:
                print('TODO: look after demands')

            if request.POST['hostname'] != '[[ALL]]':
                host = Server.objects.get(hostname=request.POST['hostname'])
            else:
                print('TODO: look after demands')

            if request.POST['hostuser'] != '[[ALL]]':
                hostuser = request.POST['hostuser']
            else:
                print('TODO: look after demands')

            request_type = request.POST['type']
            if request_type == 'grant':

                message = None

                if not SshKeys.objects.filter(user=user).exists():
                    message = 'No RSA saved on database. Contact user to set his RSA key.'
                elif SshKeys.objects.filter(user=user).count() > 1:
                    message = 'More than one RSA saved on database. Contact administrator to set his RSA key.'
                else:
                    rsa_key = SshKeys.objects.get(user=user)
                    err = Controller.addPermission(user, host,
                                                   request.POST['hostuser'],
                                                   rsa_key)

                    if Demands.objects.filter(user=user,
                                              server=host,
                                              hostuser=hostuser).exists():
                        demand = Demands.objects.get(user=user,
                                                     server=host,
                                                     hostuser=hostuser)
                        demand.close_date = datetime.today()
                        demand.accepted = True
                        demand.markAsIgnore = False
                        demand.save()

                    if err is None:
                        if request.POST['username'] != '[[ALL]]':
                            message = 'Permission granted on: ' + host.hostname + ' with ' + hostuser + ' (for the user ' + user.username + ')'
                        else:
                            message = 'All requested permissions granted'
                    else:
                        message = err.message

                messages.success(request, message)
            else:
                host = Server.objects.get(hostname=request.POST['hostname'])
                demand = Demands.objects.get(user=user,
                                             server=host,
                                             hostuser=hostuser)
                demand.close_date = datetime.today()
                demand.accepted = False
                demand.markAsIgnore = False
                demand.save()

                message = 'Permission rejected on: ' + host.hostname + ' with ' + hostuser + ' (for the user ' + user.username + ')'
                messages.success(request, message)
    else:
        messages.success(request, 'You have not the rights to do this action')

    return HttpResponseRedirect(reverse('admin-permissions'))