web-dev-qa-db-ja.com

AWS Cognito / Amplify-新しいユーザーのサインアップをユーザーグループに自動的に追加します

AWS Amplifyライブラリを使用して、AppSyncプロジェクトのサインアップと認証を実行しています。これはCognitoを使用します。ただし、Amplify/Cognitoを介して新しいユーザーがサインアップすると、新しいユーザーはコグニトプール内の特定のグループに割り当てられません。ログイン/サインアップにAmplifyの高次コンポーネントを使用しています。

import { withAuthenticator } from 'aws-amplify-react';

私はコンポーネントをラップします

class Authenticator extends React.Component {
   //... basically empty component, only exists so I can wrap it w/ the HOC
}
export default withAuthenticator(Authenticator)

Amplifyはindex.jsで設定されます

import config from './aws-exports';
import Amplify from 'aws-amplify';
Amplify.configure(config);

aws-exports.jsはAWS Mobile Hub CLIによって自動生成されました。のように見えます...

const awsmobile = {
    'aws_app_analytics': 'enable',
    'aws_cognito_identity_pool_id': 'us-west-2:XXX',
    'aws_cognito_region': 'us-west-2',
    'aws_content_delivery': 'enable',
    'aws_content_delivery_bucket': 'flashcards-hosting-mobilehub-XXX',
    'aws_content_delivery_bucket_region': 'us-west-2',
    'aws_content_delivery_cloudfront': 'enable',
    'aws_content_delivery_cloudfront_domain': 'XXX.cloudfront.net',
    'aws_mandatory_sign_in': 'enable',
    'aws_mobile_analytics_app_id': 'XXX',
    'aws_mobile_analytics_app_region': 'us-east-1',
    'aws_project_id': 'XXX',
    'aws_project_name': 'flash-cards',
    'aws_project_region': 'us-west-2',
    'aws_resource_name_prefix': 'flashcards-mobilehub-XXX',
    'aws_sign_in_enabled': 'enable',
    'aws_user_pools': 'enable',
    'aws_user_pools_id': 'us-west-2_XXX',
    'aws_user_pools_mfa_type': 'OFF',
    'aws_user_pools_web_client_id': 'XXX',
}
export default awsmobile;
9
honkskillet

最初に、amplify update authを実行しているamplify cliを使用して管理クエリを追加する必要があります。その後、管理ユーザーのみの管理クエリをブロックする必要があります。出力コードはamplify/backend/function/に表示されます。

変更をプッシュした後、以下を使用できます。

async function addToGroup() { 
    let apiName = 'AdminQueries';
    let path = '/addUserToGroup';
    let myInit = {
        body: {
          "username" : "username",
          "groupname": "groupname"
        }, 
        headers: {
          'Content-Type' : 'application/json',
          Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`
        } 
    }
    return await API.post(apiName, path, myInit);
}

Amplifyを使用してユーザーをロールに追加するには、メールのみでサインアップする場合はユーザーIDを確認します。このamplifyの変更に関するドキュメントは、こちらから入手できます https://aws.Amazon.com/es/blogs/mobile/amplify-framework-adds-supports-for-aws-lambda-triggers-in-auth-and -storage-categories /

0
ornitorrincco