11import os
22from lib .authlete_sdk import AuthleteSdk
33from lib .exceptions import ValidationError , AuthleteApiError
4+ from lib .cognito_user_pool import CognitoUserPool
45from lib .utils import response_builder , logger , verify_supported_media_type
56
67
78def handler (event , context ):
9+ # 初期化処理
10+ token = {}
11+ authlete = None
812 try :
9- logger .info (event )
1013 if verify_supported_media_type (event ['headers' ]) is False :
1114 return response_builder (415 , {
1215 'error_message' : "This API only support 'content-type: application/x-www-form-urlencoded' media type"
@@ -16,7 +19,14 @@ def handler(event, context):
1619 api_key = os .environ ['AUTHLETE_API_KEY' ],
1720 api_secret = os .environ ['AUTHLETE_API_SECRET' ]
1821 )
22+ except Exception as e :
23+ logger .error (e )
24+ return response_builder (500 , {
25+ 'error_message' : 'Internal Server Error'
26+ })
1927
28+ # トークン取得処理
29+ try :
2030 grant_type = authlete .get_grant_type (
2131 body = event ['body' ]
2232 )
@@ -38,7 +48,6 @@ def handler(event, context):
3848 client_id = data ['client_id' ],
3949 client_secret = data ['client_secret' ]
4050 )
41- return response_builder (200 , token )
4251 elif grant_type == 'refresh_token' :
4352 if data .get ('client_secret' ) is None :
4453 token = authlete .get_access_token_from_refresh_token (
@@ -51,7 +60,6 @@ def handler(event, context):
5160 client_id = data ['client_id' ],
5261 client_secret = data ['client_secret' ]
5362 )
54- return response_builder (200 , token )
5563 else :
5664 return response_builder (400 , {
5765 'error_message' : 'invalid grant_type'
@@ -70,3 +78,30 @@ def handler(event, context):
7078 return response_builder (500 , {
7179 'error_message' : 'Internal Server Error'
7280 })
81+
82+ try :
83+ congito_user_pool = CognitoUserPool (
84+ user_pool_id = os .environ ['COGNITO_USER_POOL_ID' ]
85+ )
86+
87+ access_token = token .get ('access_token' )
88+ response_content = authlete .get_user_info (access_token = access_token )
89+ attributes = congito_user_pool .get_user_attributes (username = response_content ['sub' ])
90+ phone_number_verified = 'false'
91+
92+ for attribute in attributes :
93+ if attribute ['Name' ] == 'phone_number_verified' :
94+ phone_number_verified = attribute ['Value' ]
95+
96+ if phone_number_verified == 'true' :
97+ return response_builder (200 , token )
98+ else :
99+ return response_builder (403 , {
100+ 'error_message' : 'phone_number must be verified'
101+ })
102+
103+ except Exception as e :
104+ logger .error (e )
105+ return response_builder (500 , {
106+ 'error_message' : 'Internal Server Error'
107+ })
0 commit comments