Пример #1
0
        /// Caso dê algum erro na autenticação, devemos voltar
        /// para o estado original das views, assim podemos
        /// fazer uma animação de retorno
        private async Task OnErrorLoadingAsync()
        {
            // Caso seu servidor responda muito rápido, pode ser que a
            // animação ainda esteja sendo executada, por isso
            // utilizamos o TaskCompletationSource para aguardar o término da animaçao de loading
            _ = await loadingAnimationTask.Task;

            // Voltamos a visibilidade do botao de login
            _ = await LoginButton.FadeTo(1, 100);

            // Deixaremos novamente o Frame no tamanho/posicão exatos do login
            var rectTo = new Rectangle(0, LoginButton.Y, LoginButton.Width, LoginButton.Height);

            // Criamos a transiçao do raio do frame + o tamanh/posição (Layout) + a cor defundo
            // E aguardamos a execução de todas
            _ = await Task.WhenAll(
                LoginFrame.CornerRadiusTo(LoginButton.CornerRadius),
                LoginFrame.LayoutTo(rectTo, 500, Easing.SpringOut),
                LoginFrame.BackgroundColorTo(Color.Transparent, 1000));

            // Finalizamos deixando o Frame Invisível
            // Pode parecer redundante, pois deixamos o fundo transparente
            // Mas parece que o comportamento do `IsVisible` não cooperou pra mim no IOS
            // Pode ser um bug na versão atual do Xamarin.Forms, ainda vou investigar mais
            LoginFrame.IsVisible = false;
        }
Пример #2
0
 void NavigationSetup()
 {
     Messenger.Default.Register <NavigateArgs>(this, (x) =>
     {
         LoginFrame.Navigate(new Uri(x.Url, UriKind.Relative));
     });
 }
Пример #3
0
        /// Caso o login seja efetuado com sucesso iremos transitar para a MainPage
        private async Task OnSuccessLoginAsync()
        {
            // Caso seu servidor responda muito rápido, pode ser que a
            // animação ainda esteja sendo executada, por isso
            // utilizamos o TaskCompletationSource para aguardar o término da animaçao de loading
            _ = await loadingAnimationTask.Task;

            // Aqui a ideia é saber dinamicamente o quão deslocado do ponto zero, da ContentPage,
            // O LoginFrame está, para a gente conseguir deslocá-lo até o canto superior esquerdo da tela
            // Para isso calculamos sua posição absoluta
            (var absX, var absY) = ((VisualElement)LoginFrame.Parent).GetAbsolutePosition();

            // Criamos entao a posiçao final, reduzindo toda a posiçao absoluta do frame e
            // o tamanho total, que será o mesmo tamanho da página
            var rectTo = new Rectangle(-absX, -absY, this.Width, this.Height);

            // Buscamos, nos resources, a cor de fundo que aplicamos na MainPage
            // para simular que o botão está se tornando a proxima página
            var mainPageBackgroundColor = (Color)Application.Current.Resources["CorDeFundo"];

            // Criamos a transiçao do raio do frame + o tamanh/posição (Layout) + a cor defundo
            // E aguardamos a execução de todas
            _ = await Task.WhenAll(
                LoginFrame.CornerRadiusTo(0, 500),
                LoginFrame.LayoutTo(rectTo, 500, Easing.SpringOut),
                LoginFrame.BackgroundColorTo(mainPageBackgroundColor, 1000));

            // Por fim executamos a navegaçao para a MainPage
            await Navigation.PushAsync(new MainPage());
        }
 public LoginControl()
 {
     this.InitializeComponent();
     if (!String.IsNullOrWhiteSpace(AppSettings.Current.Username))
     {
         LoginFrame.Navigate(typeof(LoginPage), true);
     }
     else
     {
         LoginFrame.Navigate(typeof(RegisterPage));
     }
 }
Пример #5
0
        private async Task <string> loginUser(string email, string password)
        {
            try
            {
                var request = HttpWebRequest.Create("https://www.blackdesertonline.com/launcher/l/api/Login.json");
                request.Method      = "POST";
                request.ContentType = "application/x-www-form-urlencoded";

                byte[] data = Encoding.UTF8.GetBytes(string.Format("email={0}&password={1}", email, password));
                using (var reqStream = await request.GetRequestStreamAsync())
                {
                    await reqStream.WriteAsync(data, 0, data.Length);
                }
                using (var res = await request.GetResponseAsync())
                {
                    using (var resStream = res.GetResponseStream())
                    {
                        using (var reader = new StreamReader(resStream))
                        {
                            string token1 = await reader.ReadToEndAsync();

                            LoginFrame loginFrame = JsonConvert.DeserializeObject <LoginFrame>(token1);
                            if (loginFrame.result.token != null)
                            {
                                string token2 = await GetPlayToken(loginFrame.result.token);

                                JObject obj = JObject.Parse(token2);
                                if (obj["result"]["token"] != null)
                                {
                                    return(obj["result"]["token"].ToString());
                                }
                                else
                                {
                                    MessageBox.Show("Unable to login to Black Desert Online account, please try again later.", "Login error", MessageBoxButton.OK, MessageBoxImage.Warning);
                                }
                            }
                            else
                            {
                                MessageBox.Show("Unable to login to Black Desert Online account, please try again later.", "Login error", MessageBoxButton.OK, MessageBoxImage.Warning);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Unable to login to Black Desert Online account, please try again later.", "Login error", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(null);
        }
Пример #6
0
        public void PassportSignInButton_Click(object sender, RoutedEventArgs e)
        {
            string username         = UsernameTextBox.Text;
            string passwords        = PasswordsTextBox.Password;
            string connectionString = "Data Source=SURFACELAPTOP;Initial Catalog=创新创业管理系统;Persist Security Info=True;User ID=" + username + ";Password=" + passwords;

            try
            {
                SqlConnection conn = new SqlConnection(connectionString);
                conn.Open();
                LoginFrame.Navigate(typeof(ShellPage));
            }
            catch (Exception error)
            {
                DisplayLoginFailedDialog(error.ToString());
            }
        }
Пример #7
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (_dashboardViewModel == null)
            {
                _dashboardViewModel = new DashboardViewModel(Dispatcher, OnLogoutNavigation);
                ContentFrame.Navigate(typeof(DashboardPage), _dashboardViewModel);
            }

            if (_loginViewModel == null)
            {
                _loginViewModel = new LoginViewModel(OnAuthenticatedNavigation);
                LoginFrame.Navigate(typeof(LoginPage), _loginViewModel);
            }

            if (e.Parameter is IncidentSelectedEventArgs)
            {
                _dashboardViewModel.NavigateToDetailsPane(this, e.Parameter as IncidentSelectedEventArgs);
            }
        }
Пример #8
0
    public MainPage(LauncherApp app)
        : base(app)
    {
        this.loginFrame = new LoginFrame(this);
        this.newsFrame  = new NewsFrame(app);

        this.actionButtons = new ActionButtons();

        this.AccountSwitcher = new AccountSwitcher(app.Accounts);
        this.AccountSwitcher.AccountChanged += this.AccountSwitcherOnAccountChanged;

        this.loginFrame.OnLogin += this.ProcessLogin;
        this.actionButtons.OnSettingsButtonClicked += () => this.App.State = LauncherApp.LauncherState.Settings;

        this.Padding = new Vector2(32f, 32f);

        var savedAccount = App.Accounts.CurrentAccount;

        if (savedAccount != null)
        {
            this.SwitchAccount(savedAccount, false);
        }
    }
Пример #9
0
        // Aqui fazemos a animaçao do botao se tornar o ActivityIndicator
        private async Task ShowLoadingAsync()
        {
            // Aqui definimos que a animação de loading vai começar
            // e deve ser aguardada antes de iniciar outra animaçao
            loadingAnimationTask?.TrySetCanceled();
            loadingAnimationTask = new TaskCompletionSource <bool>();

            try
            {
                // Tornamos visivel o frame do login que usa o mesmo tamanho/formato do botão
                // Utilizei aqui o Frame, ao inves de manipular diretamente o botão porque achei mais facil
                // de alterar sem precisar ocultar texto ou outrar propriedaes do botão
                LoginFrame.IsVisible = true;

                // Criamos uma animaçao onde o frame vai ficar com a cor de fundo igual a do botao
                // e o botão faz um Fade, ficando totalmente transparente, ficando assim
                // apenas visivel o frame que contém o ActivityIndicator dentro
                _ = await Task.WhenAll(
                    LoginFrame.BackgroundColorTo(LoginButton.BackgroundColor, 50),
                    LoginButton.FadeTo(0, 100));

                // Calculamos a nova posição do frame, após reduzir a largura dele para 50
                var anchorX = (LoginFrame.Width / 2) - (LOADING_WIDTH / 2);

                // Criamos então a posição/tamanho final do frame (layout)
                var rectTo = new Rectangle(anchorX, LoginFrame.Y, LOADING_WIDTH, LoginFrame.Height);

                // Fazemos a transição que vai manipular a posicão/tamanho do frame
                _ = await LoginFrame.LayoutTo(rectTo, easing : Easing.SpringOut);
            }
            finally
            {
                // Por fim definimos que a animação de loading foi finalizada
                loadingAnimationTask.SetResult(true);
            }
        }
Пример #10
0
        public async void Login_Click(object sender, RoutedEventArgs e)
        {
            //base.OnNavigatedTo(e);
            //var Info = (UserInfo)e.OriginalSource;
            //Will explain it later
            //    //UserName Validation


            if (!Regex.IsMatch(UserName.Text.Trim(), @"^[A-Za-z_][a-zA-Z0-9_\s]*$"))
            {
                //MessageBox.Show("Invalid UserName");
                var dialog = new MessageDialog("Invalid UserName");
                await dialog.ShowAsync();
            }
            //Password length Validation
            else if (PassWord.Password.Length < 6)
            {
                //MessageBox.Show("Password length should be minimum of 6 characters!");
                var dialog = new MessageDialog("Password length is greater than 6 characters!");
                await dialog.ShowAsync();
            }
            //    //After validation success ,store user detials and also check information
            else if (UserName.Text != "" && PassWord.Password != "")
            {
                var firebase = new FirebaseClient("https://calendarbot-2573c.firebaseio.com/");
                var username = await firebase
                               .Child("users")
                               .OnceAsync <UserName>();

                MainPage.log = UserName.Text;
                int num = 0;

                bool find = false;
                //res.GetAt(1);
                //var passW = await firebase
                //  .Child("users")
                //  .Child(UserName.Text)
                //  .Child("password")
                //  .Child(PassWord.Password)
                //  .OnceSingleAsync<UserPass>();

                //string passy3 = passW.pass;



                string     urlParameters = "https://calendarbot-2573c.firebaseio.com/users/" + UserName.Text + "/password.json";
                HttpClient client        = new HttpClient();

                HttpResponseMessage response = client.GetAsync(urlParameters).Result;

                string responseBody = await response.Content.ReadAsStringAsync();

                if (response.IsSuccessStatusCode)
                {
                    string pa   = PassWord.Password;
                    var    json = JObject.Parse(responseBody);
                    //string passy4 = json.p.value;
                    var first = json.Properties().Select(p => p.Name).FirstOrDefault();
                    if (first == PassWord.Password)
                    {
                        find = true;
                    }
                }


                foreach (var u in username)
                {
                    if (u.Key == UserName.Text)
                    {
                        //var dialog = new MessageDialog("Invalid Username");
                        //await dialog.ShowAsync();
                        //foreach (var p in passW)
                        //{
                        //    if (p.Key == PassWord.Password)
                        //    {
                        //        MainPage.accessPage = true;
                        //        LoginFrame.Navigate(typeof(MainPage));

                        //    }
                        //    else
                        //    {
                        //        var dialog = new MessageDialog("Invalid password");
                        //        await dialog.ShowAsync();
                        //    }
                        //}
                        //var user = UserName.Text;
                        //var Info = new UserInfo();
                        //Info.info = UserName.Text;

                        //MainPage.accessPage = true;

                        //var vault = new Windows.Security.Credentials.PasswordVault();
                        //vault.Add(new Windows.Security.Credentials.PasswordCredential(
                        //    "CalendarBot", UserName.Text, PassWord.Password));

                        if (find == true)
                        {
                            MainPage.accessPage = true;
                            LoginFrame.Navigate(typeof(MainPage));
                        }
                        //MainPage.accessPage = true;
                        //LoginFrame.Navigate(typeof(MainPage));
                    }

                    if (num == 0 && u.Key != UserName.Text)
                    {
                        var dialog = new MessageDialog("Wrong username or password");
                        await dialog.ShowAsync();

                        num++;
                        //SignUpFrame.Navigate(typeof(MainPage));
                    }
                }
            }
        }
Пример #11
0
 public void SignUp_Click(object sender, RoutedEventArgs e)
 {
     LoginFrame.Navigate(typeof(signUp));
 }
Пример #12
0
        public async void Login_Click(object sender, RoutedEventArgs e)
        {
            if (!Regex.IsMatch(UserName.Text.Trim(), @"^[A-Za-z_][a-zA-Z0-9_\s]*$"))
            {
                //MessageBox.Show("Invalid UserName");
                var dialog = new MessageDialog("Invalid UserName");
                await dialog.ShowAsync();
            }
            //Password length Validation
            else if (PassWord.Password.Length < 6)
            {
                //MessageBox.Show("Password length should be minimum of 6 characters!");
                var dialog = new MessageDialog("Password length is greater than 6 characters!");
                await dialog.ShowAsync();
            }
            //    //After validation success ,store user detials and also check information
            else if (UserName.Text != "" && PassWord.Password != "")
            {
                var firebase = new FirebaseClient("https://calendarbot-2573c.firebaseio.com/");
                var username = await firebase
                               .Child("users")
                               .OnceAsync <UserName>();

                MainPage.log = UserName.Text;

                bool       find          = false;
                bool       err           = false;
                string     urlParameters = "https://calendarbot-2573c.firebaseio.com/users/" + UserName.Text + "/password.json";
                HttpClient client        = new HttpClient();

                HttpResponseMessage response = client.GetAsync(urlParameters).Result;

                string responseBody = await response.Content.ReadAsStringAsync();

                if (responseBody != "null")
                {
                    if (response.IsSuccessStatusCode)
                    {
                        string pa    = PassWord.Password;
                        var    json  = JObject.Parse(responseBody);
                        var    first = json.Properties().Select(p => p.Name).FirstOrDefault();
                        if (first == PassWord.Password)
                        {
                            find = true;
                        }
                    }
                }
                else
                {
                    var dialog = new MessageDialog("Wrong username or password");
                    await dialog.ShowAsync();
                }


                foreach (var u in username)
                {
                    if (u.Key == UserName.Text && find == true)
                    {
                        MainPage.accessPage = true;
                        LoginFrame.Navigate(typeof(MainPage));
                    }
                    else if (u.Key == UserName.Text && find != true)
                    {
                        err = true;
                    }
                }

                if (err == true)
                {
                    var dialog = new MessageDialog("Wrong username or password");
                    await dialog.ShowAsync();
                }
            }
        }