suspend fun getMissingAppPermissions()

in space-slack-sync/src/main/kotlin/org/jetbrains/spaceSlackSync/homepage/MissingAppPermissions.kt [9:30]


    suspend fun getMissingAppPermissions(): MissingAppPermissionsResponse {
        val requiredPermissions = listOf(PermissionIdentifier.ViewMemberProfiles)

        val missingPermissions = requiredPermissions.filterNot { permission ->
            appSpaceClient.permissions.checkPermission(
                principal = PrincipalIn.Application(ApplicationIdentifier.Me),
                uniqueRightCode = permission,
                target = GlobalPermissionTarget,
            )
        }.map { "global:$it" }

        val hasPermissionsToApprove = userSpaceClient.permissions.checkPermission(
            principal = PrincipalIn.Profile(ProfileIdentifier.Me),
            uniqueRightCode = PermissionIdentifier.GrantPermissionsToOtherMembers,
            target = GlobalPermissionTarget,
        )

        return MissingAppPermissionsResponse(
            missingPermissions = missingPermissions.joinToString(" ").takeIf { it.isNotEmpty() },
            hasPermissionsToApprove = hasPermissionsToApprove
        )
    }