Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Has the user signed in?
- if (NSUserDefaults.standardUserDefaults().valueForKey("uid") != nil && UserAccountService.firebaseDBService.CURRENT_USER_REF.authData != nil) {
- //User is already signed in
- self.performSegueWithIdentifier("dashboardView", sender: self)
- } else {
- //User must sign in first
- self.performSegueWithIdentifier("signInView", sender: self)
- }
- UserAccountService.firebaseDBService.BASE_REF.createUser(email, password: password, withValueCompletionBlock: { error, result in
- if error != nil {
- // an error occurred while attempting sign up
- if let errorCode = FAuthenticationError(rawValue: error.code) {
- switch (errorCode) {
- case .EmailTaken:
- print("Error: Email already in use: (email)")
- self.displayErrorMessage(EMAIL_TAKEN_DB_ERROR_TITLE, message: EMAIL_TAKEN_DB_ERROR_MESSAGE);
- return
- case .InvalidEmail:
- print("Error: Invalid email address: (email)")
- self.displayErrorMessage(INVALID_EMAIL_DB_ERROR_TITLE, message: INVALID_EMAIL_DB_ERROR_MESSAGE);
- return
- case .InvalidPassword:
- print("Error: Invalid password: (password)")
- self.displayErrorMessage(INVALID_PASSWORD_DB_ERROR_TITLE, message:INVALID_PASSWORD_DB_ERROR_MESSAGE);
- return
- default:
- print("Error creating user: (error.description)")
- self.displayErrorMessage(ACCOUNT_CREATION_DB_ERROR_TITLE, message: ACCOUNT_CREATION_DB_ERROR_MESSAGE);
- return
- }
- }
- } else {
- // Create and Login the New User with authUser
- UserAccountService.firebaseDBService.BASE_REF.authUser(email, password: password, withCompletionBlock: { error, authData in
- if error != nil {
- // an error occurred while attempting sign in
- print("Error: Error encountered when getting user details after the account was created (error.description)")
- self.displayErrorMessage(PROBLEM_GETTING_USER_DETAILS_FROM_DB_ERROR_TITLE, message: PROBLEM_GETTING_USER_DETAILS_FROM_DB_ERROR_MESSAGE)
- return
- } else {
- // Create a user object and get the user information in a Dictionary<String, String>
- let user = User(uid: authData.uid! , email: email!, firstName: firstName!, lastName: lastName!, provider: authData.provider!)
- let userDictionary = user.getUserDictionary(user)
- // Add new account to the Firebase database
- UserAccountService.firebaseDBService.createNewAccount(authData.uid, user: userDictionary)
- }
- })
- // Store the uid for future access
- NSUserDefaults.standardUserDefaults().setValue(result["uid"], forKey: "uid")
- import Foundation
- import Firebase
- class UserAccountService {
- static let firebaseDBService = UserAccountService()
- private var _BASE_REF = Firebase(url: "(BASE_URL)")
- private var _USER_REF = Firebase(url: "(BASE_URL)/user")
- var BASE_REF: Firebase {
- return _BASE_REF
- }
- var USER_REF: Firebase {
- return _USER_REF
- }
- var CURRENT_USER_REF: Firebase {
- let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as! String
- let currentUser = Firebase(url: "(BASE_REF)").childByAppendingPath("user").childByAppendingPath(userID)
- return currentUser!
- }
- func createNewAccount(uid: String, user: Dictionary<String, String>) {
- // A User is born.
- USER_REF.childByAppendingPath(uid).setValue(user)
- print("User info saved to Firebase: user: (user)")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement