Пример #1
0
        private async Task WebNavigatingAsync(string url)
        {
            var unescapedUrl = System.Net.WebUtility.UrlDecode(url);

            if (unescapedUrl.Equals(GlobalSettings.Instance.RegisterCallback))
            {
                LoginUrl = _identityService.CreateAuthorizationRequestUri();
                IsLogin  = true;
                IsBusy   = true;
            }
            else if (unescapedUrl.Equals(GlobalSettings.Instance.LogoutCallback))
            {
                _settingsService.AuthAccessToken = string.Empty;
                _settingsService.AuthIdToken     = string.Empty;
                _settingsService.UserName        = string.Empty;
                _settingsService.UserId          = string.Empty;

                IsLogin  = false;
                LoginUrl = _identityService.CreateAuthorizationRequestUri();
            }
            else if (unescapedUrl.Contains(GlobalSettings.Instance.Callback))
            {
                var authResponse = new AuthorizeResponse(url);
                if (!string.IsNullOrWhiteSpace(authResponse.Code))
                {
                    var userToken = await _identityService.GetTokenAsync(authResponse.Code);

                    string accessToken = userToken.AccessToken;

                    if (!string.IsNullOrWhiteSpace(accessToken))
                    {
                        _settingsService.AuthAccessToken = accessToken;
                        _settingsService.AuthIdToken     = authResponse.IdentityToken;

                        IsBusy = true;

                        var userInfo = await _userService.GetUserInfoAsync();

                        _settingsService.UserName = userInfo.PreferredUserName;
                        _settingsService.UserId   = userInfo.UserId;

                        _menuService.RemovePageFromMenu <LoginPageModel>();
                        _menuService.AddPageInMenu <UserPageModel>("Пользователь", "Главное меню", '\uf007'.ToString(), Color.Red);

                        await CoreMethods.PushPageModel <MainPageModel>();

                        CoreMethods.RemoveFromNavigation();
                        IsBusy = false;
                    }
                }
            }
        }
Пример #2
0
        private async Task LogoutAsync()
        {
            //_userDialogs.ShowLoading("Загрузка");

            IsBusy = true;
            // Logout
            _menuService.RemovePageFromMenu <UserPageModel>();
            _menuService.AddPageInMenu <LoginPageModel>("Вход", "Главное меню", '\uf090'.ToString());
            await CoreMethods.PushPageModel <LoginPageModel>(new LogoutParameter { Logout = true });

            CoreMethods.RemoveFromNavigation();

            //_userDialogs.HideLoading();
            IsBusy = false;
        }