private async Task ValidSubmit()
        {
            var loginCancelEventArgs = new LoginCancelEventArgs();
            await OnLoggingIn.InvokeAsync(loginCancelEventArgs);

            if (loginCancelEventArgs.Cancel)
            {
                Model.Password = string.Empty;
            }
            else
            {
                var authenticateEventArgs = new AuthenticateEventArgs();
                await OnAuthenticate.InvokeAsync(authenticateEventArgs);

                if (authenticateEventArgs.Authenticated)
                {
                    await OnLoggedIn.InvokeAsync(EventArgs.Empty);

                    if (!string.IsNullOrEmpty(DestinationPageUrl))
                    {
                        NavigationManager.NavigateTo(DestinationPageUrl);
                    }

                    ShowFailureText = false;
                }
                else
                {
                    await OnLoginError.InvokeAsync(EventArgs.Empty);

                    Model.Password  = string.Empty;
                    ShowFailureText = true;
                }
            }
        }
 public virtual Task Authenticate(LtiAuthenticateContext context)
 {
     return(OnAuthenticate.Invoke(context));
 }