Ejemplo n.º 1
0
        protected override async Task ProcessAsync()
        {
            AlertError.ComponentRemove();
            if (Button.IsClick)
            {
                var loginUserSession = Grid.RowSelect;

                var loginUserRoleAppList = (await Data.Query <LoginUserRoleApp>().Where(item => item.LoginUserName == loginUserSession.Name && item.LoginUserRoleIsActive == true).QueryExecuteAsync());
                if (!loginUserRoleAppList.Any())
                {
                    // Username does not exist
                    this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "Username or password wrong!", AlertEnum.Error);
                }
                else
                {
                    var    pageMain     = this.ComponentOwner <PageMain>();
                    string password     = loginUserSession.PasswordHash;                      // User entered password
                    string passwordHash = loginUserRoleAppList.First().LoginUserPasswordHash; // In db stored hash
                    string passwordSalt = loginUserRoleAppList.First().LoginUserPasswordSalt; // In db stored salt
                    if (passwordHash != null && !UtilFramework.PasswordIsValid(password, passwordHash, passwordSalt))
                    {
                        // Password wrong
                        this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "Username or password wrong!", AlertEnum.Error);
                    }
                    else
                    {
                        if (!loginUserRoleAppList.First().LoginUserIsActive)
                        {
                            // User not active
                            this.AlertError = new Alert(this.ComponentOwner <AppJson>(), "User not (yet) active.", AlertEnum.Warning);
                        }
                        else
                        {
                            // Login successful
                            pageMain.LoginUserRoleAppList = loginUserRoleAppList;
                            foreach (var item in pageMain.LoginUserRoleAppList)
                            {
                                item.LoginUserPasswordHash = null; // Remoe from session
                                item.LoginUserPasswordSalt = null; // Remove from session
                            }
                            var loginUserId = pageMain.LoginUserRoleAppList.First().LoginUserId;
                            await pageMain.GridNavigate.LoadAsync();

                            this.ComponentOwner <AppJson>().Navigate("/"); // Navigate to home after login
                        }
                    }
                }

                // Render grid ConfigDeveloper (coffee icon) if user is a developer.
                await Grid.LoadAsync();
            }
        }