in amplify/backend/function/idvworkflowfn/src/idvfunctions.js [606:661]
loginUser: async function (imageDataBase64) {
const rek = new Rekognition();
var response = {
Success: false,
Message: ''
};
const collectionId = await graphqlhelpers.getActiveCollection();
if(!collectionId) {
response.Success = false;
response.Message = "Unable to fetch active collection";
return response;
}
var buf = Buffer.from(imageDataBase64, 'base64');
var params = {
CollectionId: collectionId,
FaceMatchThreshold: 95,
Image: {
Bytes: buf
}
};
const searchFacesResponse = await rek.searchFacesByImage(params).promise();
if (!searchFacesResponse ||
!searchFacesResponse.FaceMatches ||
searchFacesResponse.FaceMatches.length != 1) {
response.Success = false;
response.Message = "Unable to locate user w/ submitted photo";
return response;
}
const faceId = searchFacesResponse.FaceMatches[0].Face.FaceId;
const userInfo = await graphqlhelpers.getUserInfoByFaceId('Amazon', faceId);
if(userInfo && userInfo.items && userInfo.items.length == 1) {
response.Message = userInfo.items[0].userid;
response.Success = true;
response.Confidence = searchFacesResponse.FaceMatches[0].Face.Confidence;
response.CompanyId = userInfo.items[0].companyid;
response.UserId = userInfo.items[0].userid;
response.FirstName = userInfo.items[0].firstname;
response.LastName = userInfo.items[0].lastname;
response.DOB = userInfo.items[0].dob.toString();
response.RegistrationStatus = userInfo.items[0].registrationstatus;
response.FaceId = faceId;
response.FaceImage = userInfo.items[0].faceimage;
return response;
}
return response;
},