Add func find on Login

This commit is contained in:
Archer Fox
2025-03-16 23:52:59 +03:00
parent 4b10367196
commit e6340bd24f
2 changed files with 28 additions and 10 deletions

View File

@@ -2,10 +2,12 @@ package account
import ( import (
"errors" "errors"
"github.com/fatih/color" "fmt"
"math/rand/v2" "math/rand/v2"
"net/url" "net/url"
"time" "time"
"github.com/fatih/color"
) )
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ1234567890-*!?()#$%&") var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ1234567890-*!?()#$%&")
@@ -20,7 +22,8 @@ type Account struct {
// метод вывода пароля // метод вывода пароля
func (acc *Account) Output() { func (acc *Account) Output() {
c := color.New(color.FgRed, color.Italic, color.Bold) c := color.New(color.FgRed, color.Bold)
fmt.Println()
c.Printf("password: %v\nlogin: %v\nURL: %v\n", acc.Password, acc.Login, acc.Url) c.Printf("password: %v\nlogin: %v\nURL: %v\n", acc.Password, acc.Login, acc.Url)
} }

View File

@@ -12,8 +12,9 @@ import (
var menu = map[string]func(*account.VaultWithDb){ var menu = map[string]func(*account.VaultWithDb){
"1": createAccount, "1": createAccount,
"2": findAccount, "2": findAccountByUrl,
"3": deleteAccount, "3": findAccountByLogin,
"4": deleteAccount,
} }
func main() { func main() {
@@ -26,9 +27,10 @@ Menu:
for { for {
variant := PromptData([]string{ variant := PromptData([]string{
"1. Создать аккаунт", "1. Создать аккаунт",
"2. Найти аккаунт", "2. Найти аккаунт по URL",
"3. Удалить аккаунт", "3. Найти аккаунт по логину",
"4. Выход", "4. Удалить аккаунт",
"5. Выход",
"Выберите вариант", "Выберите вариант",
}) })
menuFunc := menu[variant] menuFunc := menu[variant]
@@ -49,16 +51,29 @@ Menu:
} }
} }
func findAccount(vault *account.VaultWithDb) { func findAccountByUrl(vault *account.VaultWithDb) {
url := PromptData([]string{"Введите URL для поиска"}) url := PromptData([]string{"Введите URL для поиска"})
// Анонимная функция как параметр // Анонимная функция как параметр
accounts := vault.FindAccounts(url, func(acc account.Account, str string) bool { accounts := vault.FindAccounts(url, func(acc account.Account, str string) bool {
return strings.Contains(acc.Url, str) return strings.Contains(acc.Url, str)
}) })
if len(accounts) == 0 { outputResults(&accounts)
}
func findAccountByLogin(vault *account.VaultWithDb) {
login := PromptData([]string{"Введите Login для поиска"})
// Анонимная функция как параметр
accounts := vault.FindAccounts(login, func(acc account.Account, str string) bool {
return strings.Contains(acc.Login, str)
})
outputResults(&accounts)
}
func outputResults(accounts *[]account.Account) {
if len(*accounts) == 0 {
color.Red("Аккаунт не найден!") color.Red("Аккаунт не найден!")
} }
for _, account := range accounts { for _, account := range *accounts {
account.Output() account.Output()
} }
} }