public async Task <bool> LoginAsync(string username, string password, bool clearLocalData) { // login var token = await RemoteLoginAsync(username, password); //if logged if (!string.IsNullOrEmpty(token)) { var tokenHandler = new JwtSecurityTokenHandler(); SecurityToken validatedToken; var tokenValidationParameters = new TokenValidationParameters(); var readToken = tokenHandler.ReadJwtToken(token); var claim = readToken.Claims.First(c => c.Type == "unique_name"); var userId = Guid.Parse(claim.Value); Preferences.Set(PreferencesKeys.JWTTOKEN, token); Preferences.Set(PreferencesKeys.IsUserLogged, true); Preferences.Set(PreferencesKeys.UserExternalId, userId.ToString()); settingsViewModel.RefreshUserButtons(); if (clearLocalData) { //clear DB await syncMobileService.CleanDataBaseAsync(); } //set externalId var user = await this.userRepository.GetFirstUserAsync(); user.EditExternalId(userId.ToString()); await userRepository.UpdateUserAsync(user); //sync //await syncMobileService.SyncAsync(); return(true); } else { return(false); } }