Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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
        }
Example #6
0
        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();
        }