Add profile drop down and clean up sidebar
This commit is contained in:
parent
525a2a9378
commit
7a153c46e6
6 changed files with 50 additions and 111 deletions
|
@ -64,21 +64,18 @@ layout-wide customizer-hide
|
||||||
<span class="app-brand-text demo text-body fw-bold">سامانه شفافیت</span>
|
<span class="app-brand-text demo text-body fw-bold">سامانه شفافیت</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Logo -->
|
|
||||||
<h4 class="mb-2">Welcome to Sneat! 👋</h4>
|
|
||||||
<p class="mb-4">Please sign-in to your account and start the adventure</p>
|
|
||||||
|
|
||||||
<form id="formAuthentication" class="mb-3 fv-plugins-bootstrap5 fv-plugins-framework" method="post" novalidate="novalidate">
|
<form id="formAuthentication" class="mb-3 fv-plugins-bootstrap5 fv-plugins-framework" method="post" novalidate="novalidate">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="mb-3 fv-plugins-icon-container">
|
<div class="mb-3 fv-plugins-icon-container">
|
||||||
<label for="email" class="form-label">Email or Username</label>
|
<label for="email" class="form-label">نام کاربری</label>
|
||||||
<input type="text" class="form-control" id="email" name="username" placeholder="Enter your email or username" autofocus="">
|
<input type="text" class="form-control" id="email" name="username" placeholder="Enter your email or username" autofocus="">
|
||||||
<div class="fv-plugins-message-container fv-plugins-message-container--enabled invalid-feedback"></div></div>
|
<div class="fv-plugins-message-container fv-plugins-message-container--enabled invalid-feedback"></div></div>
|
||||||
<div class="mb-3 form-password-toggle fv-plugins-icon-container">
|
<div class="mb-3 form-password-toggle fv-plugins-icon-container">
|
||||||
<div class="d-flex justify-content-between">
|
<div class="d-flex justify-content-between">
|
||||||
<label class="form-label" for="password">Password</label>
|
<label class="form-label" for="password">رمز عبور</label>
|
||||||
<a href="auth-forgot-password-basic.html">
|
<a href="auth-forgot-password-basic.html">
|
||||||
<small>Forgot Password?</small>
|
<small>رمز عبور را فراموش کرده اید؟</small>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group input-group-merge has-validation">
|
<div class="input-group input-group-merge has-validation">
|
||||||
|
@ -86,43 +83,12 @@ layout-wide customizer-hide
|
||||||
<span class="input-group-text cursor-pointer"><i class="bx bx-hide"></i></span>
|
<span class="input-group-text cursor-pointer"><i class="bx bx-hide"></i></span>
|
||||||
</div><div class="fv-plugins-message-container fv-plugins-message-container--enabled invalid-feedback"></div>
|
</div><div class="fv-plugins-message-container fv-plugins-message-container--enabled invalid-feedback"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="form-check">
|
<button class="btn btn-primary d-grid w-100" type="submit">ورود</button>
|
||||||
<input class="form-check-input" type="checkbox" id="remember-me">
|
|
||||||
<label class="form-check-label" for="remember-me">
|
|
||||||
Remember Me
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<button class="btn btn-primary d-grid w-100" type="submit">Sign in</button>
|
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden"></form>
|
<input type="hidden"></form>
|
||||||
|
|
||||||
<p class="text-center">
|
|
||||||
<span>New on our platform?</span>
|
|
||||||
<a href="auth-register-basic.html">
|
|
||||||
<span>Create an account</span>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="divider my-4">
|
|
||||||
<div class="divider-text">or</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="d-flex justify-content-center">
|
|
||||||
<a href="javascript:;" class="btn btn-icon btn-label-facebook me-3">
|
|
||||||
<i class="tf-icons bx bxl-facebook"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:;" class="btn btn-icon btn-label-google-plus me-3">
|
|
||||||
<i class="tf-icons bx bxl-google-plus"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:;" class="btn btn-icon btn-label-twitter">
|
|
||||||
<i class="tf-icons bx bxl-twitter"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /Register -->
|
<!-- /Register -->
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from accounts.views import login_view, dashboard, customer_list, add_customer_ajax, edit_customer_ajax, get_customer_data
|
from accounts.views import login_view, dashboard, customer_list, add_customer_ajax, edit_customer_ajax, get_customer_data, logout_view
|
||||||
|
|
||||||
app_name = "accounts"
|
app_name = "accounts"
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('login/', login_view, name='login'),
|
path('login/', login_view, name='login'),
|
||||||
|
path('logout/', logout_view, name='logout'),
|
||||||
path('dashboard/', dashboard, name='dashboard'),
|
path('dashboard/', dashboard, name='dashboard'),
|
||||||
path('customers/', customer_list, name='customer_list'),
|
path('customers/', customer_list, name='customer_list'),
|
||||||
path('customers/add/', add_customer_ajax, name='add_customer_ajax'),
|
path('customers/add/', add_customer_ajax, name='add_customer_ajax'),
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth import login, authenticate
|
from django.contrib.auth import login, authenticate, logout
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.views.decorators.http import require_POST, require_GET
|
from django.views.decorators.http import require_POST, require_GET
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
from accounts.models import Profile
|
from accounts.models import Profile
|
||||||
from accounts.forms import CustomerForm
|
from accounts.forms import CustomerForm
|
||||||
from common.consts import UserRoles
|
from common.consts import UserRoles
|
||||||
|
@ -21,15 +21,12 @@ def login_view(request):
|
||||||
username = request.POST.get("username")
|
username = request.POST.get("username")
|
||||||
password = request.POST.get("password")
|
password = request.POST.get("password")
|
||||||
user = authenticate(request, username=username, password=password)
|
user = authenticate(request, username=username, password=password)
|
||||||
# if user is not None:
|
if user is not None:
|
||||||
# login(request, user)
|
login(request, user)
|
||||||
# if user.profile.has_none_of([UserRoles.MANAGER]):
|
return redirect("processes:request_list")
|
||||||
# return redirect("dashboard:dashboard")
|
else:
|
||||||
# else:
|
messages.error(request, "کاربری با این مشخصات یافت نشد!")
|
||||||
# return redirect("dashboard:admin_dashboard")
|
return redirect("accounts:login")
|
||||||
# else:
|
|
||||||
# messages.error(request, "کاربری با این مشخصات یافت نشد!")
|
|
||||||
# return redirect("accounts:login")
|
|
||||||
|
|
||||||
return render(request, "accounts/login.html")
|
return render(request, "accounts/login.html")
|
||||||
|
|
||||||
|
@ -37,7 +34,7 @@ def dashboard(request):
|
||||||
return render(request, "accounts/dashboard.html")
|
return render(request, "accounts/dashboard.html")
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
def customer_list(request):
|
def customer_list(request):
|
||||||
# Get all profiles that have customer role
|
# Get all profiles that have customer role
|
||||||
customers = Profile.objects.filter(roles__slug=UserRoles.CUSTOMER.value, is_deleted=False).select_related('user')
|
customers = Profile.objects.filter(roles__slug=UserRoles.CUSTOMER.value, is_deleted=False).select_related('user')
|
||||||
|
@ -163,3 +160,9 @@ def get_customer_data(request, customer_id):
|
||||||
},
|
},
|
||||||
'form_html': form_html
|
'form_html': form_html
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def logout_view(request):
|
||||||
|
"""Log out current user and redirect to login page."""
|
||||||
|
logout(request)
|
||||||
|
return redirect("accounts:login")
|
||||||
|
|
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
|
@ -35,7 +35,7 @@ id="layout-navbar">
|
||||||
<!-- /Language -->
|
<!-- /Language -->
|
||||||
|
|
||||||
<!-- Quick links -->
|
<!-- Quick links -->
|
||||||
<li class="nav-item dropdown-shortcuts navbar-dropdown dropdown me-2 me-xl-0">
|
<li class="nav-item dropdown-shortcuts navbar-dropdown dropdown me-2 me-xl-0 d-none">
|
||||||
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown"
|
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown"
|
||||||
data-bs-auto-close="outside" aria-expanded="false">
|
data-bs-auto-close="outside" aria-expanded="false">
|
||||||
<i class='bx bx-grid-alt bx-sm'></i>
|
<i class='bx bx-grid-alt bx-sm'></i>
|
||||||
|
@ -127,17 +127,17 @@ id="layout-navbar">
|
||||||
<ul class="dropdown-menu dropdown-menu-end dropdown-styles">
|
<ul class="dropdown-menu dropdown-menu-end dropdown-styles">
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="#" data-theme="light">
|
<a class="dropdown-item" href="#" data-theme="light">
|
||||||
<span class="align-middle"><i class='bx bx-sun me-2'></i>Light</span>
|
<span class="align-middle"><i class='bx bx-sun me-2'></i>روشن</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="#" data-theme="dark">
|
<a class="dropdown-item" href="#" data-theme="dark">
|
||||||
<span class="align-middle"><i class="bx bx-moon me-2"></i>Dark</span>
|
<span class="align-middle"><i class="bx bx-moon me-2"></i>تاریک</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="#" data-theme="system">
|
<a class="dropdown-item" href="#" data-theme="system">
|
||||||
<span class="align-middle"><i class="bx bx-desktop me-2"></i>System</span>
|
<span class="align-middle"><i class="bx bx-desktop me-2"></i>سیستم</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -146,7 +146,7 @@ id="layout-navbar">
|
||||||
|
|
||||||
|
|
||||||
<!-- Notification -->
|
<!-- Notification -->
|
||||||
<li class="nav-item dropdown-notifications navbar-dropdown dropdown me-3 me-xl-1">
|
<li class="nav-item dropdown-notifications navbar-dropdown dropdown me-3 me-xl-1 d-none">
|
||||||
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown"
|
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown"
|
||||||
data-bs-auto-close="outside" aria-expanded="false">
|
data-bs-auto-close="outside" aria-expanded="false">
|
||||||
<i class="bx bx-bell bx-sm"></i>
|
<i class="bx bx-bell bx-sm"></i>
|
||||||
|
@ -306,24 +306,6 @@ id="layout-navbar">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
|
|
||||||
<div class="d-flex">
|
|
||||||
<div class="flex-shrink-0 me-3">
|
|
||||||
<div class="avatar">
|
|
||||||
<span class="avatar-initial rounded-circle bg-label-warning"><i class="bx bx-error"></i></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-grow-1">
|
|
||||||
<h6 class="mb-1">CPU is running high</h6>
|
|
||||||
<p class="mb-0">CPU Utilization Percent is currently at 88.63%,</p>
|
|
||||||
<small class="text-muted">5 days ago</small>
|
|
||||||
</div>
|
|
||||||
<div class="flex-shrink-0 dropdown-notifications-actions">
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-read"><span class="badge badge-dot"></span></a>
|
|
||||||
<a href="javascript:void(0)" class="dropdown-notifications-archive"><span class="bx bx-x"></span></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li class="dropdown-menu-footer border-top p-3">
|
<li class="dropdown-menu-footer border-top p-3">
|
||||||
|
@ -332,25 +314,36 @@ id="layout-navbar">
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<!--/ Notification -->
|
<!--/ Notification -->
|
||||||
|
|
||||||
<!-- User -->
|
<!-- User -->
|
||||||
<li class="nav-item navbar-dropdown dropdown-user dropdown">
|
<li class="nav-item navbar-dropdown dropdown-user dropdown">
|
||||||
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown">
|
<a class="nav-link dropdown-toggle hide-arrow" href="#" data-bs-toggle="dropdown">
|
||||||
<div class="avatar avatar-online">
|
<div class="avatar avatar-online">
|
||||||
|
{% if request.user.is_authenticated and request.user.profile and request.user.profile.pic %}
|
||||||
|
<img src="{{ request.user.profile.pic.url }}" alt class="w-px-40 h-auto rounded-circle">
|
||||||
|
{% else %}
|
||||||
<img src="{% static 'assets/img/avatars/1.png' %}" alt class="w-px-40 h-auto rounded-circle">
|
<img src="{% static 'assets/img/avatars/1.png' %}" alt class="w-px-40 h-auto rounded-circle">
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu dropdown-menu-end">
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="pages-account-settings-account.html">
|
<a class="dropdown-item" href="#">
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<div class="flex-shrink-0 me-3">
|
<div class="flex-shrink-0 me-3">
|
||||||
<div class="avatar avatar-online">
|
<div class="avatar avatar-online">
|
||||||
|
{% if request.user.is_authenticated and request.user.profile and request.user.profile.pic %}
|
||||||
|
<img src="{{ request.user.profile.pic.url }}" alt class="w-px-40 h-auto rounded-circle">
|
||||||
|
{% else %}
|
||||||
<img src="{% static 'assets/img/avatars/1.png' %}" alt class="w-px-40 h-auto rounded-circle">
|
<img src="{% static 'assets/img/avatars/1.png' %}" alt class="w-px-40 h-auto rounded-circle">
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-grow-1">
|
<div class="flex-grow-1">
|
||||||
<span class="fw-medium d-block">John Doe</span>
|
<span class="fw-medium d-block">{{ request.user.get_full_name|default:request.user.username }}</span>
|
||||||
<small class="text-muted">Admin</small>
|
{% if request.user.profile %}
|
||||||
|
<small class="text-muted">{{ request.user.profile.roles_str }}</small>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
@ -359,48 +352,24 @@ id="layout-navbar">
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="pages-profile-user.html">
|
<a class="dropdown-item" href="#">
|
||||||
<i class="bx bx-user me-2"></i>
|
<i class="bx bx-user me-2"></i>
|
||||||
<span class="align-middle">My Profile</span>
|
<span class="align-middle">پروفایل</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="pages-account-settings-account.html">
|
<a class="dropdown-item" href="#">
|
||||||
<i class="bx bx-cog me-2"></i>
|
<i class="bx bx-cog me-2"></i>
|
||||||
<span class="align-middle">Settings</span>
|
<span class="align-middle">تنظیمات</span>
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item" href="pages-account-settings-billing.html">
|
|
||||||
<span class="d-flex align-items-center align-middle">
|
|
||||||
<i class="flex-shrink-0 bx bx-credit-card me-2"></i>
|
|
||||||
<span class="flex-grow-1 align-middle">Billing</span>
|
|
||||||
<span class="flex-shrink-0 badge badge-center rounded-pill bg-danger w-px-20 h-px-20">4</span>
|
|
||||||
</span>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item" href="pages-faq.html">
|
<a class="dropdown-item" href="{% url 'accounts:logout' %}">
|
||||||
<i class="bx bx-help-circle me-2"></i>
|
|
||||||
<span class="align-middle">FAQ</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item" href="pages-pricing.html">
|
|
||||||
<i class="bx bx-dollar me-2"></i>
|
|
||||||
<span class="align-middle">Pricing</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="dropdown-divider"></div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a class="dropdown-item" href="auth-login-cover.html" target="_blank">
|
|
||||||
<i class="bx bx-power-off me-2"></i>
|
<i class="bx bx-power-off me-2"></i>
|
||||||
<span class="align-middle">Log Out</span>
|
<span class="align-middle">خروج</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
<ul class="menu-inner py-1">
|
<ul class="menu-inner py-1">
|
||||||
<!-- Dashboards -->
|
<!-- Dashboards -->
|
||||||
<li class="menu-item">
|
<li class="menu-item d-none">
|
||||||
<a href="#" class="menu-link menu-toggle">
|
<a href="#" class="menu-link menu-toggle">
|
||||||
<i class="menu-icon tf-icons bx bx-home-circle"></i>
|
<i class="menu-icon tf-icons bx bx-home-circle"></i>
|
||||||
<div class="text-truncate">داشبورد</div>
|
<div class="text-truncate">داشبورد</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue