mirror of
https://github.com/makayabou/asg-server.git
synced 2026-05-02 17:43:36 +02:00
Added: data hashing for security reasons
This commit is contained in:
parent
18a8637d89
commit
571604eab2
@ -42,7 +42,7 @@ Content-Type: application/json
|
||||
|
||||
[
|
||||
{
|
||||
"id": "Z4oS32CY5XktsYTCcMWMn",
|
||||
"id": "ZoK8jU8y74cZRnZH1xNIH",
|
||||
"state": "Delivered",
|
||||
"recipients": [
|
||||
{
|
||||
|
||||
@ -40,5 +40,16 @@ func Run() {
|
||||
logOption.UseLogLevel(zapcore.DebugLevel)
|
||||
return &logOption
|
||||
}),
|
||||
// fx.Invoke(
|
||||
// func(lc fx.Lifecycle, logger *zap.Logger, messagesSvc *services.MessagesService) {
|
||||
// lc.Append(
|
||||
// fx.Hook{
|
||||
// OnStart: func(ctx context.Context) error {
|
||||
// return messagesSvc.HashProcessed()
|
||||
// },
|
||||
// },
|
||||
// )
|
||||
// },
|
||||
// ),
|
||||
).Run()
|
||||
}
|
||||
|
||||
@ -3,6 +3,9 @@
|
||||
ALTER TABLE `messages`
|
||||
ADD `is_hashed` tinyint(1) unsigned NOT NULL DEFAULT false;
|
||||
-- +goose StatementEnd
|
||||
-- +goose StatementBegin
|
||||
CREATE INDEX `idx_messages_is_hashed` USING HASH ON `messages` (`is_hashed`);
|
||||
-- +goose StatementEnd
|
||||
---
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
|
||||
@ -66,6 +66,23 @@ func (r *MessagesRepository) UpdateState(message *models.Message) error {
|
||||
})
|
||||
}
|
||||
|
||||
func (r *MessagesRepository) HashProcessed() error {
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
err := tx.Model(&models.MessageRecipient{}).
|
||||
Where("message_id IN (?)", tx.Model(&models.Message{}).Select("id").Where("is_hashed = ? AND state <> ?", false, models.MessageStatePending)).
|
||||
Update("phone_number", gorm.Expr("LEFT(SHA2(phone_number, 256), 16)")).
|
||||
Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return tx.Model(&models.Message{}).
|
||||
Where("is_hashed = ? AND state <> ?", false, models.MessageStatePending).
|
||||
Updates(map[string]interface{}{"is_hashed": true, "message": gorm.Expr("SHA2(message, 256)")}).
|
||||
Error
|
||||
})
|
||||
}
|
||||
|
||||
func NewMessagesRepository(db *gorm.DB) *MessagesRepository {
|
||||
return &MessagesRepository{
|
||||
db: db,
|
||||
|
||||
@ -164,6 +164,10 @@ func (s *MessagesService) Enqeue(device models.Device, message smsgateway.Messag
|
||||
return state, nil
|
||||
}
|
||||
|
||||
func (s *MessagesService) HashProcessed() error {
|
||||
return s.Messages.HashProcessed()
|
||||
}
|
||||
|
||||
func (s *MessagesService) filterTimeouted(messages []models.Message) []models.Message {
|
||||
result := make([]models.Message, 0, len(messages))
|
||||
for _, v := range messages {
|
||||
|
||||
1
internal/sms-gateway/tasks/hashing.go
Normal file
1
internal/sms-gateway/tasks/hashing.go
Normal file
@ -0,0 +1 @@
|
||||
package tasks
|
||||
Loading…
x
Reference in New Issue
Block a user