前提
1.amplify add auth
コマンドで認証サービスを作成する
amplify add auth
? Do you want to use the default authentication and security configuration? Default configuration
? How do you want users to be able to sign in? Username
? Do you want to configure advanced settings? No, I am done.
2.amplify push
コマンドで作成した認証サービスを AWS にデプロイし、
AWS のCognito
サービスへ反映する
amplify push
3.amplify console
コマンドでデプロイしたサービスを確認する
amplify console
実装
import Amplify, { Auth } from 'aws-amplify';
import config from "./aws-exports";
Amplify.configure(config);
/**
* 現在の設定を取得
* @returns 設定情報
*/
export function getAuthCurrentConfig() {
return Auth.configure();
}
/**
* サインアップ
* @param {object} userInfo ユーザ情報
* {username, password, email, phone_number}
* @returns サインアップ情報
*/
export async function signUp(userInfo) {
try {
const {
username,
password,
email,
phone_number
} = userInfo;
let userConfiger = {
username,
password
};
let attributes = {};
if (!!email) {
attributes = {
email
};
}
if (!!phone_number) {
attributes = {
...attributes,
phone_number
};
}
userConfiger = {...userConfiger, attributes };
return await Auth.signUp(userConfiger);
} catch (err) {
console.error('error:', err);
}
}
/**
* サインアップ再送
* @param {*} username ユーザ名
*/
export async function resendSignUp(username) {
try {
await Auth.resendSignUp(username);
} catch (err) {
console.error('error:', err);
}
}
/**
* サインアップ確認
* @param {string} username ユーザ名
* @param {string} code 認証コード
*/
export async function confirmSignUp(username, code) {
try {
await Auth.confirmSignUp(username, code);
} catch (err) {
console.error('error', err);
}
}
/**
* サインイン
* @param {string} username ユーザ名
* @param {string} password パスワード
* @returns ユーザ情報
*/
export async function signIn(username, password) {
try {
return await Auth.signIn(username, password);
} catch (err) {
console.error('error:', err);
}
}
/**
* サインアウト
*/
export async function signOut() {
try {
return await Auth.signOut();
} catch (err) {
console.error('error:', err);
}
}
/**
* グルバールサインアウト
*/
export async function globalSignOut() {
try {
await Auth.signOut({ global: true });
} catch (err) {
console.error('error:', err);
}
}
/**
* パスワード変更
* @param {object} cognitoUser cognitoユーザ
* @param {string} oldPassword 旧パスワード
* @param {string} newPassword 新パスワード
* @returns 変更結果
*/
export async function changePassword(cognitoUser, oldPassword, newPassword) {
try {
return await Auth.changePassword(cognitoUser, oldPassword, newPassword);
} catch (err) {
console.error('error:', err);
}
}
/**
* パースワードを忘れる
* @param {string} username ユーザ名
* @returns パスワードを忘れる結果
*/
export async function forgotPassword(username) {
try {
return await Auth.forgotPassword(username);
} catch (err) {
console.error('error:', err);
}
}
/**
* パスワード忘れサブミット
* @param {string} username ユーザ名
* @param {string} code 認証コード
* @param {string} password パスワード
* @returns 結果
*/
export async function forgotPasswordSubmit(username, code, password) {
try {
return await Auth.forgotPasswordSubmit(username, code, password);
} catch (err) {
console.error('error:', err);
}
}
/**
* 新パースワードを完了
* @param {object} cognitoUser cognitoユーザ
* @param {string} password パスワード
* @param {string} requiredAttributes 必須属性
* @returns 結果
*/
export async function completeNewPassword(cognitoUser, password, requiredAttributes) {
try {
return await Auth.completeNewPassword(cognitoUser, password, requiredAttributes);
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在セッションを取得
* @returns 現在セッション
*/
export async function currentSession() {
try {
return await Auth.currentSession();
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在ユーザ認証情報を取得
* @returns 現在ユーザ認証情報
*/
export async function currentAuthenticatedUser() {
try {
return await Auth.currentAuthenticatedUser();
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在資格情報取得
* @returns 現在情報資格
*/
export async function currentCredentials() {
try {
return await Auth.currentCredentials();
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在ユーザ資格情報取得
* @returns 現在ユーザ資格情報
*/
export async function currentUserCredentials() {
try {
return await Auth.currentUserCredentials();
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在ユーザ情報取得
* @returns 現在ユーザ情報
*/
export async function currentUserInfo() {
try {
return await Auth.currentUserInfo();
} catch (err) {
console.error('error:', err);
}
}
/**
* 現在ユーザプールユーザ取得
* @returns 現在ユーザプールユーザ
*/
export async function currentUserPoolUser() {
try {
return await Auth.currentUserPoolUser();
} catch (err) {
console.error('error:', err);
}
}
/**
* ユーザ属性取得
* @returns ユーザ属性
*/
export async function userAttributes() {
try {
return await Auth.userAttributes();
} catch (err) {
console.error('error:', err);
}
}
/**
* ユーザセッション取得
* @param {object} cognitoUser ユーザ
* @returns ユーザセッション
*/
export async function userSession(cognitoUser) {
try {
return await Auth.userSession(cognitoUser);
} catch (err) {
console.error('error:', err);
}
}
参考
Add authentication - React - AWS Amplify Gen 1 Documentation
aws-amplify.github.io