فهرست منبع

add create user

Roberto Berto 5 سال پیش
والد
کامیت
9cafec954a

+ 23 - 23
README.md

@@ -21,31 +21,31 @@ It will work with a single VyoS server or to multiple VyOS servers, so datacente
 * basic authentication - use django admin to create superuser than http://127.0.0.1:8000/admin/login/?next=/admin/ to create a new user, after that you can use VyControl
 
 ### auth module
-* login - done
-* logout - done
-* lost password - todo
-* create users - admin only todo
-* associate users to groups - admin only done
-* associate groups to vyos servers - admin only todo
+* login - **done**
+* logout - **done**
+* lost password - *todo*
+* create users - admin only *todo*
+* associate users to groups - admin only **done**
+* associate groups to vyos servers - admin only *todo*
 * allow commum users to add vyos servers?
-* start page to create initial superadmin user on new installations - done
+* start page to create initial superadmin user on new installations - **done**
 
 ### interfaces module
 * list interfaces - alpha
 * show interface - alpha
-* unset/set firewall interface - todo
-* change interface parameters - todo
+* unset/set firewall interface - *todo*
+* change interface parameters - *todo*
 
 ### firewall module
-* basic firewall rules creation proof of concept - done
-* basic list firewall rules - done
-* basic add firewall rules - done
-* basic edit firewall rules - done
-* basic firewall create - done
-* change firewall rules order - todo
-* delete firewall rules - todo
-
-## other modules - todo
+* basic firewall rules creation proof of concept - **done**
+* basic list firewall rules - **done**
+* basic add firewall rules - **done**
+* basic edit firewall rules - **done**
+* basic firewall create - **done**
+* change firewall rules order - *todo*
+* delete firewall rules - *todo*
+
+## other modules - *todo*
 * ospf
 * bgp
 * ipsec
@@ -58,11 +58,11 @@ It will work with a single VyoS server or to multiple VyOS servers, so datacente
 * static routes
 
 ### config module
-* VyControl users crud - todo
-* vyos instance using database - done
-* full vyos instances crud - todo
-* add new VyoS instances test connection while adding - todo
-* add new VyoS instances test connection all servers crontab - todo
+* VyControl users crud - *todo*
+* vyos instance using database - **done**
+* full vyos instances crud - *todo*
+* add new VyoS instances test connection while adding - *todo*
+* add new VyoS instances test connection all servers crontab - *todo*
 * associate groups to VyOS instances
 
 ### known issues

+ 8 - 0
vycenter/accounts/templates/registration/login.html

@@ -37,10 +37,18 @@
 </table>
 
 <input type="submit" value="login">
+
+    
 <input type="hidden" name="next" value="{% if next %}{{ next }}{% else %}{% url 'interface:interface-list' %}{% endif %}">
+
+
+    
 </form>
 
+<div id="lostpasswd">
 {# Assumes you setup the password_reset view in your URLconf #}
 <p><a href=" url 'vauth-reset' ">Lost password?</a></p>
+</div>
+
 
 {% endblock %}

+ 9 - 12
vycenter/accounts/views.py

@@ -5,7 +5,6 @@ from django.shortcuts import redirect
 from django.contrib.auth import authenticate
 from django.views.generic.base import TemplateView
 from django.conf import settings
-from django.urls import reverse
 
 
 from django.contrib.auth.models import User
@@ -21,19 +20,17 @@ def index(request):
         is_superuser=True
     )
 
-    if not request.user.is_authenticated:
-
-
-
-        if users_admin.count() == 0:
-            if 'username' in request.POST and 'password' in request.POST:
-                user = User.objects.create_superuser(username=request.POST['username'], password=request.POST['password'])
-                user.save()
-                return redirect('registration-login')
+    if users_admin.count() > 0:
+        if request.user.is_authenticated:
+            return redirect('interface:interface-list')
         else:
             return redirect('registration-login')
-
- 
+    else:
+        if 'username' in request.POST and 'password' in request.POST:
+            user = User.objects.create_superuser(username=request.POST['username'], password=request.POST['password'])
+            user.save()
+            return redirect('registration-login')
+         
     template = loader.get_template('registration/start.html')
     context = { 
         'users_admin': users_admin.all()

+ 1 - 0
vycenter/config/urls.py

@@ -10,6 +10,7 @@ urlpatterns = [
     path('users-list', views.users_list, name='users-list'),
     path('groups-list', views.groups_list, name='groups-list'),
     path('group-add', views.group_add, name='group-add'),
+    path('user-add', views.user_add, name='user-add'),
     path('instance-add', views.instance_add, name='instance-add'),
     path('instance-conntry/<str:hostname>', views.instance_conntry, name='instance-conntry'),
     path('instance-default/<str:hostname>', views.instance_default, name='instance-default'),

+ 62 - 0
vycenter/config/views.py

@@ -221,8 +221,70 @@ def group_add(request):
         'instances': all_instances,
         'error_message' : error_message
     }   
+    return HttpResponse(template.render(context, request)) 
+
+    
+def user_add(request):
+    if not request.user.is_authenticated:
+        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
+        
+    #interfaces = vyos.get_interfaces()
+    all_instances = vyos.instance_getall()
+    hostname_default = vyos.get_hostname_prefered(request)
+
+    error_message = None
+
+    count = 0
+    name = ''
+    if 'name' in request.POST:
+        name = request.POST['name']
+        count += 1
+
+    username = ''
+    if 'username' in request.POST:
+        username = request.POST['username']
+        count += 1
+
+    password = ''
+    if 'password' in request.POST:
+        password = request.POST['password']
+        count += 1
+
+    email = ''
+    if 'email' in request.POST:
+        email = request.POST['email']                        
+        count += 1
+
+    if count >= 4:
+        try:
+            user = User.objects.get(username=username)       
+            error_message = 'Username already exists'
+        except User.DoesNotExist:
+            user_create = User(
+                username=username,
+                email=email,
+                password=password,
+                last_name=name
+            )
+            user_create.save()
+            return redirect('config:users-list')
+
+
+    template = loader.get_template('config/user_add.html')
+    context = { 
+        'hostname_default': hostname_default,
+        'instances': all_instances,
+        'error_message' : error_message,
+        'name' : name,
+        'username' : username,
+        'password' : password,
+        'email' : email,
+
+    }   
     return HttpResponse(template.render(context, request))    
 
+
+
 def instance_conntry(request, hostname):
     if not request.user.is_authenticated:
         return redirect('%s?next=%s' % (reverse('registration-login'), request.path))

+ 4 - 0
vycenter/s/main.css

@@ -104,3 +104,7 @@ input[type=submit] {
 .separe-form {
   margin-top: 30px;      
 }
+
+#lostpasswd {
+  margin-top: 10px;
+}

+ 2 - 1
vycenter/vycenter/templates/base.html

@@ -8,7 +8,7 @@
 
     <!-- Bootstrap CSS -->
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
-    <link rel="stylesheet" href="{% static "main.css" %}">
+    <link rel="stylesheet" href="{% static "main.css" %}?x1">
 
     <title>{% block header_title %}{% endblock %} - VyControl</title>
   </head>
@@ -103,6 +103,7 @@
     <li><a href="{% url 'config:instance-add' %}">Add new instance</a></li>
     <li><a href="{% url 'config:instances' %}">List instances</a></li>
     <li><a href="{% url 'config:users-list' %}">List users</a></li>
+    <li><a href="{% url 'config:user-add' %}">Add new user</a></li>
     <li><a href="{% url 'config:groups-list' %}">List groups</a></li>
     <li><a href="{% url 'config:group-add' %}">Add new group</a></li>
 

+ 1 - 1
vycenter/vycenter/templates/base_not_logged.html

@@ -8,7 +8,7 @@
 
     <!-- Bootstrap CSS -->
     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
-    <link rel="stylesheet" href="{% static "main.css" %}">
+    <link rel="stylesheet" href="{% static "main.css" %}?x1">
 
     <title>{% block header_title %}{% endblock %} - VyControl</title>