From a328e7ccc4f94e19cddfe5894636228663f5c7fa Mon Sep 17 00:00:00 2001 From: E99p1ant Date: Sun, 5 Jun 2022 13:34:21 +0800 Subject: access_token: encrypt access token with SHA256 (#7008) * access_token: encrypt access token with SHA256 * revert list access token * fix lint * generate schemadoc * add database migrations * fix tests * fix tests * add test case for access token golden * fix test in postgres * `Sha256` -> `SHA256` * Use GORM for migration * task generate-schemadoc * Use unique * change migration name * allow read * task generate-schemadoc * add changelog * fix lint error * update changelog * remove Debug * add comments Co-authored-by: Joe Chen --- internal/db/migrations/migrations.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'internal/db/migrations/migrations.go') diff --git a/internal/db/migrations/migrations.go b/internal/db/migrations/migrations.go index ad62fb15..1e89883f 100644 --- a/internal/db/migrations/migrations.go +++ b/internal/db/migrations/migrations.go @@ -7,6 +7,7 @@ package migrations import ( "fmt" + "gorm.io/gorm" log "unknwon.dev/clog/v2" "xorm.io/xorm" ) @@ -15,15 +16,15 @@ const minDBVersion = 19 type Migration interface { Description() string - Migrate(*xorm.Engine) error + Migrate(*gorm.DB) error } type migration struct { description string - migrate func(*xorm.Engine) error + migrate func(*gorm.DB) error } -func NewMigration(desc string, fn func(*xorm.Engine) error) Migration { +func NewMigration(desc string, fn func(*gorm.DB) error) Migration { return &migration{desc, fn} } @@ -31,11 +32,11 @@ func (m *migration) Description() string { return m.description } -func (m *migration) Migrate(x *xorm.Engine) error { - return m.migrate(x) +func (m *migration) Migrate(db *gorm.DB) error { + return m.migrate(db) } -// The version table. Should have only one row with id==1 +// Version represents the version table. It should have only one row with `id == 1`. type Version struct { ID int64 Version int64 @@ -52,10 +53,13 @@ var migrations = []Migration{ // Add new migration here, example: // v18 -> v19:v0.11.55 // NewMigration("clean unlinked webhook and hook_tasks", cleanUnlinkedWebhookAndHookTasks), + + // v19 -> v20:v0.13.0 + NewMigration("migrate access tokens to store SHA56", migrateAccessTokenToSHA256), } // Migrate database to current version -func Migrate(x *xorm.Engine) error { +func Migrate(x *xorm.Engine, db *gorm.DB) error { if err := x.Sync(new(Version)); err != nil { return fmt.Errorf("sync: %v", err) } @@ -112,7 +116,7 @@ In case you're stilling getting this notice, go through instructions again until } for i, m := range migrations[v-minDBVersion:] { log.Info("Migration: %s", m.Description()) - if err = m.Migrate(x); err != nil { + if err = m.Migrate(db); err != nil { return fmt.Errorf("do migrate: %v", err) } currentVersion.Version = v + int64(i) + 1 -- cgit v1.2.3