loginUser: async function()

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;
    },