func authenticateUser() {
let context = LAContext()
_ = "Authentication is needed to access your notes."
var policy: LAPolicy?
if #available(iOS 9.0, *) {
policy = .deviceOwnerAuthentication
} else {
context.localizedFallbackTitle = "Fuu!"
policy = .deviceOwnerAuthenticationWithBiometrics
}
context.evaluatePolicy(policy!, localizedReason: "Please Add your touch Id", reply: { (success, error) in
DispatchQueue.main.async {
RKDropdownAlert.title(NSLocalizedString("Success", comment: ""), message: NSLocalizedString("User Touch Id Enrolled Successfully", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
guard success else {
guard let error = error else {
return
}
switch(error) {
case LAError.authenticationFailed:
break
case LAError.userCancel:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("User cancelled", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.userFallback:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("The user tapped the fallback", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.systemCancel:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("Authentication was canceled by system", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.passcodeNotSet:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("Passcode is not set on the device", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.touchIDNotAvailable:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("Touch ID is not available on the device", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.touchIDNotEnrolled:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("TTouch ID has no enrolled fingers", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.touchIDLockout:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("here were too many failed Touch ID attempts and Touch ID is now locked", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.appCancel:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("Authentication was canceled by application", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
case LAError.invalidContext:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("LAContext passed to this call has been previously invalidated.", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
default:
RKDropdownAlert.title(NSLocalizedString("Error", comment: ""), message: NSLocalizedString("Touch ID may not be configured", comment: ""), backgroundColor: BMConstants.KAppBGColor, textColor: BMConstants.KAppWhiteColor)
break
}
return
}
}
}
)
}