/// <summary> /// Sauvegarde dans le fichier les modifications apportés un mot de passe, ou l'ajout de ce dernier /// </summary> /// <returns>les erreurs éventuellements générés</returns> public async Task <string> Save() { var retour = Validate(); //si aucune erreur if (string.IsNullOrWhiteSpace(retour)) { //en cas d'ajout du mot de passe if (Action.Equals(ActionMotDePasseEnum.Ajouter)) { var mdp = new MotDePasse { Titre = Titre, Login = Login, MotDePasseObjet = Password, SiteWeb = Site, Commentaire = Commentaire, DossierPossesseur = DossierPossesseur, IdIcone = SelectedIcone }; var res = ContexteAppli.ListeIcone.Where(x => (int)x.Tag == SelectedIcone).ToList(); if (res.Count > 0) { mdp.Icone = (BitmapImage)res[0].Source; } else { mdp.Icone = null; } DossierPossesseur.ListeMotDePasse.Add(mdp); } //en cas de modification placement des nouvelles informations if (Action.Equals(ActionMotDePasseEnum.Modifier)) { PasswordOriginal.Titre = Titre; PasswordOriginal.Login = Login; PasswordOriginal.MotDePasseObjet = Password; PasswordOriginal.IdIcone = SelectedIcone; PasswordOriginal.Commentaire = Commentaire; PasswordOriginal.SiteWeb = Site; var res = ContexteAppli.ListeIcone.Where(x => (int)x.Tag == PasswordOriginal.IdIcone).ToList(); if (res.Count > 0) { PasswordOriginal.Icone = (BitmapImage)res[0].Source; } else { PasswordOriginal.Icone = null; } } //sauvegarde await PasswordBusiness.Save(); //mise à jour de la liste de cortana await CortanaBusiness.UpdateCortana(); } return(retour); }
/// <summary> /// A lancer en premier dans le démarrage de l'application /// </summary> /// <param name="full">true si l'application est lancé en mode complet ou mode arrière plan</param> /// <param name="fichier">le fichier à ouvrir si différent de celui présent dans roaming</param> /// <returns></returns> public static async Task Initialize(bool full, StorageFile fichier) { if (full) { ChargerIcones(); await IconeBusiness.Load(); IconeBusiness.AddIconToIconAppli(); DossierMere = new Dossier { Titre = ResourceLoader.GetForCurrentView().GetString("phraseRacine") }; ImageUnlockBusiness.Init(); } else { DossierMere = new Dossier { Titre = "Root" }; } if (fichier != null) { if (StringUtils.GetExtension(fichier.Name) != ContexteStatic.Extension) { fichier = null; } } IsFichierRoamingOuvert = fichier == null; PasswordBusiness.Init(fichier); ParamBusiness.Init(); await ParamBusiness.Load(full); CortanaBusiness.Init(); }
/// <summary> /// Charge un fichier de mot de passe, ou le créer si aucun /// </summary> /// <returns>les erreurs à afficher</returns> public async Task <string> Valider() { var retour = Validate(); if (string.IsNullOrWhiteSpace(retour)) { //si le fichier est à créer if (ModeSelect.Equals(ModeOuvertureEnum.FichierACreer)) { PasswordBusiness.Password = MotDePasseA; await PasswordBusiness.Save(); } if (ModeSelect.Equals(ModeOuvertureEnum.FichierDejaExistant)) { if (!await PasswordBusiness.Load(MotDePasseA, true)) { retour += ResourceLoader.GetForCurrentView("Errors").GetString("erreurOuvertureFichier"); } else { if (ContexteAppli.IsCortanaActive) { await CortanaBusiness.CheckPassword(); } } } } return(retour); }
/// <summary> /// supprime un mot de passe des données de l'utilisateur et sauvegarde le fichier /// </summary> public async Task SupprimerMotDepasse() { Password.DossierPossesseur.ListeMotDePasse.Remove(Password); await PasswordBusiness.Save(); //mise à jour de la liste de cortana await CortanaBusiness.UpdateCortana(); }
/// <summary> /// Constructeur /// </summary> /// <param name="mode">le mode d'ouverture de la page</param> public SecureImageViewModel(OuvertureSecureImageEnum mode) { Mode = mode; ListePoint = new List <Point>(); ListePointToVerif = new List <Point>(); ImageUnlockBusiness.Init(); CortanaBusiness.Init(); }
/// <summary> /// Lance la recherche du mot de passe et met en mémoire les mots de passe à retenir /// </summary> private async Task LancerRecherche() { var res = CortanaBusiness.GetMotDePasse(_recherche, ContexteAppli.DossierMere); ListeMotDePasse = new ObservableCollection <MotDePasse>(res.OrderBy(o => o.Titre).ToList()); //si je suis arrivé ici alors que Cortana est activé et que le nombre de résultat est inférieur à 10, c'est qu'il y a eu problème sur le déchiffrement du mot de passe if (ContexteAppli.IsCortanaActive && res.Count < 10) { await CortanaBusiness.CheckPassword(); } }
/// <summary> /// Efface le fichier de mot de passe /// </summary> /// <returns></returns> public static async Task <bool> ReinitAppli() { //efface le fichier des mots de passes if (await PasswordBusiness.Delete() && await ParamBusiness.Delete() && await CortanaBusiness.DeletePassword()) { await IconeBusiness.DeletelAll(); await ImageUnlockBusiness.DeleteFile(); await CortanaBusiness.UpdateCortana(); await Initialize(true, null); return(true); } return(false); }
/// <summary> /// Permet de vérifier si l'application peut s'autoLogger, s'autologue si possible, et lance la recherche /// </summary> /// <returns>true si à tout réussi à faire automatiquement</returns> public async Task <bool> LanceRechercheSansMotDePasse() { if (ContexteAppli.IsCortanaActive) { var mdp = await CortanaBusiness.GetPasswordUser(); if (!string.IsNullOrWhiteSpace(mdp)) { if (await PasswordBusiness.Load(mdp, true)) { await LancerRecherche(); return(true); } } } return(false); }
/// <summary> /// Modifie l'activité de cortana (si activé, enregistre le mot de passe en le chiffrant, si déasctivé, supprime le mot de passe) /// </summary> public async Task ChangeCortana(bool value) { if (!_isPageStarting) { //changement du paramètre ContexteAppli.IsCortanaActive = value; await ParamBusiness.Save(); if (ContexteAppli.IsCortanaActive) { await CortanaBusiness.SavePassword(); } else { await CortanaBusiness.DeletePassword(); } } }
/// <summary> /// change le mot de passe et sauvegarde le fichier /// </summary> /// <returns>les erreurs du validate sinon une ssting vide</returns> public async Task <string> ChangerMdp() { var retour = Validate(); if (string.IsNullOrWhiteSpace(retour)) { PasswordBusiness.Password = NewMdp; await PasswordBusiness.Save(); //si cortana est activé, changer le fichier if (CortanaActive != null && CortanaActive.Value) { await CortanaBusiness.SavePassword(); } } return(retour); }
/// <summary> /// Vérifie si le mot de l'utilisateur est déchiffrable /// </summary> /// <returns>true si ok</returns> public async Task GetPassword() { try { var mdp = await CortanaBusiness.GetPasswordUser(); if (mdp != null) { ErreurVerif = ResourceLoader.GetForCurrentView("Errors").GetString("erreurAffichMdp") + " " + mdp; } else { ErreurVerif = ResourceLoader.GetForCurrentView("Errors").GetString("erreurRecupPass"); } } catch (Exception) { ErreurVerif = ResourceLoader.GetForCurrentView("Errors").GetString("erreurRecupPass"); } }
private async void validerButton_Click(object sender, RoutedEventArgs e) { WaitRing.IsActive = true; ValiderButton.IsEnabled = false; ParcourirButton.IsEnabled = false; ChangerDossierButton.IsEnabled = false; EraseCheckBox.IsEnabled = false; MdpTextbox.IsEnabled = false; var erreur = ""; try { //vérification du format if (FormatComboBox.SelectedItem != null) { ViewModel.FormatChoisi = ((ImportExportViewModel.ExportFormat)FormatComboBox.SelectedItem); } else { erreur = ResourceLoader.GetForCurrentView("Errors").GetString("erreurAucunFormat"); } ViewModel.MdpCypher = MdpTextbox.Password; //ViewModel.SelectedDossier = ContexteAppli.PageViewMere.GetDossierSelected(); switch (ViewModel.Mode) { case ImportExportEnum.Import: switch (ViewModel.FormatChoisi.Id) { case 1: erreur = await ViewModel.ImporterCsv(); break; case 2: erreur = await ViewModel.ImporterXml(); break; case 3: erreur = await ViewModel.ImporterKwi(); break; } break; case ImportExportEnum.Export: switch (ViewModel.FormatChoisi.Id) { case 1: erreur = await ViewModel.ExporterCsv(); break; case 2: erreur = await ViewModel.ExporterXml(); break; case 3: erreur = await ViewModel.ExporterKwi(); break; } break; } if (!string.IsNullOrWhiteSpace(erreur)) { TextBlockErreur.Text = erreur; } else { await PasswordBusiness.Save(); //mise à jour de la liste de cortana await CortanaBusiness.UpdateCortana(); switch (ViewModel.Mode) { case ImportExportEnum.Import: await MessageBox.ShowAsync(ResourceLoader.GetForCurrentView().GetString("textImportOK"), "", MessageBoxButton.Ok); break; case ImportExportEnum.Export: await MessageBox.ShowAsync(ResourceLoader.GetForCurrentView().GetString("textExportOK"), "", MessageBoxButton.Ok); break; } ((Frame)Window.Current.Content).Navigate(typeof(MainPageView)); } } catch { TextBlockErreur.Text = ResourceLoader.GetForCurrentView("Errors").GetString("erreurInconnu"); } WaitRing.IsActive = false; ValiderButton.IsEnabled = true; ParcourirButton.IsEnabled = true; ChangerDossierButton.IsEnabled = true; EraseCheckBox.IsEnabled = true; MdpTextbox.IsEnabled = true; }
/// <summary> /// Méthode se lancant lors de l'appel de cortana pour l'appli /// </summary> /// <param name="taskInstance"></param> public async void Run(IBackgroundTaskInstance taskInstance) { //lancement de cortana, récupération des objets nécéssaires _serviceDeferral = taskInstance.GetDeferral(); taskInstance.Canceled += (sender, reason) => _serviceDeferral?.Complete(); var triggerDetails = taskInstance.TriggerDetails as AppServiceTriggerDetails; _voiceCommandServiceConnection = VoiceCommandServiceConnection.FromAppServiceTriggerDetails(triggerDetails); _voiceCommandServiceConnection.VoiceCommandCompleted += (sender, args) => _serviceDeferral?.Complete(); var identifiant = (await _voiceCommandServiceConnection.GetVoiceCommandAsync()).Properties["site"][0].ToLower(); string message; var openApp = false; var openTiles = false; var tiles = new List <VoiceCommandContentTile>(); //Initialisation de l'appli await ContexteAppli.Initialize(false, null); //si le fichier existe if (await PasswordBusiness.DoesFileCypherExist()) { //si cortana est autorisé if (ContexteAppli.IsCortanaActive) { //récupération du mot de passe var mdp = await CortanaBusiness.GetPasswordUser(); if (!string.IsNullOrWhiteSpace(mdp)) { //chargement du fichier if (await PasswordBusiness.Load(mdp, false)) { tiles = CortanaBusiness.GetMotDePasseTile(identifiant, ContexteAppli.DossierMere); if (tiles.Count == 0) { message = GetString("cortanaAucunIdentifiant"); } else if (tiles.Count > 10) { message = GetString("cortanaPlusieursResultats"); openApp = true; } else { message = GetString("cortanaIdentifiantsTrouves"); openTiles = true; } } else { message = GetString("cortanaEchecFichier"); openApp = true; } } else { message = GetString("cortanaEchecFichier"); openApp = true; } } else { message = GetString("cortanaLanceApp"); openApp = true; } } else { message = GetString("cortanaAucunIdentifiant"); } var userPrompt = new VoiceCommandUserMessage { DisplayMessage = message, SpokenMessage = message }; if (openApp) { var response = VoiceCommandResponse.CreateResponse(userPrompt); response.AppLaunchArgument = identifiant; await _voiceCommandServiceConnection.RequestAppLaunchAsync(response); } else if (openTiles) { var response = VoiceCommandResponse.CreateResponse(userPrompt, tiles); await _voiceCommandServiceConnection.ReportSuccessAsync(response); } else { var response = VoiceCommandResponse.CreateResponse(userPrompt); await _voiceCommandServiceConnection.ReportSuccessAsync(response); } }