async getUserStrategies(request) {
    const userId = request.getId();
    const checkPromises = [];

    // Throws if the user doesn't exist
    await this.ask("core:security:user:get", userId);

    if (this.anonymousId === userId) {
      checkPromises.push(Bluebird.resolve(null));
    } else {
      const availableStrategies = global.kuzzle.pluginsManager.listStrategies();

      for (const strategy of availableStrategies) {
        const existMethod = this.getStrategyMethod(strategy, "exists");

        checkPromises.push(
          existMethod(request, userId, strategy).then((exists) =>
            exists ? strategy : null,
          ),
        );
      }
    }

    const strategies = await Bluebird.all(checkPromises).filter(
      (item) => item !== null,
    );

    return {
      strategies,
      total: strategies.length,
    };
  }
Given a user id, returns the matching user's strategies as an array.

@param {Request} request
@returns {Promise<Object>}