public LoginEntryViewModel(LoginEntry loginEntry) : base(loginEntry) { UserId = loginEntry.UserId; Password = loginEntry.Password; Remember = loginEntry.Remember; }
private async Task AnimatePrompt(string arg) { await AnimateLoginStop(); PromptLabel.Text = arg; LoginButton.IsEnabled = false; LoginEntry.TextColor = Color.Red; await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(0, 0, 100, Easing.Linear); await ArrowFrame.TranslateTo(0, 0, 1000, Easing.Linear); await PromptFrame.ScaleTo(1, 500, Easing.Linear); await Task.Delay(5000); await PromptFrame.ScaleTo(0, 500, Easing.Linear); await ArrowFrame.TranslateTo(0, 2000, 1000, Easing.Linear); LoginEntry.TextColor = Color.Black; LoginButton.IsEnabled = true; }
private async void Button_OnClicked(object sender, EventArgs e) { try { App.CurrentUser = null; if (string.IsNullOrWhiteSpace(LoginEntry.Text)) { await DisplayAlert("Error", "Preencha o login", "OK"); LoginEntry.Focus(); return; } if (string.IsNullOrWhiteSpace(PwdEntry.Text)) { await DisplayAlert("Error", "Preencha a senha", "OK"); PwdEntry.Focus(); return; } var isLogged = await CheckLogin(LoginEntry.Text, PwdEntry.Text); if (!isLogged) { return; } await Navigation.PushAsync(new PurchaseOrderListPage()); } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } }
private void LoadLoginData() { LoginStatisticService service = (LoginStatisticService)Portal.API.Statistics.Statistic.GetService(typeof(LoginStatisticService)); LoginStatisticData data = service.GetData(Context); List <LoginEntry> entries = new List <LoginEntry>(); foreach (LoginStatisticData.TLoginRow row in data.TLogin.Rows) { Portal.API.Users.UserRow user = UserManagement.Users.FindById(row.UserId); LoginEntry entry = new LoginEntry(); if (null != user) { // User was found, so use the actual user infos to show. entry.Login = user.login; entry.FirstName = user.SafeFirstName; entry.LastName = user.SafeSurName; } else { // User was deleted, so use cached infos. entry.Login = row.Login; entry.FirstName = row.FirstName; entry.LastName = row.LastName; } entry.LoginCount = row.LoginCount; entry.LastLogin = row.LastLogin; entries.Add(entry); } repeaterLogin.DataSource = entries; repeaterLogin.DataBind(); }
public loginView(login onelogin) { this.onelongin = onelongin; InitializeComponent(); // Label newLabel = new Label(); BindingContext = this.onelongin; VersionsTekst.SetBinding(Label.TextProperty, "VersionsTekst", BindingMode.OneWay); LoginEntry.SetBinding <login>(Entry.TextProperty, vm->vm.LoginEntry, BindingMode.OneWay); }
public async Task <IActionResult> Login([FromBody] LoginEntry loginGet) { if (string.IsNullOrEmpty(loginGet.Senha) && string.IsNullOrEmpty(loginGet.GoogleId.ToString())) { return(BadRequest()); } var pessoa = await faceitContext.Pessoa .FirstOrDefaultAsync(x => x.Email == loginGet.Email && (x.Senha == loginGet.Senha || x.GoogleID.GetValueOrDefault() == loginGet.GoogleId)); if (pessoa != null && pessoa.Excluido != true) { try { if (pessoa.Tipo.Equals("PF")) { pessoa = await faceitContext.Pessoa .Include(x => x.PessoaFisica) .Include(x => x.Endereco) .Include(x => x.PessoaSkill) .Include(x => x.Anexo) .Include(x => x.Imagem) .FirstOrDefaultAsync(x => x.Email == loginGet.Email && (x.Senha == loginGet.Senha || x.GoogleID == loginGet.GoogleId)); } else { pessoa = await faceitContext.Pessoa .Include(x => x.PessoaJuridica) .Include(x => x.Endereco) .Include(x => x.PessoaSkill) .Include(x => x.Anexo) .Include(x => x.Imagem) .FirstOrDefaultAsync(x => x.Email == loginGet.Email && (x.Senha == loginGet.Senha || x.GoogleID == loginGet.GoogleId)); } var token = new Token { Value = GerarToken(pessoa), Date = DateTime.Now }; return(Ok(new LoginRetun() { pessoa = pessoa, token = token })); } catch (Exception ex) { ModelState.AddModelError(ex.Message, "Contate um administrador"); return(BadRequest(ModelState)); } } else { return(NotFound()); } }
private async Task LogEntry(ApplicationUser user, string status) { // add entry for each login attempt var loginEntry = new LoginEntry { UserId = user.Id, IPAddress = Context.Connection.RemoteIpAddress, Status = status }; await _loginEntryStore.Save(loginEntry); }
public void Update(LoginEntry another) { lock (this) { LoginId = string.Copy(another.LoginId); Entity = string.Copy(another.Entity); Validity = another.Validity; DeadLine = another.DeadLine; KeyBytes = new byte[another.KeyBytes.Length]; Array.Copy(another.KeyBytes, KeyBytes, another.KeyBytes.Length); Publickey = Crypto.CreatePublicKeyFromBytes(another.KeyBytes); } }
private LoginEntry UsernameEntry() { usernameEntry = new LoginEntry { Placeholder = LocalizedResources.username, HeightRequest = componentHeight, ReturnType = ReturnType.Next }; usernameEntry.SetBinding(LoginEntry.TextProperty, "Username", BindingMode.TwoWay); usernameEntry.Completed += Entry_Completed; return(usernameEntry); }
public async Task Save(LoginEntry item) { if (item.Id <= 0) { Items.Add(item); } else { Items.Update(item); } await DbContext.SaveChangesAsync(); }
internal void UpdateEntry(LoginEntry entry) { _lock.EnterWriteLock(); try { LoginEntry cacheEntry; if (_logins.TryGetValue(entry.LoginId, out cacheEntry)) { cacheEntry.Update(entry); } } finally { _lock.ExitWriteLock(); } }
public async Task RemoveLoginEntry(ApplicationUser user, LoginEntry item) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (item == null) { throw new ArgumentNullException(nameof(item)); } item.UserId = user.Id; await _loginEntryStore.Delete(item); }
private LoginEntry PasswordEntry() { passwordEntry = new LoginEntry { Placeholder = LocalizedResources.password, HeightRequest = componentHeight, IsPassword = true, ReturnType = ReturnType.Done, }; passwordEntry.SetBinding(LoginEntry.TextProperty, "Password", BindingMode.TwoWay); passwordEntry.Completed += Entry_Completed; return(passwordEntry); }
public LoginEntry Clone() { LoginEntry ret = new LoginEntry(); lock (this) { ret.LoginId = string.Copy(LoginId); ret.Entity = string.Copy(Entity); ret.Validity = Validity; ret.DeadLine = DeadLine; ret.KeyBytes = new byte[KeyBytes.Length]; Array.Copy(KeyBytes, ret.KeyBytes, KeyBytes.Length); ret.Publickey = Crypto.CreatePublicKeyFromBytes(KeyBytes); } return(ret); }
private async Task AnimateLoginStart() { await Task.Run(() => { LoginEntry.FadeTo(0, 500, Easing.Linear); PasswordEntry.FadeTo(0, 500, Easing.Linear); LoginButton.FadeTo(0, 500, Easing.Linear); }); await LogoImage.TranslateTo(0, 50, 1000, Easing.Linear); while ((BindingContext as LoginPageViewModel).Busy) { await LogoImage.FadeTo(1, 600); await LogoImage.FadeTo(0, 600); } }
public async Task <IActionResult> Login(LoginEntry entry) { ViewData["WrongLogin"] = null; if (entry.Email == null || entry.Password == null) { ViewData["WrongLogin"] = "******"; return(View()); } try { var user = await _userManager.GetUserByEmailAsync(entry.Email); if (user != null) { //if (!user.IsEmailConfirmed) //{ // ViewData["WrongLogin"] = "******"; // return View(entry); //} if (!HashUtils.VerifyPassword(entry.Password, user.Password)) { /* Don't reveal which one is incorrect. */ ViewData["WrongLogin"] = "******"; return(View(entry)); } } HttpContext.Session.SetObjectAsJson("UserId", user.Id); HttpContext.Session.SetObjectAsJson("UserName", user.Username); HttpContext.Session.SetObjectAsJson("TypeOfUser", user.UserRole); //SessionUserRole.UserRole = user.UserRole; } catch (Exception) { //await _logger.LogCustomExceptionAsync(ex, null); return(RedirectToAction("Error", "Home")); } return(RedirectToAction("Index", "Manage")); }
public async Task <IActionResult> Login(LoginEntry entry) { ViewData["WrongLogin"] = null; if (entry.Email == null || entry.Password == null) { ViewData["WrongLogin"] = "******"; return(View()); } try { var user = await _userManager.GetUserByEmailAsync(entry.Email); if (user != null) { if (!user.IsEmailConfirmed) { ViewData["WrongLogin"] = "******"; return(View()); } if (!HashUtils.VerifyPassword(entry.Password, user.Password)) { /* Don't reveal which one is incorrect. */ ViewData["WrongLogin"] = "******"; return(View()); } } HttpContext.Session.SetObjectAsJson <string>("UserId", user.Id); HttpContext.Session.SetObjectAsJson <string>("Email", user.Email); HttpContext.Session.SetObjectAsJson <double>("Coins", user.Coins); } catch (Exception ex) { await _logger.LogCustomExceptionAsync(ex, null); return(RedirectToAction("Error", "Home")); } return(RedirectToAction("Index", "Home")); }
public ActionResult Login(string UserName, string Password) { try { List <Login> retList = new LoginEntry().GetLogin(UserName, Password); if (retList.Count > 0) { return(Ok("Success")); } else { return(BadRequest("Invalid Login")); } } catch (Exception ex) { Log.ErrorToFile(ex.Message); return(BadRequest(ex.Message)); } }
public bool HasRemainingLoginAttempts(string userId, bool incrementCount) { lock (m_loginEntries) { if (m_loginEntries.TryGetValue(userId, out LoginEntry entry)) { if (entry.LoginWindowStartDt.Add(m_loginWindowDuration) >= DateTime.UtcNow) { // Existing login Window if (incrementCount) { entry.NumberOfAttempts++; } } else { // New login Window if (!incrementCount) { return(true); } entry.LoginWindowStartDt = DateTime.UtcNow; entry.NumberOfAttempts = 1; } } else { if (!incrementCount) { return(true); } entry = new LoginEntry { LoginWindowStartDt = DateTime.UtcNow, NumberOfAttempts = 1 }; m_loginEntries.Add(userId, entry); } return(entry.NumberOfAttempts < m_maxLoginAttemptsInWindow); } }
public void OnLoginItemDataBound(Object Sender, RepeaterItemEventArgs args) { HtmlTableRow row = (HtmlTableRow)args.Item.FindControl("Row"); if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem) { LoginEntry entry = (LoginEntry)args.Item.DataItem; row.Controls.Add(GetTextCell(entry.Login, "left")); row.Controls.Add(GetTextCell(entry.FirstName, "left")); row.Controls.Add(GetTextCell(entry.LastName, "left")); row.Controls.Add(GetTextCell(entry.LastLogin.ToString(CultureInfo.CurrentUICulture), "left")); row.Controls.Add(GetTextCell(entry.LoginCount.ToString(CultureInfo.CurrentUICulture), "right")); } else if (args.Item.ItemType == ListItemType.Header) { row.Controls.Add(GetTextCell(Language.GetText(Portal.API.Module.GetModuleControl(this), "login"), "left")); row.Controls.Add(GetTextCell(Language.GetText(Portal.API.Module.GetModuleControl(this), "firstName"), "left")); row.Controls.Add(GetTextCell(Language.GetText(Portal.API.Module.GetModuleControl(this), "lastName"), "left")); row.Controls.Add(GetTextCell(Language.GetText(Portal.API.Module.GetModuleControl(this), "lastLogin"), "left")); row.Controls.Add(GetTextCell(Language.GetText(Portal.API.Module.GetModuleControl(this), "loginCount"), "left")); } }
private async Task AnimateLoginAsync() { LoginEntry.TextColor = Color.Red; LoginEntry.PlaceholderColor = Color.Red; await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(-10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(10, 0, 100, Easing.Linear); await LoginEntry.TranslateTo(0, 0, 100, Easing.Linear); LoginEntry.PlaceholderColor = Color.LightGray; LoginEntry.TextColor = Color.LightGray; }
public NewUserSignUpPage() { ViewModel = new BaseViewModel(); BindingContext = ViewModel; RelativeLayout relativeLayout = new RelativeLayout(); ActivityIndicator indicator = new ActivityIndicator(); var usernameEntry = new LoginEntry(1) { StyleId = "newUsernameEntry", Placeholder = "Email", Keyboard = Keyboard.Email, HorizontalTextAlignment = TextAlignment.Center, }; var passwordEntry = new LoginEntry(1) { StyleId = "newPasswordEntry", Placeholder = "Password", IsPassword = true, HorizontalTextAlignment = TextAlignment.Center }; var reEnterPasswordEntry = new LoginEntry(1) { StyleId = "reEnterPasswordEntry", Placeholder = "Re-enter password", IsPassword = true, HorizontalTextAlignment = TextAlignment.Center, }; var saveUsernameButton = new StyledButton { CssStyle = "button", StyleId = "saveUsernameButton", Text = "Save Username", TextColor = Color.White, BackgroundColor = AppColors.Green, BorderRadius = 0, HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.EndAndExpand }; var usernameLabel = new StyledLabel { CssStyle = "h2", Text = "Please enter username", HorizontalOptions = LayoutOptions.Start }; var passwordLabel = new StyledLabel { CssStyle = "h2", Text = "Please enter password", HorizontalOptions = LayoutOptions.Start }; var reEnterPasswordLabel = new StyledLabel { CssStyle = "h2", Text = "Please re-enter password", HorizontalOptions = LayoutOptions.Start }; relativeLayout.Children.Add(usernameLabel, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.Constant(AppSettings.Margin), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(usernameEntry, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(usernameLabel, (p, v) => v.Y + v.Height + AppSettings.ItemPadding), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(passwordLabel, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(usernameEntry, (p, v) => v.Y + v.Height + AppSettings.ItemPadding), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(passwordEntry, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(passwordLabel, (p, v) => v.Y + v.Height + AppSettings.ItemPadding), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(reEnterPasswordLabel, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(passwordEntry, (p, v) => v.Y + v.Height + AppSettings.ItemPadding), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(reEnterPasswordEntry, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(reEnterPasswordLabel, (p, v) => v.Y + v.Height + AppSettings.ItemPadding), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(saveUsernameButton, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToParent(p => p.Height - AppSettings.Margin - AppSettings.ButtonHeight), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin) ); relativeLayout.Children.Add(indicator, xConstraint: Constraint.Constant(AppSettings.Margin), yConstraint: Constraint.RelativeToView(reEnterPasswordEntry, (p, v) => v.Y + v.Height), widthConstraint: Constraint.RelativeToParent(p => p.Width - 2 * AppSettings.Margin), heightConstraint: Constraint.RelativeToView(reEnterPasswordEntry, (p, v) => p.Height - v.Y - v.Height - AppSettings.Margin - AppSettings.ButtonHeight) ); Content = relativeLayout; indicator.SetBinding(ActivityIndicator.IsRunningProperty, "IsBusy"); if (Device.OS == TargetPlatform.Windows) { indicator.SetBinding(ActivityIndicator.IsVisibleProperty, "IsBusy"); } saveUsernameButton.Clicked += async(object sender, EventArgs e) => { ViewModel.IsBusy = true; if (String.IsNullOrEmpty(usernameEntry.Text)) { DisplayAlert("Error", "Username cannot be blank", "Ok"); ViewModel.IsBusy = false; return; } else if (!usernameEntry.Text.Contains("@")) { DisplayAlert("Error", "Username is invalid. Please enter a valid email address.", "Ok"); ViewModel.IsBusy = false; return; } else if (String.IsNullOrEmpty(passwordEntry.Text)) { DisplayAlert("Error", "Password cannot be blank", "Ok"); ViewModel.IsBusy = false; return; } else if (String.IsNullOrEmpty(reEnterPasswordEntry.Text)) { DisplayAlert("Error", "Please re-enter your password", "Ok"); ViewModel.IsBusy = false; return; } else if (passwordEntry.Text != reEnterPasswordEntry.Text) { DisplayAlert("Error", "Passwords don't match.", "Ok"); ViewModel.IsBusy = false; return; } var result = await ParticleCloud.SharedInstance.SignupWithUserAsync(usernameEntry.Text, passwordEntry.Text); ViewModel.IsBusy = false; if (result == "Success") { await DisplayAlert("Success", "Your account was successfully created. Now let's login.", "Ok"); await Navigation.PopAsync(); } else { DisplayAlert("Error", $"{result}", "Ok"); } }; }
void CreateGlobalChildren() { logo = new Image { HeightRequest = 30, Aspect = Aspect.AspectFit }; loginLabel = new StyledLabel { CssStyle = "h1", Text = "Login with your particle username", Opacity = 0 }; loginEntry = new LoginEntry { StyleId = "usernameEntry", Placeholder = "Email", Keyboard = Keyboard.Email }; passwordEntry = new LoginEntry { StyleId = "passwordEntry", Placeholder = "Password", IsPassword = true, }; loginButton = new StyledButton { StyleId = "loginButton", Text = "LOGIN", TextColor = Color.White, BackgroundColor = AppColors.Green, CssStyle = "button", BorderRadius = 0, HeightRequest = AppSettings.ButtonHeight, Opacity = 0 }; newUserSignUpButton = new StyledButton { StyleId = "newUserButton", Text = "SIGN-UP", TextColor = Color.White, BackgroundColor = AppColors.Purple, CssStyle = "button", BorderRadius = 0, HeightRequest = AppSettings.ButtonHeight, Opacity = 0 }; loginButton.Clicked += (object sender, EventArgs e) => { if (String.IsNullOrEmpty(loginEntry.Text) || String.IsNullOrEmpty(passwordEntry.Text)) { DisplayAlert("Error", "You must enter a username and password.", "Okay"); return; } Login(loginEntry.Text, passwordEntry.Text); }; newUserSignUpButton.Clicked += (object sender, EventArgs e) => { NewUserSignUp(); }; }
public LoginEntry GetLoginEntry(string loginId) { LoginEntry entry; if (!_logins.TryGetValue(loginId, out entry)) { Logger.Debug( String.Format( "Login {0} não foi encontrado na cache, obtendo informações.", loginId)); // chamada remota, tem que ficar fora de qualquer lock byte[] keyBytes; AsymmetricKeyParameter pubKey; LoginInfo info; try { info = _conn.LoginRegistry.getLoginInfo(loginId, out keyBytes); pubKey = Crypto.CreatePublicKeyFromBytes(keyBytes); } catch (InvalidLogins) { return(null); } _lock.EnterWriteLock(); try { // Checa novamente para ver se algo mudou após a finalização da // chamada remota. A informação na cache deve ser mais confiável // pois provavelmente é mais antiga, e assim o "deadline" deve ser // mais acurado do que o que seria gerado agora. if (!_logins.TryGetValue(loginId, out entry)) { entry = new LoginEntry { Publickey = pubKey, KeyBytes = keyBytes, LoginId = info.id, Entity = info.entity, DeadLine = DateTime.Now.Ticks }; _logins.Set(loginId, entry); Logger.Debug(String.Format( "Login {0} válido e adicionado à cache.", loginId)); return(entry.Clone()); } } finally { _lock.ExitWriteLock(); } } Logger.Debug( String.Format("Login {0} está na cache, procedendo à validação.", loginId)); // valida o login long deadline; _lock.EnterReadLock(); try { deadline = entry.DeadLine; } finally { _lock.ExitReadLock(); } if (deadline < DateTime.Now.Ticks) { int validity = _conn.LoginRegistry.getLoginValidity(loginId); if (validity <= 0) { // login inválido Logger.Debug(String.Format("Login {0} é inválido.", loginId)); return(null); } _lock.EnterWriteLock(); try { entry.DeadLine = DateTime.Now.Ticks + validity; } finally { _lock.ExitWriteLock(); } } Logger.Debug(String.Format("Login {0} é válido.", loginId)); return(entry.Clone()); }
public Task UpdateLoginTokenAsync(LoginEntry record) { throw new NotImplementedException("Updating passwords is not supported"); }
public Task DropLoginEntryAsync(LoginEntry record) { throw new NotImplementedException("Deleting users is not supported"); }
private void LoadLoginData() { LoginStatisticService service = (LoginStatisticService)Portal.API.Statistics.Statistic.GetService(typeof(LoginStatisticService)); LoginStatisticData data = service.GetData(Context); List<LoginEntry> entries = new List<LoginEntry>(); foreach (LoginStatisticData.TLoginRow row in data.TLogin.Rows) { Portal.API.Users.UserRow user = UserManagement.Users.FindById(row.UserId); LoginEntry entry = new LoginEntry(); if (null != user) { // User was found, so use the actual user infos to show. entry.Login = user.login; entry.FirstName = user.SafeFirstName; entry.LastName = user.SafeSurName; } else { // User was deleted, so use cached infos. entry.Login = row.Login; entry.FirstName = row.FirstName; entry.LastName = row.LastName; } entry.LoginCount = row.LoginCount; entry.LastLogin = row.LastLogin; entries.Add(entry); } repeaterLogin.DataSource = entries; repeaterLogin.DataBind(); }
private void FrameButton_Tapped(object sender, EventArgs e) { LoginEntry.Unfocus(); PasswordEntry.Unfocus(); }
void CreateGlobalChildren() { logo = new Image(); logoSlogan = new Label { Opacity = 0, Text = "Delighting Developers.", TextColor = Color.White, FontFamily = Device.OnPlatform( iOS: "AppleSDGothicNeo-Light", Android: "Droid Sans Mono", WinPhone: "Comic Sans MS"), FontSize = 14 }; loginEntry = new LoginEntry { AutomationId = "usernameEntry", Placeholder = "Username", }; passwordEntry = new LoginEntry { AutomationId = "passwordEntry", Placeholder = "Password", IsPassword = true, }; loginButton = new LoginButton(Borders.Thin) { AutomationId = "loginButton", Text = "Login", }; newUserSignUpButton = new LoginButton(Borders.None) { AutomationId = "newUserButton", Text = "Sign-up", }; forgotPasswordButton = new LoginButton(Borders.None) { AutomationId = "forgotPasswordButton", Text = "Forgot Password?", }; rememberMe = new Label { Opacity = 0, Text = "Remember Me", TextColor = Color.White, FontFamily = Device.OnPlatform( iOS: "AppleSDGothicNeo-Light", Android: "Droid Sans Mono", WinPhone: "Comic Sans MS"), }; saveUsername = new Switch { AutomationId = "saveUsernameSwitch", IsToggled = true, Opacity = 0 }; loginButton.Clicked += (object sender, EventArgs e) => { if (String.IsNullOrEmpty(loginEntry.Text) || String.IsNullOrEmpty(passwordEntry.Text)) { DisplayAlert("Error", "You must enter a username and password.", "Okay"); return; } Login(loginEntry.Text, passwordEntry.Text, saveUsername.IsToggled); }; newUserSignUpButton.Clicked += (object sender, EventArgs e) => { NewUserSignUp(); }; forgotPasswordButton.Clicked += (object sender, EventArgs e) => { ForgotPassword(); }; }
public async Task Delete(LoginEntry item) { Items.Remove(item); await DbContext.SaveChangesAsync(); }