Functions for persistence (setLoggedUser) and get a logged user (getLoggedUser)

Here is the lesson code:


Module Accounts {
    void setLoggedUser (User user) {
        loggedUser = user

        broker.localPersistence.save("loggedUserName", user.name)
        broker.localPersistence.save("loggedUserScore", user.score)
        broker.localKeychain.save("loggedUserPassword", user.password)
    }

    User performLogin (String username, String password) {
        if (username == null || username.trim().length() < 1) {
            broker.ui.showAlert(“Oops”, “Please enter your username.”)
            return null
        }

        if (password == null || password.length() < 1) {
            broker.ui.showAlert(“Oops”, “Please enter your password.”)
            return null
        }

        Filter userNameFilter = Filter(modelName: "User")
        userNameFilter.equalTo("name", username.trim())
        Array existingUsers = broker.cloudPersistence.getWithFilter(userNameFilter)

        if (existingUsers.size() == 0) {
           broker.ui.showAlert(“Oops”, "There’s no user with username: " + username)
           return null
        }
        
        User user = existingUsers.get(0)
        
        if (user.password != password) {
            broker.ui.showAlert(“Oops”, "The password you have entered is wrong.")
            return null
        }

        return user
    }

    User getLocalPersistedUser () {
        User user

        if (broker.localPersistence.hasKey("loggedUserName")) {
            user = User()
            user.name = broker.localPersistence.get("loggedUserName")
            user.score = broker.localPersistence.get("loggedUserScore")
            user.password = broker.localKeychain.get("loggedUserPassword")
        }

        return user
    }
}


RuleContext LoginContext {
    Rule login {
        Login loginExp = broker.ui.getDataSource()
        User user = Accounts.performLogin(loginExp.username, loginExp.password)

        if (user != null) {
            Accounts.setLoggedUser(user)
            Welcome welcomeDataSource = Welcome()
            welcomeDataSource.greetings = "Welcome " + user.name + " to the treasure hunt app!"
            broker.ui.push(“Welcome”, welcomeDataSource)
        }
    }
}

Application {
    Array treasureScores
    User loggedUser
    
    OnInit {
        treasureScores = [10, 20, 30, 50, 100]

        loggedUser = Accounts.getLocalPersistedUser()
        
        if (loggedUser != null) {
            Welcome welcomeDataSource = Welcome()
            welcomeDataSource.greetings = "Welcome " + loggedUser.name + " to the treasure hunt app!"
            broker.ui.push("Welcome", welcomeDataSource)
            
        } else {
            broker.ui.push("Login")
        }
    }
}

> Next