def METHOD_NAME(self, user_id, *ignored_args):
    """
    ---
    description: Grant new ACL(s) to a user
    tags:
      - acls
    parameters:
      - in: path
        name: user_id
        required: true
        schema:
          type: integer
    requestBody:
      content:
        application/json:
          schema:
            type: object
            properties:
              aclIds:
                type: array
                items:
                  type: string
                description: Array of ACL IDs (strings) to be granted to user
            required:
              - aclIds
    responses:
      200:
        content:
          application/json:
            schema: Success
    """
    data = self.get_json()
    new_acl_ids = data.get("aclIds")
    if new_acl_ids is None:
        return self.error("Missing required parameter aclIds")
    with self.Session() as session:
        if (not isinstance(new_acl_ids, (list, tuple))) or (
            not all(
                [
                    session.scalars(
                        ACL.select(session.user_or_token).where(ACL.id == acl_id)
                    ).first()
                    is not None
                    for acl_id in new_acl_ids
                ]
            )
        ):
            return self.error(
                "Improperly formatted parameter aclIds; must be an array of strings."
            )
        user = session.scalars(
            User.select(session.user_or_token).where(User.id == user_id)
        ).first()
        if user is None:
            return self.error("Invalid user_id parameter.")
        new_acls = (
            session.scalars(
                ACL.select(session.user_or_token).where(ACL.id.in_(new_acl_ids))
            )
            .unique()
            .all()
        )
        user.acls = list(set(user.acls).union(set(new_acls)))
        session.commit()
        return self.success()