Bläddra i källkod

user now can change his email and password

Roberto Berto 4 år sedan
förälder
incheckning
f21f4b6e7c

+ 1 - 0
README.md

@@ -81,6 +81,7 @@ http://127.0.0.1:8000/
 - [ ] Discussion VyControl at VyOS forum https://forum.vyos.io/t/vycenter-alpha-stage-announcement-vyos-web-interface/5221/4
 
 # changelog
+- [x] change email/change password user profile
 - [x] edit/add/delete interfaces
 - [x] lost password recovery using external SMTP server
 - [x] NTP servers add/list/delete

+ 46 - 0
vycontrol/accounts/templates/accounts/profile.html

@@ -0,0 +1,46 @@
+{% extends "base.html" %}
+
+{% block header_title %}Profile{% endblock %}
+{% block section_title %}Profile{% endblock %}
+
+{% block debug %}
+{{ user }}
+{% endblock %}
+
+
+{% block content %}
+
+
+<form method="post" action="{% url 'accounts:accounts-profile' %}">
+{% csrf_token %}
+<table width="100%" border="1">
+    <tr>
+        <th width="50%">username</th>
+        <td>{{ username }}</td>
+    </tr>
+    <tr>
+        <th width="50%">email</th>
+        <td><input type="text" name="email" id="email" value="{{ user.email }}"></td>
+    </tr>
+</table>
+
+<h2>Change password</h2>
+<table width="100%" border="1">
+    <tr>
+        <th width="50%">password</th>
+        <td><input type="password" name="pass1" id="pass1"></td>
+    </tr>
+    <tr>
+        <th width="50%">confirm</th>
+        <td><input type="password" name="pass2" id="pass2"></td>
+    </tr>
+</table>
+
+<input type="submit" value="update profile">
+
+    
+</form>
+
+
+
+{% endblock %}

+ 1 - 1
vycontrol/accounts/urls.py

@@ -20,7 +20,7 @@ app_name = 'accounts'
 
 
 urlpatterns = [
-   path('', views.index, name='accounts-index'),
+   path('', views.profile, name='accounts-profile'),
    # path('', include('django.contrib.auth.urls', name='vauth-login')
 ]
 

+ 51 - 0
vycontrol/accounts/views.py

@@ -11,7 +11,16 @@ from django.urls import reverse
 from django.contrib.auth.models import User
 
 import vyos
+from perms import is_authenticated
+import perms
+import vycontrol_vyos_api as vapi
+from libs.vycontrol_validators import *
+import vycontrol_messages as vmsg
 
+from config.models import Instance
+
+import pprint
+import validators
 
 
 
@@ -36,3 +45,45 @@ def index(request):
         'users_admin': users_admin.all()
     }   
     return HttpResponse(template.render(context, request))
+
+
+
+@is_authenticated    
+def profile(request):
+    all_instances = vyos.instance_getall()
+    is_superuser = perms.get_is_superuser(request.user)
+    hostname_default = vyos.get_hostname_prefered(request)
+    msg = vmsg.msg()
+
+    user = User.objects.get(
+        username=request.user,
+        is_active=True
+    )
+    
+    if request.POST.get('email', None) != None:
+        email_new = request.POST.get('email').strip()
+        if validators.email(email_new):
+            user.email = email_new
+            user.save()
+    
+    if request.POST.get('pass1', None) != None and request.POST.get('pass2', None) != None:
+        if request.POST.get('pass1') == request.POST.get('pass2'):
+            pass_new = request.POST.get('pass1').strip()
+            if pass_new != '':
+                user.set_password(pass_new)
+                user.save()
+
+
+
+    template = loader.get_template('accounts/profile.html')
+    context = { 
+        'instances':            all_instances,
+        'hostname_default':     hostname_default,
+        'username':             request.user,      
+        'is_superuser':         is_superuser, 
+        'msg':                  msg.get_all(),
+        'user':                 user,
+
+
+    }   
+    return HttpResponse(template.render(context, request))

+ 1 - 1
vycontrol/config/views.py

@@ -107,7 +107,7 @@ def users_list(request):
 
     user_groups = {}
     for user in users:
-        print(user.email)
+        #print(user.email)
         user_groups_list = user.groups.all()
         if len(user_groups_list) > 0:
             user_groups[str(user)] = str(user_groups_list[0])

+ 1 - 1
vycontrol/vycontrol/templates/base.html

@@ -46,7 +46,7 @@
               </select>
             
 
-              <span id="menu-username">{% block username %}{% endblock %}</span> <span id="vycontrol-config-menu"> <a href="{% url 'accounts-logout' %}">Logout</a></span>
+              <span id="menu-username"><a href="{%  url 'accounts:accounts-profile' %}">{% block username %}{% endblock %}</a></span> <span id="vycontrol-config-menu"> <a href="{% url 'accounts-logout' %}">Logout</a></span>
 
 
           </p>

+ 3 - 2
vycontrol/vycontrol/urls.py

@@ -28,13 +28,14 @@ from . import views
 
 from django.contrib.auth import views as auth_views
 from django.urls import path, re_path
-
+from accounts import views as accounts_views
 
 
 app_name = 'vycontrol'
 
 urlpatterns = [
-    path('', include('accounts.urls'), name="main-page"),
+    path('', accounts_views.index, name='main-page'),
+    path('accounts/', include('accounts.urls')),
     path('config/', include('config.urls')),
     path('dashboard/', include('dashboard.urls')),
     #path('', views.vycontrol_login, name='vycontrol-login'),