Created
January 4, 2022 20:32
-
-
Save mitnick78/105f64e544217cfb4102f370681a9c8b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
import Firebase | |
import LocalAuthentication | |
class AuthViewModel: ObservableObject { | |
@Published var userSession: FirebaseAuth.User? | |
@Published var showError: Bool = false | |
@Published var msgError: String = "" | |
@Published var email = "" | |
@Published var password = "" | |
// Mark: FaceID Propreties | |
@AppStorage("use_face_id") var useFaceID: Bool = false | |
@AppStorage("use_face_email") var faceEmail: String = "" | |
@AppStorage("use_face_password") var facePassword: String = "" | |
@AppStorage("log_status") var logStatus: Bool = false | |
static let shared = AuthViewModel() | |
init(){ | |
userSession = Auth.auth().currentUser | |
} | |
// Mark : Firebase Login | |
func login(useFaceID: Bool, email: String = "", password: String = "" ) async throws { | |
let result = try await Auth.auth().signIn(withEmail: email != "" ? email : self.email , password: password != "" ? password : self.password) | |
DispatchQueue.main.async { | |
if useFaceID { | |
print(" test login => \(useFaceID)") | |
// Mark: Storing for future face Id Login | |
self.useFaceID = useFaceID | |
self.faceEmail = self.email | |
self.facePassword = self.password | |
} | |
self.userSession = result.user | |
} | |
} | |
// Mark: FaceID usage | |
func getBioMetricStatus() -> Bool { | |
let scanner = LAContext() | |
return scanner.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: .none) | |
} | |
// Mark: FaceID login | |
func authenticateUser() async throws { | |
let status = try await LAContext().evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Login pour l'application") | |
if status { | |
print(self.facePassword) | |
print(self.faceEmail) | |
try await login(useFaceID: useFaceID, email: self.faceEmail, password: self.facePassword) | |
} | |
} | |
func signout() { | |
self.userSession = nil | |
try? Auth.auth().signOut() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment