Implement Totp authentication

This commit is contained in:
2024-06-19 16:23:28 +07:00
parent c3948bb1c1
commit cdc365e89b
9 changed files with 210 additions and 10 deletions

View File

@ -45,6 +45,8 @@ type Database interface {
UpdateUploadedByte(index int64, fileID string)
UpdateUploadedChunk(index int64, fileID string)
FinalizeFileUpload(fileID string)
InitializeTotp(email string, secret string) error
}
func NewMYSQLdb(username, password, host, port, dbName string) Database {
@ -262,6 +264,20 @@ func (db *mySQLdb) FinalizeFileUpload(fileID string) {
db.Save(&file)
}
func (db *mySQLdb) InitializeTotp(email string, secret string) error {
var user models.User
err := db.DB.Table("users").Where("email = ?", email).First(&user).Error
if err != nil {
return err
}
user.Totp = secret
err = db.Save(&user).Error
if err != nil {
return err
}
return nil
}
// POSTGRES FUNCTION
func (db *postgresDB) IsUserRegistered(email string, username string) bool {
var data models.User
@ -369,3 +385,17 @@ func (db *postgresDB) FinalizeFileUpload(fileID string) {
file.Done = true
db.Save(&file)
}
func (db *postgresDB) InitializeTotp(email string, secret string) error {
var user models.User
err := db.DB.Table("users").Where("email = $1", email).First(&user).Error
if err != nil {
return err
}
user.Totp = secret
err = db.Save(&user).Error
if err != nil {
return err
}
return nil
}