Exemplo n.º 1
0
  /**
   * Adds a user object to the store
   * @param {Object} user
   * @param {string} user.id
   * @param {string} user.emailAddress
   * @returns {Promise}
   */
  add(user) {
    if (!user.id) {
      return Promise.reject(`\`user.id\` is required`);
    }

    if (!user.emailAddress) {
      return Promise.reject(`\`user.emailAddress\` is required`);
    }

    if (!patterns.uuid.test(user.id)) {
      return Promise.reject(`\`user.id\` does not appear to be a uuid`);
    }

    if (!patterns.email.test(user.emailAddress)) {
      return Promise.reject(`\`user.emailAddress\` does not appear to be an email address`);
    }

    const p1 = this.getById(user.id)
      .then((u) => usersById.get(this).set(user.id, Object.assign({}, u, user)))
      .catch(() => usersById.get(this).set(user.id, Object.assign({}, user)));

    const p2 = this.getByEmail(user.emailAddress)
      .then((u) => usersByEmail.get(this).set(user.emailAddress, Object.assign({}, u, user)))
      .catch(() => usersByEmail.get(this).set(user.emailAddress, Object.assign({}, user)));

    return Promise.all([p1, p2]);
  }
Exemplo n.º 2
0
  /**
   * Retrievves the specified user object from the store
   * @param {string} id
   * @returns {Promise<Object>}
   */
  get(id) {
    if (patterns.uuid.test(id)) {
      return this.getById(id);
    }

    if (patterns.email.test(id)) {
      return this.getByEmail(id);
    }

    return Promise.reject(`\`id\` does not appear to be a valid user identifier`);
  }
Exemplo n.º 3
0
        fn(ctx, activity) {
          return Promise.all([
            ctx.transform(`normalizeObject`, activity.actor),
            ctx.transform(`normalizeObject`, activity.object),
            ctx.transform(`normalizeObject`, activity.target)
          ]);
        }
      },
      {
        name: `normalizePerson`,
        // eslint-disable-next-line complexity
        fn(ctx, person) {
          const email = person.entryEmail || person.emailAddress || person.id;
          const id = person.entryUUID || person.id;

          if (patterns.email.test(email)) {
            person.entryEmail = person.emailAddress = email.toLowerCase();
          }
          else {
            Reflect.deleteProperty(person, `entryEmail`);
            Reflect.deleteProperty(person, `emailAddress`);
          }

          if (person.roomProperties) {
            person.roomProperties.isModerator = Boolean(person.roomProperties.isModerator);
          }

          if (patterns.uuid.test(id)) {
            person.entryUUID = person.id = id.toLowerCase();
            return Promise.resolve(person);
          }