Skip to content

Дипломный проект курса Продвинутый Go-разработчик

License

Notifications You must be signed in to change notification settings

hikjik/gophkeeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coverage License: GPL v3 Lint tests Unit tests

Менеджер паролей GophKeeper

GophKeeper представляет собой клиент-серверную систему, позволяющую пользователю безопасно хранить логины, пароли, данные банковских карт, произвольные текстовые и бинарные данные.

Сервер поддерживает следующий функционал:

  • регистрация, аутентификация и авторизация пользователей;
  • хранение приватных данных пользователей;
  • синхронизация данных между несколькими авторизованными клиентами одного владельца;
  • передача приватных данных владельцу по запросу.

Клиент реализует следующую бизнес-логику:

  • регистрация, аутентификация и авторизация пользователей на удалённом сервере;
  • доступ к приватным данным по запросу.

Настройка и запуск сервера

Перед запуском сервера необходимо создать конфигурационный файл с настройками или задать переменные окружения. Пример конфигурационного файла:

# server-config.yaml

grpc:
  address: 127.0.0.1:9090
db:
  url: postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable
auth:
  key: xiuw1bi4r98vd1(&*6
  expiration_time: 24h
hasher:
  key: jc7YSHpH287)(*2bSq

Пример настройки сервера через переменные окружения:

# .env

GRPC_ADDRESS=127.0.0.1:9090
DB_URL=postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable
AUTH_KEY=xiuw1bi4r98vd1(&*6
AUTH_EXPIRATION_TIME=24h
HASHER_KEY=jc7YSHpH287)(*2bSq

После настройки запуск сервера осуществляется командной:

./gophkeeper server

Настройка и запуск клиента

Перед запуском клиента необходимо создать конфигурационный файл с настройками или задать переменные окружения. Пример конфигурационного файла:

# client-config.yaml

grpc:
  address: 127.0.0.1:9090
encryption:
  key: WYJcWgkItShq513L21E1CFuz6uQWDy3p

Пример настройки клиента через переменные окружения:

# .env

GRPC_ADDRESS=127.0.0.1:9090
ENCRYPTION_KEY=WYJcWgkItShq513L21E1CFuz6uQWDy3p

Процедуры регистрации, аутентификации, авторизации

При регистрации пользователя необходимо указать адрес электронной почты и пароль. Пример команды регистрации:

./gophkeeper-cli auth register -e [email protected] -p 123456

В случае успешного выполнения запроса регистрации нового пользователя, сервер вернет в ответ токен доступа. Токен будет сохранен в текстовый файл.

В случае необходимости, токен доступа можно запросить повторно с помощью команды:

./gophkeeper-cli auth login -e [email protected] -p 123456

Хранение приватных данных пользователя

После записи полученного при регистрации токена доступа в переменную окружения TOKEN становятся доступны команды для управления приватными данными пользователя.

Добавление приватных данных

  1. Пример команды, сохраняющей данные банковской карты:
./gophkeeper-cli secret create card \
  --name visa \
  --number 1111222233334444 \
  --date 12/22 \
  --holder Alexandr \
  --code 512
  1. Пример команды создания пары логин пароль:
./gophkeeper-cli secret create credentials \
  --name yandex-mail \
  --login [email protected] \
  --password 12345678
  1. Пример команды для сохранения текстовой информации
./gophkeeper-cli secret create text \
  --name pushkin \
  --data "medny vsadnik"
  1. Пример команды для сохранения бинарных данных
./gophkeeper-cli secret create bin \
  --name code \
  -f main.go

Получение данных

Для получения приватных данных необходимо указать название секрета, пример:

./gophkeeper-cli secret get --name visa

Также можно вывести список всех приватных данных пользователя:

./gophkeeper-cli secret list

Редактирование и удаление данных

Пример редактирования данных о банковской карте:

./gophkeeper-cli secret update card \
  --name visa \
  --number 1111222233335555 \
  --date 12/30 \
  --holder "Alexandr Pushkin" \
  --code 256

Пример команды удаления данных:

./gophkeeper-cli secret delete --name visa

About

Дипломный проект курса Продвинутый Go-разработчик

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages