commit
This commit is contained in:
parent
44a1bacba5
commit
03ff48830e
|
@ -2,8 +2,7 @@ from django.urls import path, include
|
|||
|
||||
from django.contrib.auth import views as auth_views
|
||||
|
||||
from application.accounts.views import logout_view, user_permissions_list, get_user_existing_permissions, \
|
||||
save_user_permissions
|
||||
from application.accounts.views import logout_view, user_permissions_list, get_user_existing_permissions, save_user_permissions
|
||||
|
||||
urlpatterns = [
|
||||
path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='user_login'),
|
||||
|
|
|
@ -224,19 +224,40 @@ def save_user_permissions(request, user_id):
|
|||
except ValueError:
|
||||
return JsonResponse({'error': 'Invalid JSON data'}, status=400)
|
||||
|
||||
# 清空用户的现有权限
|
||||
user.user_permissions.clear()
|
||||
# 处理修改后的权限项
|
||||
for perm_id, perm_changes in permissions_data.get('permissions', {}).items():
|
||||
try:
|
||||
permission = Permission.objects.get(id=perm_id)
|
||||
|
||||
# 为用户分配新的权限
|
||||
for perm in permissions_data.get('permissions', []):
|
||||
permission = Permission.objects.get(id=perm['id'])
|
||||
if perm.get('add'):
|
||||
user.user_permissions.add(permission)
|
||||
if perm.get('delete'):
|
||||
user.user_permissions.remove(permission)
|
||||
if perm.get('change'):
|
||||
user.user_permissions.add(permission)
|
||||
if perm.get('view'):
|
||||
user.user_permissions.add(permission)
|
||||
# 处理“新增”权限
|
||||
if 'add_permission' in perm_changes:
|
||||
if perm_changes['add_permission']:
|
||||
user.user_permissions.add(permission)
|
||||
else:
|
||||
user.user_permissions.remove(permission)
|
||||
|
||||
# 处理“删除”权限
|
||||
if 'delete_permission' in perm_changes:
|
||||
if perm_changes['delete_permission']:
|
||||
user.user_permissions.add(permission)
|
||||
else:
|
||||
user.user_permissions.remove(permission)
|
||||
|
||||
# 处理“修改”权限
|
||||
if 'edit_permission' in perm_changes:
|
||||
if perm_changes['edit_permission']:
|
||||
user.user_permissions.add(permission)
|
||||
else:
|
||||
user.user_permissions.remove(permission)
|
||||
|
||||
# 处理“查看”权限
|
||||
if 'view_permission' in perm_changes:
|
||||
if perm_changes['view_permission']:
|
||||
user.user_permissions.add(permission)
|
||||
else:
|
||||
user.user_permissions.remove(permission)
|
||||
|
||||
except Permission.DoesNotExist:
|
||||
continue
|
||||
|
||||
return JsonResponse({'success': True, 'message': 'Permissions updated successfully'})
|
||||
|
|
|
@ -55,6 +55,7 @@ $(document).ready(function() {
|
|||
const itemsPerPage = 10;
|
||||
let currentPage = 1;
|
||||
let permissionsData = [];
|
||||
let modifiedPermissions = {};
|
||||
|
||||
function renderTable(page) {
|
||||
const start = (page - 1) * itemsPerPage;
|
||||
|
@ -139,6 +140,16 @@ $(document).ready(function() {
|
|||
});
|
||||
});
|
||||
|
||||
// 监听权限复选框的更改
|
||||
$('#permissionsTable').on('change', 'input[type="checkbox"]', function() {
|
||||
const permId = $(this).data('id');
|
||||
const permType = $(this).attr('name');
|
||||
if (!modifiedPermissions[permId]) {
|
||||
modifiedPermissions[permId] = {};
|
||||
}
|
||||
modifiedPermissions[permId][permType] = $(this).is(':checked');
|
||||
});
|
||||
|
||||
$('#savePermissions').on('click', function() {
|
||||
const userId = $(this).data('user-id'); // 从按钮的data-user-id属性中获取用户ID
|
||||
if (!userId) {
|
||||
|
@ -148,19 +159,11 @@ $(document).ready(function() {
|
|||
|
||||
const url = "{% url 'save_user_permissions' 0 %}".replace('0', userId);
|
||||
|
||||
const updatedPermissions = permissionsData.map(perm => ({
|
||||
id: perm.id,
|
||||
add: $(`input[name="add_permission"][data-id="${perm.id}"]`).is(':checked'),
|
||||
delete: $(`input[name="delete_permission"][data-id="${perm.id}"]`).is(':checked'),
|
||||
change: $(`input[name="edit_permission"][data-id="${perm.id}"]`).is(':checked'),
|
||||
view: $(`input[name="view_permission"][data-id="${perm.id}"]`).is(':checked')
|
||||
}));
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify({ permissions: updatedPermissions }),
|
||||
data: JSON.stringify({ permissions: modifiedPermissions }),
|
||||
headers: {
|
||||
'X-CSRFToken': csrftoken // 添加CSRF令牌
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue