Skip to content

Commit

Permalink
Merge pull request #7 from IgorPolyakov/main
Browse files Browse the repository at this point in the history
Better security
  • Loading branch information
IgorPolyakov authored Apr 21, 2024
2 parents 32d79f1 + 506c9ec commit 74ed5c0
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 18 deletions.
30 changes: 21 additions & 9 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@

- [ ] Авторизация
- [ ] BasicAuth
- [ ] Регистрацию думаю пока не надо - пусть через админку будет добавление новых
- [x] Регистрация
- [x] Через админку будет добавление новых
- [ ] База данных (postgre)
- [x] Переехать с mysql на psql.
- [x] Добавить seed.
- [ ] Версионирование чтобы проще было обновлять сервер.
- [ ] Сделать изменения через миграции, а не init.sql
- [ ] Добавить seed?
- [ ] CI/CD
- [x] линтер
- [x] проверка зависимостей nancy
Expand All @@ -19,11 +20,22 @@

## Админ

- [ ] Создание / редактирование и удаление пользователей
- [ ] Создание / редактирование и удаление команд
- [ ] Добавление / редактирование и удаление сервисов в каталоге
- [ ] Создание игр по расписанию (какие сервисы какие команды и когда)
- [ ] При загрузки zip для сервиса необходимо проверить корректно ли работает чекер (проверить все коды и состояния)
- [ ] Пользователи
- [x] Создание
- [ ] Редактирование // api есть
- [x] Удаление
- [ ] Команды
- [x] Создание
- [ ] Редактирование // api есть
- [x] Удаление
- [ ] Сервисы
- [ ] Создание
- [ ] Редактирование // api есть
- [ ] Удаление
- [ ] Игры
- [ ] Создание
- [ ] По расписанию (какие сервисы какие команды и когда)
- [ ] При загрузки zip для сервиса необходимо проверить корректно ли работает чекер (проверить все коды и состояния)


## Профиль пользователя
Expand All @@ -40,8 +52,8 @@

## Команды

- [ ] Отображение списка команд
- [ ] По команде - аватарка, университет, ссылки в социальные сети, краткое описание
- [x] Отображение списка команд
- [x] По команде - аватарка, университет, ссылки в социальные сети, краткое описание
- [ ] Текущий капитан (и его зам и зам зам капитана).


Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ require (
require (
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/joho/godotenv v1.5.1 // indirect
golang.org/x/crypto v0.22.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
olympos.io/encoding/edn v0.0.0-20201019073823-d3554ca0b0a3 // indirect
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
Expand Down
7 changes: 6 additions & 1 deletion internal/app/api/users.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,16 @@ func CreateUserHandler(db *sql.DB, w http.ResponseWriter, r *http.Request) {
return
}
userRepo := repository.NewUserRepository(db)
passwordHash, err := api_helpers.HashPassword(user.Password)
if err != nil {
api_helpers.RespondWithJSON(w, http.StatusBadRequest, map[string]string{"error": "Invalid request payload: " + err.Error()})
return
}
newUser := &models.User{
Username: user.Username,
Role: user.Role,
Status: user.Status,
PasswordHash: api_helpers.HashPassword(user.Password),
PasswordHash: passwordHash,
AvatarUrl: api_helpers.PrepareImage(user.AvatarUrl),
}
if err := userRepo.Create(r.Context(), newUser); err != nil {
Expand Down
21 changes: 13 additions & 8 deletions internal/app/utils/api_helpers.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
package api_helpers

import (
"crypto/sha1"
"encoding/hex"
"encoding/json"
"log"
"net/http"
"net/url"
"regexp"

"golang.org/x/crypto/bcrypt"
)

// fixme тут ли ей место? вынести в - tool
func HashPassword(s string) string {
h := sha1.New()
h.Write([]byte(s))
// fixme добавить соль в конфиг и солить пароли, переделать на bcrypt
return hex.EncodeToString(h.Sum(nil))
func HashPassword(s string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(s), bcrypt.DefaultCost)
if err != nil {
return "", err
}
return string(bytes), nil
}

func CheckPasswordHash(s, hash string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(s))
return err == nil
}

func PrepareImage(avatarUrl string) string {
Expand Down
File renamed without changes.
File renamed without changes.

0 comments on commit 74ed5c0

Please sign in to comment.