public async Task RefreshLayoutAsync() { var remoteStatus = NavigationManager.GetQueryString <string>("remoteStatus"); var remoteMessage = NavigationManager.GetQueryString <string>("remoteMessage"); if (remoteStatus != null && remoteMessage != null) { var refreshAuthenticationStateStr = NavigationManager.GetQueryString <string>("refreshAuthenticationState"); var refreshAuthenticationState = !refreshAuthenticationStateStr.IsNullOrWhiteSpace() && Convert.ToBoolean(refreshAuthenticationStateStr); if (refreshAuthenticationState) { var currentUrlWoQs = NavigationManager.Uri.BeforeFirstOrWholeIgnoreCase("?"); var qs = NavigationManager.Uri.QueryStringToDictionary(); qs.Remove("refreshAuthenticationState"); UserAuthStateProvider.StateChanged(); NavigationManager.NavigateTo($"{currentUrlWoQs}?{qs.ToQueryString()}", true); } } AuthenticatedUser = (await AccountService.GetAuthenticatedUserAsync())?.Result; await JsRuntime.InvokeVoidAsync("blazor_MainLayout_RefreshLayout"); StateHasChanged(); }
private async Task ExternalLoginAuthorizeAsync(LoginUserVM queryUser) { SetButtonsState(ButtonState.Disabled); _btnExternalLoginStates[queryUser.ExternalProvider] = ButtonState.Loading; var externalSchemes = LoginUserVM.ExternalLogins.ToList(); // would be overwritten by automapper; Mapper.Map(queryUser, LoginUserVM); LoginUserVM.ExternalLogins = externalSchemes; var externalLoginResult = await AccountService.ExternalLoginAuthorizeAsync(LoginUserVM); if (externalLoginResult.IsError) { SetButtonsState(ButtonState.Enabled); EditContext.AddValidationMessages(_validator.MessageStore, externalLoginResult.ValidationMessages); await Main.PromptMessageAsync(PromptType.Error, externalLoginResult.Message); return; } NavigationManager.NavigateTo(externalLoginResult.Result.ReturnUrl); await Main.PromptMessageAsync(PromptType.Success, externalLoginResult.Message); UserAuthStateProvider.StateChanged(); }
protected async Task FormRegister_ValidSubmitAsync() { _btnRegisterState = ButtonState.Loading; var registrationResult = await AccountService.RegisterAsync(RegisterUserVM); if (registrationResult.IsError) { _btnRegisterState = ButtonState.Enabled; if (registrationResult.Result?.ReturnUrl != null && RegisterUserVM.ReturnUrl != registrationResult.Result.ReturnUrl) { NavigationManager.NavigateTo(registrationResult.Result.ReturnUrl); // redirect to `ResendEmailConfirmation` on successful registration but when email couldn't be deployed } EditContext.AddValidationMessages(_validator.MessageStore, registrationResult.ValidationMessages); await Main.PromptMessageAsync(PromptType.Error, registrationResult.Message); return; } var registereduser = registrationResult.Result; NavigationManager.NavigateTo(registereduser.ReturnUrl); await Main.PromptMessageAsync(PromptType.Success, registrationResult.Message); UserAuthStateProvider.StateChanged(); }
protected async Task BtnLogout_ClickAsync() { var logoutAsync = await AccountService.LogoutAsync(); if (logoutAsync.IsError) { await PromptMessageAsync(PromptType.Error, logoutAsync.Message); return; } await PromptMessageAsync(PromptType.Success, logoutAsync.Message); UserAuthStateProvider.StateChanged(); }
public async Task FormEdit_ValidSubmitAsync() { _btnSaveEditsState = ButtonState.Loading; var editResponse = await AccountService.EditAsync(EditUserVM); if (editResponse.IsError) { _btnSaveEditsState = ButtonState.Enabled; EditContext.AddValidationMessages(_validator.MessageStore, editResponse.ValidationMessages); await Main.PromptMessageAsync(PromptType.Error, editResponse.Message); return; } Mapper.Map(editResponse.Result, EditUserVM); // rebinding user would break the existing references, for the mapping to work properly 'EditUserVM --> EditUserVM' is required, otherwise the new object will be created properly but the existing destination won't be updated ParametersService.Parameters[nameof(EditUserVM)] = EditUserVM; NavigationManager.NavigateTo(EditUserVM.ReturnUrl); await Main.PromptMessageAsync(PromptType.Success, editResponse.Message); UserAuthStateProvider.StateChanged(); // mandatory since we are logging user out if the email was changed }
protected async Task FormLogin_ValidSubmitAsync() { SetButtonsState(ButtonState.Disabled); _btnLoginState = ButtonState.Loading; var loginResult = await AccountService.LoginAsync(LoginUserVM); if (loginResult.IsError) { SetButtonsState(ButtonState.Enabled); EditContext.AddValidationMessages(_validator.MessageStore, loginResult.ValidationMessages); await Main.PromptMessageAsync(PromptType.Error, loginResult.Message); return; } NavigationManager.NavigateTo(loginResult.Result.ReturnUrl); await Main.PromptMessageAsync(PromptType.Success, loginResult.Message); UserAuthStateProvider.StateChanged(); }