【问题标题】:Aws Cognito + Angular 7 - How to create user and assign user to a user group in same timeAws Cognito + Angular 7 - 如何同时创建用户并将用户分配给用户组
【发布时间】:2019-07-07 10:37:16
【问题描述】:

我想同时创建 Cognito 用户并将用户分配给用户组。当你必须创建一个 observable 时,这对我来说很好。但是当有必要创建一个发出两个请求的可观察对象时,我不工作。我认为我们需要使用forkJoinflatMap。我使用 Angular 7 所以 RxJs 6.x。

创建代码OK:

createUser(user: User): Observable<User[]> {
    const _self = this;
    const cognitoidentityserviceprovider = new AWSCognito.CognitoIdentityServiceProvider({
      credentials: this.getCognitoCreds()
    });
    const params = {
      UserPoolId: this.poolData.UserPoolId,
      Username: user.username,
      DesiredDeliveryMediums: [ 'EMAIL' ],
      ForceAliasCreation: false,
      MessageAction: 'SUPPRESS',
      TemporaryPassword: '1234fooo*',
      UserAttributes: [
        {
          Name: 'email',
          Value: user.email
        }
      ]
    };
    return Observable.create(obs => {
      cognitoidentityserviceprovider.adminCreateUser(params, function(error, data) {
        if (error) {
          console.log(error);
          return Observable.throw(error || 'Server error');
        } else {
          console.log(data);
          //
          //
          // HERE user is create  :)
          // I want add to group here (see code down in this post) 
          //
          //
          return obs.next(data);
        }
      });
    });
  }

添加组码OK:

const p = {
            GroupName: 'admin',
            UserPoolId: _self.poolData.UserPoolId,
            Username: user.username
          };
          return Observable.create(o => {
            cognitoidentityserviceprovider.adminAddUserToGroup(p, function(err, d) {
              if (err) {
                console.log(err);
                return Observable.throw(err || 'Server error');
              } else {
                console.log(d);
                return o.next(d);
              }
            });
          });

【问题讨论】:

    标签: angular observable amazon-cognito


    【解决方案1】:

    我将第一个 observable 放在 const 中,然后返回这个 observable .pipe(mergeMap((u: CognitoUser) => {2nd observable}

    createUser(user: User): Observable<User[]> {
        const _self = this;
        const cognitoidentityserviceprovider = new AWSCognito.CognitoIdentityServiceProvider({
          credentials: this.getCognitoCreds()
        });
        const params = {
          UserPoolId: this.poolData.UserPoolId,
          Username: user.username,
          DesiredDeliveryMediums: [ 'EMAIL' ],
          ForceAliasCreation: false,
          MessageAction: 'SUPPRESS',
          TemporaryPassword: '1234Fooo*',
          UserAttributes: [
            {
              Name: 'email',
              Value: user.email
            }
          ]
        };
        const o = Observable.create(obs => {
          cognitoidentityserviceprovider.adminCreateUser(params, function(error, data) {
            if (error) {
              console.log(error);
              return Observable.throw(error || 'Server error');
            } else {
              console.log(data);
              return obs.next(data.User);
            }
          });
        });
        return o.pipe(mergeMap((u: CognitoUser) => {
          const p = {
            GroupName: 'admin',
            UserPoolId: _self.poolData.UserPoolId,
            Username: u.Username
          };
          return Observable.create(ob => {
            cognitoidentityserviceprovider.adminAddUserToGroup(p, function(err, d) {
              if (err) {
                console.log(err);
                return Observable.throw(err || 'Server error');
              } else {
                console.log(d);
                return ob.next(d);
              }
            });
          });
        }));
      }
    

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 2018-07-28
      • 2021-09-04
      • 2017-12-03
      • 2019-07-31
      • 2019-10-06
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多