application_access_token.py 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎虎
  5. @file: application_token.py
  6. @date:2025/6/9 17:42
  7. @desc:
  8. """
  9. from django.db.models import QuerySet
  10. from django.utils.translation import gettext_lazy as _
  11. from drf_spectacular.utils import extend_schema
  12. from rest_framework.request import Request
  13. from rest_framework.views import APIView
  14. from application.api.application_access_token import ApplicationAccessTokenAPI
  15. from application.models import Application
  16. from application.serializers.application_access_token import AccessTokenSerializer
  17. from common import result
  18. from common.auth import TokenAuth
  19. from common.auth.authentication import has_permissions
  20. from common.constants.permission_constants import PermissionConstants, RoleConstants, ViewPermission, CompareConstants
  21. from common.log.log import log
  22. def get_application_operation_object(application_id):
  23. application_model = QuerySet(model=Application).filter(id=application_id).first()
  24. if application_model is not None:
  25. return {
  26. "name": application_model.name
  27. }
  28. return {}
  29. class AccessToken(APIView):
  30. authentication_classes = [TokenAuth]
  31. @extend_schema(
  32. methods=['PUT'],
  33. description=_("Modify application access restriction information"),
  34. summary=_("Modify application access restriction information"),
  35. operation_id=_("Modify application access restriction information"), # type: ignore
  36. parameters=ApplicationAccessTokenAPI.get_parameters(),
  37. request=ApplicationAccessTokenAPI.get_request(),
  38. tags=[_('Application')] # type: ignore
  39. )
  40. @log(menu='Application', operate="Modify application access token",
  41. get_operation_object= lambda r,k: get_application_operation_object((k.get('application_id')))
  42. )
  43. @has_permissions(PermissionConstants.APPLICATION_OVERVIEW_ACCESS.get_workspace_application_permission(),
  44. PermissionConstants.APPLICATION_OVERVIEW_ACCESS.get_workspace_permission_workspace_manage_role(),
  45. ViewPermission([RoleConstants.USER.get_workspace_role()],
  46. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  47. CompareConstants.AND),
  48. RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
  49. def put(self, request: Request, workspace_id: str, application_id: str):
  50. return result.success(
  51. AccessTokenSerializer(data={'workspace_id': workspace_id, 'application_id': application_id}).edit(
  52. request.data))
  53. @extend_schema(
  54. methods=['GET'],
  55. description=_("Get application access restriction information"),
  56. summary=_("Get application access restriction information"),
  57. operation_id=_("Get application access restriction information"), # type: ignore
  58. parameters=ApplicationAccessTokenAPI.get_parameters(),
  59. tags=[_('Application')] # type: ignore
  60. )
  61. @has_permissions(PermissionConstants.APPLICATION_READ.get_workspace_application_permission(),
  62. PermissionConstants.APPLICATION_READ.get_workspace_permission_workspace_manage_role(),
  63. ViewPermission([RoleConstants.USER.get_workspace_role()],
  64. [PermissionConstants.APPLICATION.get_workspace_application_permission()],
  65. CompareConstants.AND),
  66. RoleConstants.WORKSPACE_MANAGE.get_workspace_role()
  67. )
  68. def get(self, request: Request, workspace_id: str, application_id: str):
  69. return result.success(
  70. AccessTokenSerializer(data={'workspace_id': workspace_id, 'application_id': application_id}).one())