Add rights management backend
This commit is contained in:
parent
4555627bd3
commit
bf69c870cd
@ -20,7 +20,7 @@ from django.urls import path, include
|
||||
|
||||
from access_controller import settings
|
||||
from access_controller.settings import DEBUG
|
||||
from main.views import main_page, profile_page, CustomRegistrationView
|
||||
from main.views import main_page, profile_page, CustomRegistrationView, work_page, work_hand_over, work_become_engineer
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls, name='admin'),
|
||||
@ -30,4 +30,7 @@ urlpatterns = [
|
||||
path('accounts/login/', LoginView.as_view(extra_context={}), name='login'), # TODO add extra context
|
||||
path('accounts/', include('django.contrib.auth.urls')),
|
||||
path('accounts/', include('django_registration.backends.one_step.urls')),
|
||||
path('work/<int:id>', work_page, name="work"),
|
||||
path('work/hand_over/', work_hand_over, name="work_hand_over"),
|
||||
path('work/become_engineer/', work_become_engineer, name="work_become_engineer"),
|
||||
]
|
||||
|
31
main/templates/pages/work.html
Normal file
31
main/templates/pages/work.html
Normal file
@ -0,0 +1,31 @@
|
||||
{% extends 'base/base.html' %}
|
||||
|
||||
{% load static %}
|
||||
|
||||
|
||||
{% block title %}{{ pagename }}{% endblock %}
|
||||
|
||||
|
||||
{% block heading %}Управление правами{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<br>
|
||||
<h3>Инженеры</h3>
|
||||
{%for engineer in engineers%}
|
||||
{{ engineer.name }}
|
||||
{% endfor %}
|
||||
|
||||
<h3>Агенты</h3>
|
||||
{%for agent in agents%}
|
||||
{{ agent.name }}
|
||||
{% endfor %}
|
||||
|
||||
<br>
|
||||
|
||||
{% if role == "engineer" %}
|
||||
<a href="/work/hand_over">Сдать смену</a>
|
||||
{% else %}
|
||||
<a href="/work/become_engineer">Запросить права инженера</a>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
@ -1,4 +1,5 @@
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import render, redirect, reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from main.extra_func import set_and_get_name, set_and_get_email, load_and_get_image, set_and_get_role, check_user_exist, \
|
||||
@ -12,6 +13,11 @@ from django_registration.views import RegistrationView
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from zenpy import Zenpy
|
||||
from zenpy.lib.api_objects import User as ZenpyUser
|
||||
|
||||
from .models import UserProfile
|
||||
|
||||
import os
|
||||
|
||||
|
||||
class CustomRegistrationView(RegistrationView):
|
||||
@ -75,6 +81,51 @@ def profile_page(request):
|
||||
}
|
||||
return render(request, 'pages/profile.html', context)
|
||||
|
||||
def auth_user(request):
|
||||
admin_creds = {
|
||||
'email': os.environ.get('Admin_email'),
|
||||
'subdomain': 'ngenix1612197338',
|
||||
'token': os.environ.get('Oauth_token'),
|
||||
}
|
||||
admin = Zenpy(**admin_creds)
|
||||
zenpy_user: ZenpyUser = admin.users.search(request.user.email).values[0]
|
||||
return zenpy_user, admin
|
||||
|
||||
@login_required()
|
||||
def work_page(request, id):
|
||||
if request.user.is_authenticated and request.user.id == id:
|
||||
zenpy_user, _ = auth_user(request)
|
||||
|
||||
context = {
|
||||
'engineers': UserProfile.objects.filter(role=1),
|
||||
'agents': UserProfile.objects.filter(role=0),
|
||||
'role': zenpy_user.role,
|
||||
'pagename': 'Управление правами'
|
||||
}
|
||||
return render(request, 'pages/work.html', context)
|
||||
return redirect("login")
|
||||
|
||||
@login_required()
|
||||
def work_hand_over(request):
|
||||
zenpy_user, admin = auth_user(request)
|
||||
if request.user.is_authenticated and zenpy_user.role == "end-user":
|
||||
zenpy_user.role = "agent"
|
||||
admin.users.update(zenpy_user)
|
||||
request.user.userprofile.role = 0
|
||||
request.user.userprofile.save()
|
||||
return HttpResponseRedirect(reverse('work', args=(request.user.id, )))
|
||||
|
||||
|
||||
@login_required()
|
||||
def work_become_engineer(request):
|
||||
zenpy_user, admin = auth_user(request)
|
||||
if request.user.is_authenticated and zenpy_user.role == "agent":
|
||||
zenpy_user.role = "end-user"
|
||||
admin.users.update(zenpy_user)
|
||||
request.user.userprofile.role = 1
|
||||
request.user.userprofile.save()
|
||||
return HttpResponseRedirect(reverse('work', args=(request.user.id, )))
|
||||
|
||||
|
||||
def main_page(request):
|
||||
return render(request, 'pages/index.html')
|
||||
|
Loading…
x
Reference in New Issue
Block a user