public void Startup() { _yotiProfile = new YotiProfile(); _yotiUserProfile = new YotiUserProfile(); _activity = new Activity(_yotiProfile, _yotiUserProfile); _attributeList = new AttrpubapiV1.AttributeList(); }
/// <summary> /// Gets the <see cref="YotiUserProfile"/> provided by Yoti after a successful login /// </summary> /// <param name="loginInfo">The <see cref="ExternalLoginInfo"/> retrieved after an external login event.</param> /// <returns>The <see cref="YotiUserProfile"/> or null if this was not a Yoti login.</returns> public static YotiUserProfile GetYotiProfile(this ExternalLoginInfo loginInfo) { if (loginInfo.Login.LoginProvider != Constants.DefaultAuthenticationType) { return(null); } var profile = new YotiUserProfile(); foreach (Claim claim in loginInfo.ExternalIdentity.Claims) { switch (claim.Type) { case ClaimTypes.NameIdentifier: profile.Id = claim.Value; break; case "selfie": ImageType imageType; if (Enum.TryParse(claim.ValueType, out imageType)) { profile.Selfie = new Image { Type = imageType, Data = Convert.FromBase64String(claim.Value) }; } break; case "given_names": profile.GivenNames = claim.Value; break; case "family_name": profile.FamilyName = claim.Value; break; case "phone_number": profile.MobileNumber = claim.Value; break; case "email_address": profile.EmailAddress = claim.Value; break; case "date_of_birth": { DateTime date; if (DateTime.TryParseExact(claim.Value, "yyyy-MM-dd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date)) { profile.DateOfBirth = date; } } break; case "postal_address": profile.Address = claim.Value; break; case "gender": profile.Gender = claim.Value; break; case "nationality": profile.Nationality = claim.Value; break; default: YotiAttributeValue.TypeEnum valueType; if (Enum.TryParse(claim.ValueType, out valueType)) { profile.OtherAttributes.Add(claim.Type, new YotiAttributeValue(valueType, claim.Value)); } break; } } return(profile); }
/// <summary> /// Gets the <see cref="YotiUserProfile"/> provided by Yoti after a successful login /// </summary> /// <param name="loginInfo">The <see cref="ExternalLoginInfo"/> retrieved after an external login event.</param> /// <returns>The <see cref="YotiUserProfile"/> or null if this was not a Yoti login.</returns> public static YotiUserProfile GetYotiProfile(this ExternalLoginInfo loginInfo) { if (loginInfo.Login.LoginProvider != Constants.DefaultAuthenticationType) { return(null); } var profile = new YotiUserProfile(); foreach (Claim claim in loginInfo.ExternalIdentity.Claims) { switch (claim.Type) { case ClaimTypes.NameIdentifier: profile.Id = claim.Value; break; case "selfie": TypeEnum imageType; if (Enum.TryParse(claim.ValueType, out imageType)) { profile.Selfie = new Image { Type = imageType, Data = Convert.FromBase64String(claim.Value) }; } break; case "given_names": profile.GivenNames = claim.Value; break; case "family_name": profile.FamilyName = claim.Value; break; case "full_name": profile.FullName = claim.Value; break; case "phone_number": profile.MobileNumber = claim.Value; break; case "email_address": profile.EmailAddress = claim.Value; break; case "date_of_birth": { if (DateTime.TryParseExact(claim.Value, "yyyy-MM-dd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime date)) { profile.DateOfBirth = date; } } break; case "postal_address": profile.Address = claim.Value; break; case "gender": profile.Gender = claim.Value; break; case "nationality": profile.Nationality = claim.Value; break; default: if (claim.Type.StartsWith(Constants.AttributeAgeOver) || claim.Type.StartsWith(Constants.AttributeAgeUnder)) { bool parsed = Boolean.TryParse(claim.Value, out bool IsAgeVerified); if (!parsed) { throw new FormatException( String.Format( "'{0}' value was unable to be parsed into a bool", claim.Value)); } profile.IsAgeVerified = IsAgeVerified; break; } else { if (Enum.TryParse(claim.ValueType, out YotiAttributeValue.TypeEnum valueType)) { profile.OtherAttributes.Add(claim.Type, new YotiAttributeValue(valueType, claim.Value)); } break; } } } return(profile); }
/// <summary> /// Initializes a <see cref="YotiAuthenticatedContext"/> /// </summary> /// <param name="context">The OWIN environment</param> /// <param name="user">The Yoti user info</param> public YotiAuthenticatedContext(IOwinContext context, YotiUserProfile user) : base(context) { User = user; }