commit
This commit is contained in:
parent
03ff48830e
commit
c648e0c22e
|
@ -2,7 +2,8 @@ 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, refresh_user_permissions
|
||||
|
||||
urlpatterns = [
|
||||
path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='user_login'),
|
||||
|
@ -11,4 +12,5 @@ urlpatterns = [
|
|||
path('user_permissions/', user_permissions_list, name='user_permissions_list'),
|
||||
path('get_user_existing_permissions/<int:user_id>/', get_user_existing_permissions, name='get_user_existing_permissions'),
|
||||
path('save_user_permissions/<int:user_id>/', save_user_permissions, name='save_user_permissions'),
|
||||
path("refresh_user_permissions/<int:user_id>/", refresh_user_permissions, name="refresh_user_permissions"),
|
||||
]
|
||||
|
|
|
@ -175,14 +175,6 @@ def get_user_existing_permissions(request, user_id):
|
|||
# 获取用户的个人权限
|
||||
user_permissions = user.user_permissions.all().values_list('codename', flat=True)
|
||||
|
||||
# 获取用户所在组的权限
|
||||
group_permissions = Permission.objects.filter(group__user=user).values_list('codename', flat=True)
|
||||
|
||||
# 合并用户个人权限和组权限
|
||||
user_permissions_set = set(user_permissions)
|
||||
group_permissions_set = set(group_permissions)
|
||||
all_user_permissions = user_permissions_set.union(group_permissions_set)
|
||||
|
||||
# 处理数据以合并相同资源分组和资源名称的权限
|
||||
processed_permissions = {}
|
||||
for perm in all_permissions:
|
||||
|
@ -200,13 +192,13 @@ def get_user_existing_permissions(request, user_id):
|
|||
}
|
||||
|
||||
if perm['permission'] == '新增':
|
||||
processed_permissions[key]['add'] = perm['codename'] in all_user_permissions
|
||||
processed_permissions[key]['add'] = perm['codename'] in user_permissions
|
||||
elif perm['permission'] == '删除':
|
||||
processed_permissions[key]['remove'] = perm['codename'] in all_user_permissions
|
||||
processed_permissions[key]['remove'] = perm['codename'] in user_permissions
|
||||
elif perm['permission'] == '修改':
|
||||
processed_permissions[key]['change'] = perm['codename'] in all_user_permissions
|
||||
processed_permissions[key]['change'] = perm['codename'] in user_permissions
|
||||
elif perm['permission'] == '查看':
|
||||
processed_permissions[key]['view'] = perm['codename'] in all_user_permissions
|
||||
processed_permissions[key]['view'] = perm['codename'] in user_permissions
|
||||
|
||||
return JsonResponse({'permissions': list(processed_permissions.values()), 'user_id': user_id})
|
||||
|
||||
|
@ -261,3 +253,23 @@ def save_user_permissions(request, user_id):
|
|||
continue
|
||||
|
||||
return JsonResponse({'success': True, 'message': 'Permissions updated successfully'})
|
||||
|
||||
|
||||
@login_required
|
||||
@group_required('系统管理')
|
||||
def refresh_user_permissions(request, user_id):
|
||||
if request.method != 'POST':
|
||||
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
||||
|
||||
user = get_object_or_404(User, pk=user_id)
|
||||
|
||||
# 清空用户的个人权限
|
||||
user.user_permissions.clear()
|
||||
|
||||
# 获取用户所在组的权限ID
|
||||
group_permissions = Permission.objects.filter(group__user=user).values_list('id', flat=True)
|
||||
|
||||
# 为用户分配组权限
|
||||
user.user_permissions.add(*group_permissions)
|
||||
|
||||
return JsonResponse({'success': True, 'message': 'User permissions refreshed successfully'})
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
<button id="prevPage" class="btn btn-secondary" type="button">上一页</button>
|
||||
<button id="nextPage" class="btn btn-secondary" type="button">下一页</button>
|
||||
</div>
|
||||
<button type="button" class="btn btn-secondary" id="refreshPermissions" data-user-id="">刷新权限</button>
|
||||
<button type="button" class="btn btn-primary" id="savePermissions" data-user-id="">保存更改</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -56,6 +57,7 @@ $(document).ready(function() {
|
|||
let currentPage = 1;
|
||||
let permissionsData = [];
|
||||
let modifiedPermissions = {};
|
||||
let userId = null
|
||||
|
||||
function renderTable(page) {
|
||||
const start = (page - 1) * itemsPerPage;
|
||||
|
@ -121,7 +123,7 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
$('.btn-outline-primary').on('click', function() {
|
||||
const userId = $(this).closest('tr').data('id');
|
||||
userId = $(this).closest('tr').data('id');
|
||||
$('#savePermissions').data('user-id', userId); // 确保在模态框显示时设置用户ID
|
||||
const url = "{% url 'get_user_existing_permissions' 0 %}".replace('0', userId);
|
||||
$.ajax({
|
||||
|
@ -151,11 +153,6 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
$('#savePermissions').on('click', function() {
|
||||
const userId = $(this).data('user-id'); // 从按钮的data-user-id属性中获取用户ID
|
||||
if (!userId) {
|
||||
alert('用户ID未设置');
|
||||
return;
|
||||
}
|
||||
|
||||
const url = "{% url 'save_user_permissions' 0 %}".replace('0', userId);
|
||||
|
||||
|
@ -168,13 +165,51 @@ $(document).ready(function() {
|
|||
'X-CSRFToken': csrftoken // 添加CSRF令牌
|
||||
},
|
||||
success: function(response) {
|
||||
alert('权限保存成功');
|
||||
$('#userPermissionModal').modal('hide');
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
alert('保存权限时出错');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#refreshPermissions').on('click', function() {
|
||||
|
||||
const url = "{% url 'refresh_user_permissions' 0 %}".replace('0', userId);
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: 'POST',
|
||||
headers: {
|
||||
'X-CSRFToken': csrftoken // 添加CSRF令牌
|
||||
},
|
||||
success: function(response) {
|
||||
alert('权限已刷新');
|
||||
// 重新获取权限列表
|
||||
$.ajax({
|
||||
url: "{% url 'get_user_existing_permissions' 0 %}".replace('0', userId),
|
||||
type: 'GET',
|
||||
success: function(data) {
|
||||
permissionsData = data.permissions;
|
||||
modifiedPermissions = {}; // 重置修改的权限项
|
||||
currentPage = 1;
|
||||
renderTable(currentPage);
|
||||
renderPagination();
|
||||
$('#userPermissionModal').modal('show');
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
alert('获取权限数据失败');
|
||||
}
|
||||
});
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
alert('刷新权限时出错');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
Loading…
Reference in New Issue