Apologies
You must be signed in to watch this lesson.
Signing in with Firebase Auth
SwiftUI Firebase Chat
import SwiftUIimport Firebaseclass FirebaseManager: NSObject {        let auth: Auth        static let shared = FirebaseManager()        override init() {        FirebaseApp.configure()                self.auth = Auth.auth()                super.init()    }    }struct LoginView: View {        @State var isLoginMode = false    @State var email = ""    @State var password = ""        var body: some View {        NavigationView {            ScrollView {                                VStack(spacing: 16) {                    Picker(selection: $isLoginMode, label: Text("Picker here")) {                        Text("Login")                            .tag(true)                        Text("Create Account")                            .tag(false)                    }.pickerStyle(SegmentedPickerStyle())                                            if !isLoginMode {                        Button {                                                    } label: {                            Image(systemName: "person.fill")                                .font(.system(size: 64))                                .padding()                        }                    }                                        Group {                        TextField("Email", text: $email)                            .keyboardType(.emailAddress)                            .autocapitalization(.none)                        SecureField("Password", text: $password)                    }                    .padding(12)                    .background(Color.white)                                        Button {                        handleAction()                    } label: {                        HStack {                            Spacer()                            Text(isLoginMode ? "Log In" : "Create Account")                                .foregroundColor(.white)                                .padding(.vertical, 10)                                .font(.system(size: 14, weight: .semibold))                            Spacer()                        }.background(Color.blue)                                            }                                        Text(self.loginStatusMessage)                        .foregroundColor(.red)                }                .padding()                            }            .navigationTitle(isLoginMode ? "Log In" : "Create Account")            .background(Color(.init(white: 0, alpha: 0.05))                            .ignoresSafeArea())        }        .navigationViewStyle(StackNavigationViewStyle())    }        private func handleAction() {        if isLoginMode {//            print("Should log into Firebase with existing credentials")            loginUser()        } else {            createNewAccount()//            print("Register a new account inside of Firebase Auth and then store image in Storage somehow....")        }    }        private func loginUser() {        FirebaseManager.shared.auth.signIn(withEmail: email, password: password) { result, err in            if let err = err {                print("Failed to login user:", err)                self.loginStatusMessage = "Failed to login user: \(err)"                return            }                        print("Successfully logged in as user: \(result?.user.uid ?? "")")                        self.loginStatusMessage = "Successfully logged in as user: \(result?.user.uid ?? "")"        }    }        @State var loginStatusMessage = ""        private func createNewAccount() {        FirebaseManager.shared.auth.createUser(withEmail: email, password: password) { result, err in            if let err = err {                print("Failed to create user:", err)                self.loginStatusMessage = "Failed to create user: \(err)"                return            }                        print("Successfully created user: \(result?.user.uid ?? "")")                        self.loginStatusMessage = "Successfully created user: \(result?.user.uid ?? "")"        }    }}

Comments (0)
HELP & SUPPORT