Admin create & login working

This commit is contained in:
🐙PiperYxzzy
2022-05-03 19:09:38 +02:00
parent 66c35e7e4a
commit c190ac9c0d
3 changed files with 15 additions and 12 deletions

View File

@@ -432,6 +432,11 @@ func StarterAdmin() gin.HandlerFunc {
a.SetPassword(signupVals.Password) a.SetPassword(signupVals.Password)
a.GenerateNewTwoFactorSecret() a.GenerateNewTwoFactorSecret()
if err := database.Db.Create(&a).Error; err != nil {
c.AbortWithStatus(http.StatusInternalServerError)
return
}
go util.SendEmail("Admin Created", "A new admin, "+a.Email+", has been created", config.Config.AdminEmails) go util.SendEmail("Admin Created", "A new admin, "+a.Email+", has been created", config.Config.AdminEmails)
c.JSON(http.StatusOK, util.NextMsg{Next: "db verify"}) c.JSON(http.StatusOK, util.NextMsg{Next: "db verify"})

20
main.go
View File

@@ -1,7 +1,6 @@
package main package main
import ( import (
"fmt"
"log" "log"
"net/http" "net/http"
@@ -28,25 +27,22 @@ func main() {
Migrate(db) Migrate(db)
r := gin.Default() r := gin.Default()
v1 := r.Group("/v1")
// Ping functionality
v1.GET("/doot", core.Doot())
// Fresh admin functionality
if config.Config.AllowFreshAdminGeneration { if config.Config.AllowFreshAdminGeneration {
var adminCount int64 var adminCount int64
database.Db.Model(models.Admin{}).Count(&adminCount) database.Db.Model(models.Admin{}).Count(&adminCount)
if adminCount == 0 { if adminCount == 0 {
randUri := uuid.New() randUri := uuid.New()
v1.POST("/"+randUri.String(), core.StarterAdmin()) r.POST("/"+randUri.String(), core.StarterAdmin())
}
}
fmt.Println("#################") v1 := r.Group("/v1")
fmt.Println("No admins and AllowFreshAdminGeneration=TRUE")
fmt.Println("Sign up starter at: /" + randUri.String()) // Ping functionality
fmt.Println("#################") v1.GET("/doot", core.Doot())
}
}
// Standard user signup, verify, login and forgot/reset pw // Standard user signup, verify, login and forgot/reset pw
v1.POST("/signup", core.UserSignup()) v1.POST("/signup", core.UserSignup())

View File

@@ -1,6 +1,7 @@
package models package models
import ( import (
"encoding/base32"
"errors" "errors"
"strings" "strings"
"time" "time"
@@ -88,5 +89,6 @@ func (a *Auth) ValidateTwoFactor(tfCode string, stamp time.Time) error {
} }
func (a *Auth) GenerateNewTwoFactorSecret() { func (a *Auth) GenerateNewTwoFactorSecret() {
a.TwoFactorSecret = string(util.GenerateHmac(20)) secretBytes := util.GenerateHmac(20)
a.TwoFactorSecret = base32.StdEncoding.EncodeToString(secretBytes)
} }