Сохраните пользовательский атрибут в пользовательской базе данных вместо userpool - PullRequest
1 голос
/ 23 мая 2019

Я настраиваю конечную точку для сохранения пользовательского атрибута для пользователя в базе данных вместо пула Cognito. Причина, по которой я это делаю, заключается в ограничении пула congnito для изменения атрибутов, и оно очень ограничено только 25 атрибутами. Проблема в том, что у меня есть ссылка для приглашения от зарегистрированного пользователя с его referralId. Когда ссылка нажата, она отображает страницу регистрации с просьбой зарегистрироваться незарегистрированному пользователю. Когда он регистрируется и, если обещание Auth.signup выполнено, он перенаправляется на страницу с благодарностью, в которой он просит подтвердить адрес электронной почты перед входом в систему. На данный момент я могу фактически извлечь referralId из параметра запроса (http://localhost:3000/invite?referralId={id}).

Я запутался на этом этапе, как я могу определить свою безсерверную конечную точку, потому что signInSession является неопределенным, поскольку пользователь еще не подтвержден! Если пользователь входит в свою электронную почту и проверяет электронную почту, я не могу получить referralId на этом этапе, потому что он был установлен в MessageCustomizations пула Cognito.

Я попробовал следующий код для настройки конечной точки без сервера

Поскольку я использую реагирование в интерфейсе, вот как я post запросил referrerId.

import HttpClient from './httpClient';

class UserCustomAttributesController extends HttpClient {
  saveReferrerId = async (referrerId) => {
    const response = await this.client.post(`/invite?referredId=${referrerId}`);
    return response.data;
  };
}

export default new UserCustomAttributesController();

Хотя в бэкэнде,

    handler: lib/functions/updateUser/index.handler
    events: 
      - http: 
          path: /invite
          method: put
          request: 
            template: 
              application/json: '{ "referrerId" : "$input.params(''referrerId'')" }' 
          cors: 
            origin: "*"
            headers: 
              - Content-Type
              - X-Amz-Date
              - Authorization
              - X-Api-Key
              # - X-Amz-Security-Token
              - X-Amz-User-Agent
            allowCredentials: true
          authorizer: 
            type: COGNITO_USER_POOLS
            authorizerId:
              Ref: ApiGatewayAuthorizer

Я хочу сохранить referrerId для пользователя в базе данных. У меня нет никакого лидерства, так как я только начинаю учиться без сервера и aws.

...