fetchAuthSession method Null safety
Cognito 인증세션을 fetch합니다.
Implementation
Future<User> fetchAuthSession() async {
LogManager().addLog("fetchAuthSession", screen: runtimeType.toString());
CognitoAuthSession session = await Amplify.Auth.fetchAuthSession(
options: CognitoSessionOptions(getAWSCredentials: true),
) as CognitoAuthSession;
LogManager().initCloudWatch(
awsAccessKey: userState.currentUser?.awsAccessKey,
awsSecretKey: userState.currentUser?.awsSecretKey,
awsSessionToken: userState.currentUser?.awsSessionToken,
);
LogManager().addLog("awsAccessKey: ${session.credentials?.awsAccessKey}", screen: runtimeType.toString());
LogManager().addLog("awsSecretKey: ${session.credentials?.awsSecretKey}", screen: runtimeType.toString());
LogManager().addLog("sessionToken: ${session.credentials?.sessionToken}", screen: runtimeType.toString());
/// CloudWatch에 로그를 남기기 위해서는 aws키가 필요합니다. aws키는 로그인이 되어있지 않은 상태에서도 받아올 수 있습니다.
/// id, username, name은 [getCurrentUser]에서 받아올 수 있으므로, getCurrentUser 이전에 출력된 로그도 cloudwatch에 남기기 위해 먼저 aws 키만 할당해놓습니다.
/// 이 상태에서의 cloudwatch에서 남기는 로그들이 저장되는 로그 그룹명은 null/null/null ... 과 같은 형태로 표시되게 됩니다.
/// 개선이 필요하긴 합니다.
userState.currentUser = User(
id: "null",
username: "null",
name: "null",
type: "owner",
awsAccessKey: session.credentials?.awsAccessKey,
awsSecretKey: session.credentials?.awsSecretKey,
awsSessionToken: session.credentials?.sessionToken,
);
return userState.currentUser!;
}