Skip to content

Commit 5f168b3

Browse files
committed
Credential System
1 parent 18697ff commit 5f168b3

18 files changed

Lines changed: 305 additions & 15 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from backend.DAL.models.device import DeviceCredential
2+
from django.db.models import Q
3+
4+
5+
def getAllDeviceCredential():
6+
return DeviceCredential.objects.all()
7+
8+
def getDeviceCredential(id):
9+
return DeviceCredential.objects.get(id=int(id))
10+
11+
def createCredential(title, username, password):
12+
credential = DeviceCredential(
13+
title=title,
14+
username=username,
15+
password=password,
16+
)
17+
credential.save()
18+
return True
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from django.contrib import admin
2+
from backend.DAL.models.device import *
3+
4+
class DeviceCredentialAdmin(admin.ModelAdmin):
5+
list_display = ('id','title')
6+
7+
admin.site.register(DeviceCredential, DeviceCredentialAdmin)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from django.db import models
2+
3+
4+
class DeviceCredential(models.Model):
5+
title = models.CharField("Title", max_length=60)
6+
username = models.CharField("Username", max_length=30)
7+
password = models.CharField("Password", max_length=30)
8+
9+
10+
def __str__(self):
11+
return self.title

WebApi/backend/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
from backend.DAL.interfaces import Iuser
44
from backend.DAL.interfaces import Ilog
5+
from backend.DAL.interfaces import Idevice
56

WebApi/backend/forms.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ class CustomUserCreationForm(UserCreationForm):
99

1010
class Meta:
1111
model = get_user_model()
12-
fields = ['username', 'email','first_name','last_name']
12+
fields = ['username', 'email','first_name','last_name', 'is_staff']
1313

1414

1515
class CustomUserChangeForm(UserChangeForm):
1616

1717
class Meta:
1818
model = get_user_model()
19-
fields = ['username','email', 'first_name','last_name']
19+
fields = ['username','email', 'first_name','last_name', 'is_staff']

WebApi/backend/migrations/0001_initial.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ def create_admin_user(apps, schema_editor):
1313
if not User.objects.filter(is_staff=True).exists():
1414
User.objects.create_superuser(admin_username, '', admin_password)
1515

16-
1716
class Migration(migrations.Migration):
1817

1918
initial = True
@@ -65,5 +64,14 @@ class Migration(migrations.Migration):
6564
('objects', django.contrib.auth.models.UserManager()),
6665
],
6766
),
67+
migrations.CreateModel(
68+
name='DeviceCredential',
69+
fields=[
70+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
71+
('title', models.CharField(max_length=60, verbose_name='Title')),
72+
('username', models.CharField(max_length=30, verbose_name='Username')),
73+
('password', models.CharField(max_length=30, verbose_name='Password')),
74+
],
75+
),
6876
migrations.RunPython(create_admin_user),
6977
]

WebApi/backend/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from django.db import models
22
from backend.DAL.models import user
33
from backend.DAL.models.log import *
4+
from backend.DAL.models.device import *

WebApi/backend/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@
33
from .views.ansible import AnsibleView
44
from .views.log import LogView
55
from .views.user import *
6+
from .views.credential import *
67

78
urlpatterns = [
89
path('', HomeView.as_view(), name='home'),
910
path('ansible/', AnsibleView.as_view(), name='ansible'),
11+
path('ansible/credential/', CredentialPageView.as_view(), name='credentialList'),
12+
path('ansible/credential/create/', CreateCredentialView.as_view(), name='credentialCreate'),
13+
path('ansible/credential/<int:pk>/edit/', UpdateCredentialView.as_view(), name='credentialEdit'),
14+
path('ansible/credential/<int:pk>/delete/', DeleteCredentialView.as_view(), name='credentialDelete'),
1015
path('log/', LogView.as_view(), name='log'),
1116
path('user/list/', UserPageView.as_view(), name='userList'),
1217
path('user/create/', CreateUserView.as_view(), name='userCreate'),

WebApi/backend/views/ansible.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
from django.contrib.auth.mixins import LoginRequiredMixin
44
from django.views.generic import TemplateView
55
from backend.DAL.DAO.logDAO import *
6+
from backend.DAL.DAO.deviceDAO import *
67
from backend.integrations.ansible import *
78

89
class AnsibleView(LoginRequiredMixin, TemplateView):
910
template_name = 'ansible.html'
1011
ansible = AnsibleSwitchConnector()
1112

13+
def get_context_data(self, **kwargs):
14+
context = super().get_context_data(**kwargs)
15+
credentials = getAllDeviceCredential()
16+
context['credentials'] = credentials
17+
return context
18+
1219
def execute_command(self, playbook, host, switch, username, password):
1320
# Adicionar verificações de segurança aqui
1421
try:
@@ -25,7 +32,11 @@ def post(self, request ,*args, **kwargs):
2532
switch = request.POST.get('switch')
2633
username = request.POST.get('username')
2734
password = request.POST.get('password')
28-
output = self.execute_command(playbook, host, switch, username, password)
35+
if request.POST.get('credential') == "none":
36+
output = self.execute_command(playbook, host, switch, username, password)
37+
else:
38+
credential = getDeviceCredential(request.POST.get('credential'))
39+
output = self.execute_command(playbook, host, switch, credential.username, credential.password)
2940
createLog(
3041
user=f"{request.user}",
3142
date=datetime.now().strftime("%d-%m-%Y"),
@@ -35,4 +46,7 @@ def post(self, request ,*args, **kwargs):
3546
host=host,
3647
output=output,
3748
)
38-
return self.render_to_response(self.get_context_data(output = output))
49+
return self.render_to_response(self.get_context_data(output = output))
50+
51+
52+

WebApi/backend/views/credential.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
from django.shortcuts import render
2+
from django.views.generic import TemplateView, UpdateView, DeleteView
3+
from backend.DAL.DAO.deviceDAO import *
4+
from backend.views.utils import AdminRequired
5+
from backend.DAL.models.device import DeviceCredential
6+
from django.urls import reverse_lazy
7+
8+
9+
class CredentialPageView(AdminRequired, TemplateView):
10+
template_name = 'credential.html'
11+
12+
13+
def get_context_data(self, **kwargs):
14+
context = super().get_context_data(**kwargs)
15+
context['credentials'] = getAllDeviceCredential()
16+
context['settings'] = 0
17+
context['page'] = "Credentials"
18+
return context
19+
20+
21+
class CreateCredentialView(AdminRequired, TemplateView):
22+
template_name = "credential.html"
23+
24+
def get_context_data(self, **kwargs):
25+
context = super().get_context_data(**kwargs)
26+
context['settings'] = 1
27+
context['page'] = "Create Credentials"
28+
return context
29+
30+
def post(self, request ,*args, **kwargs):
31+
createCredential(
32+
title = request.POST.get('title'),
33+
username = request.POST.get('username'),
34+
password = request.POST.get('password'),
35+
)
36+
result = "The credentials have been successfully upgraded."
37+
return render(request, self.template_name, {'result': result, 'sucess': 1})
38+
39+
40+
class UpdateCredentialView(AdminRequired, UpdateView):
41+
template_name = 'credential.html'
42+
model = DeviceCredential
43+
fields = ['title','username','password']
44+
success_url = reverse_lazy("credentialList")
45+
46+
def get_context_data(self, **kwargs):
47+
context = super().get_context_data(**kwargs)
48+
context['settings'] = 2
49+
context['page'] = "Manage Credentials"
50+
return context
51+
52+
53+
class DeleteCredentialView(AdminRequired, DeleteView):
54+
template_name = 'credential.html'
55+
model = DeviceCredential
56+
success_url = reverse_lazy("credentialList")
57+
58+
def get_context_data(self, **kwargs):
59+
context = super().get_context_data(**kwargs)
60+
context['settings'] = 3
61+
context['page'] = "Delete Credentials"
62+
return context

0 commit comments

Comments
 (0)