diff --git a/authentik/policies/api/bindings.py b/authentik/policies/api/bindings.py index 5ed92ccaa..3c5ab85fe 100644 --- a/authentik/policies/api/bindings.py +++ b/authentik/policies/api/bindings.py @@ -5,6 +5,8 @@ from rest_framework.viewsets import ModelViewSet from structlog.stdlib import get_logger from authentik.core.api.groups import GroupSerializer +from authentik.core.api.users import UserSerializer +from authentik.policies.api.policies import PolicySerializer from authentik.policies.models import PolicyBinding, PolicyBindingModel LOGGER = get_logger() @@ -51,7 +53,9 @@ class PolicyBindingSerializer(ModelSerializer): required=True, ) + policy = PolicySerializer(required=False) group = GroupSerializer(required=False) + user = UserSerializer(required=False) class Meta: diff --git a/swagger.yaml b/swagger.yaml index 378ac2615..c77ad4d29 100755 --- a/swagger.yaml +++ b/swagger.yaml @@ -14827,7 +14827,6 @@ definitions: Token: required: - identifier - - user type: object properties: pk: @@ -16007,246 +16006,11 @@ definitions: format: uuid readOnly: true policy: - type: object - properties: - policy_uuid: - title: Policy uuid - type: string - format: uuid - readOnly: true - created: - title: Created - type: string - format: date-time - readOnly: true - last_updated: - title: Last updated - type: string - format: date-time - readOnly: true - name: - title: Name - type: string - x-nullable: true - execution_logging: - title: Execution logging - description: When this option is enabled, all executions of this policy - will be logged. By default, only execution errors are logged. - type: boolean - readOnly: true + $ref: '#/definitions/Policy' group: $ref: '#/definitions/Group' user: - required: - - password - - username - - name - type: object - properties: - id: - title: ID - type: integer - readOnly: true - password: - title: Password - type: string - maxLength: 128 - minLength: 1 - last_login: - title: Last login - type: string - format: date-time - x-nullable: true - username: - title: Username - description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ - only. - type: string - pattern: ^[\w.@+-]+$ - maxLength: 150 - minLength: 1 - first_name: - title: First name - type: string - maxLength: 150 - last_name: - title: Last name - type: string - maxLength: 150 - email: - title: Email address - type: string - format: email - maxLength: 254 - is_active: - title: Active - description: Designates whether this user should be treated as active. - Unselect this instead of deleting accounts. - type: boolean - date_joined: - title: Date joined - type: string - format: date-time - uuid: - title: Uuid - type: string - format: uuid - readOnly: true - name: - title: Name - description: User's display name. - type: string - minLength: 1 - password_change_date: - title: Password change date - type: string - format: date-time - readOnly: true - attributes: - title: Attributes - type: object - groups: - type: array - items: - required: - - name - type: object - properties: - id: - title: ID - type: integer - readOnly: true - name: - title: Name - type: string - maxLength: 150 - minLength: 1 - permissions: - type: array - items: - type: integer - uniqueItems: true - readOnly: true - user_permissions: - type: array - items: - required: - - name - - codename - - content_type - type: object - properties: - id: - title: ID - type: integer - readOnly: true - name: - title: Name - type: string - maxLength: 255 - minLength: 1 - codename: - title: Codename - type: string - maxLength: 100 - minLength: 1 - content_type: - title: Content type - type: integer - readOnly: true - sources: - type: array - items: - required: - - name - - slug - type: object - properties: - pbm_uuid: - title: Pbm uuid - type: string - format: uuid - readOnly: true - policy_engine_mode: - title: Policy engine mode - type: string - enum: - - all - - any - name: - title: Name - description: Source's display Name. - type: string - minLength: 1 - slug: - title: Slug - description: Internal source name, used in URLs. - type: string - format: slug - pattern: ^[-a-zA-Z0-9_]+$ - maxLength: 50 - minLength: 1 - enabled: - title: Enabled - type: boolean - authentication_flow: - title: Authentication flow - description: Flow to use when authenticating existing users. - type: string - format: uuid - x-nullable: true - enrollment_flow: - title: Enrollment flow - description: Flow to use when enrolling new users. - type: string - format: uuid - x-nullable: true - policies: - type: array - items: - type: string - format: uuid - readOnly: true - uniqueItems: true - property_mappings: - type: array - items: - type: string - format: uuid - uniqueItems: true - readOnly: true - ak_groups: - type: array - items: - required: - - name - - parent - type: object - properties: - group_uuid: - title: Group uuid - type: string - format: uuid - readOnly: true - name: - title: Name - type: string - maxLength: 80 - minLength: 1 - is_superuser: - title: Is superuser - description: Users added to this group will be superusers. - type: boolean - attributes: - title: Attributes - type: object - parent: - title: Parent - type: string - format: uuid - x-nullable: true - readOnly: true - readOnly: true + $ref: '#/definitions/User' target: title: Target type: string diff --git a/web/src/pages/tokens/TokenListPage.ts b/web/src/pages/tokens/TokenListPage.ts index aa91449a7..4d00a2a0a 100644 --- a/web/src/pages/tokens/TokenListPage.ts +++ b/web/src/pages/tokens/TokenListPage.ts @@ -52,7 +52,7 @@ export class TokenListPage extends TablePage { row(item: Token): TemplateResult[] { return [ html`${item.identifier}`, - html`${item.user.username}`, + html`${item.user?.username}`, html`${item.expiring ? "Yes" : "No"}`, html`${item.expiring ? item.expires?.toLocaleString() : "-"}`, html` diff --git a/web/src/pages/user-settings/tokens/UserTokenList.ts b/web/src/pages/user-settings/tokens/UserTokenList.ts index ed7772263..4f4202aa6 100644 --- a/web/src/pages/user-settings/tokens/UserTokenList.ts +++ b/web/src/pages/user-settings/tokens/UserTokenList.ts @@ -74,7 +74,7 @@ export class UserTokenList extends Table { ${gettext("User")}
-
${item.user.username}
+
${item.user?.username}