WIP: Add Two Factor Authentication #7
4 changed files with 27 additions and 4 deletions
|
@ -27,7 +27,7 @@ func CleanupLogins() {
|
||||||
log.Printf("[CleanupLogins] Error deleting login transactions: %v\n", err)
|
log.Printf("[CleanupLogins] Error deleting login transactions: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = models.DB.NewDelete().Table("multifactor").Where("expiresat < NOW()").Where("active = false").Exec(context.Background())
|
_, err = models.DB.NewDelete().Table("multifactor").Where("expires_at < NOW()").Where("active = false").Exec(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[CleanupLogins] Error deleting login transactions: %v\n", err)
|
log.Printf("[CleanupLogins] Error deleting login transactions: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
23
migrations/20240506000001_mfa_rename_tables.go
Normal file
23
migrations/20240506000001_mfa_rename_tables.go
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/uptrace/bun"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Migrations.MustRegister(func(ctx context.Context, db *bun.DB) error {
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor RENAME COLUMN expiresat TO expires_at`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor RENAME COLUMN totpurl TO totp_secret`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE users RENAME COLUMN lastlogin TO last_login`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor_scratchcodes RENAME COLUMN isused TO is_used`)
|
||||||
|
return nil
|
||||||
|
}, func(ctx context.Context, db *bun.DB) error {
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor RENAME COLUMN expires_at TO expiresat`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor RENAME COLUMN totp_secret TO totpurl`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE users RENAME COLUMN last_login TO lastlogin`)
|
||||||
|
db.ExecContext(context.Background(), `ALTER TABLE multifactor_scratchcodes RENAME COLUMN is_used TO isused`)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
|
@ -25,8 +25,8 @@ type MFAConfig struct {
|
||||||
bun.BaseModel `bun:"table:multifactor"`
|
bun.BaseModel `bun:"table:multifactor"`
|
||||||
ID int64 `bun:"id,pk,autoincrement"`
|
ID int64 `bun:"id,pk,autoincrement"`
|
||||||
UserName string `bun:"username,notnull"`
|
UserName string `bun:"username,notnull"`
|
||||||
TOTPSecret string `bun:"totpurl,notnull"`
|
TOTPSecret string `bun:"totp_secret,notnull"`
|
||||||
ExpiresAt time.Time `bun:"expiresat,notnull"`
|
ExpiresAt time.Time `bun:"expires_at,notnull"`
|
||||||
Active bool `bun:"active,notnull"`
|
Active bool `bun:"active,notnull"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ type User struct {
|
||||||
bun.BaseModel `bun:"table:users"`
|
bun.BaseModel `bun:"table:users"`
|
||||||
UserName string `bun:"username,pk" json:"username"`
|
UserName string `bun:"username,pk" json:"username"`
|
||||||
Created time.Time `bun:"created,notnull,default:now()" json:"created"`
|
Created time.Time `bun:"created,notnull,default:now()" json:"created"`
|
||||||
LastLogin time.Time `bun:"lastlogin" json:"last_login"`
|
LastLogin time.Time `bun:"last_login" json:"last_login"`
|
||||||
PasswordSalt string `bun:"salt" json:"password_salt"`
|
PasswordSalt string `bun:"salt" json:"password_salt"`
|
||||||
PasswordHash string `bun:"password" json:"password_hash"`
|
PasswordHash string `bun:"password" json:"password_hash"`
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue