/// 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; }
void NavigationSetup() { Messenger.Default.Register <NavigateArgs>(this, (x) => { LoginFrame.Navigate(new Uri(x.Url, UriKind.Relative)); }); }
/// 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)); } }
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); }
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()); } }
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); } }
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); } }
// 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); } }
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)); } } } }
public void SignUp_Click(object sender, RoutedEventArgs e) { LoginFrame.Navigate(typeof(signUp)); }
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(); } } }