From c190ac9c0dfc3f68ca4e1acc8609049d037c9ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=90=99PiperYxzzy?= Date: Tue, 3 May 2022 19:09:38 +0200 Subject: [PATCH] Admin create & login working --- controllers/core/core.go | 5 +++++ main.go | 18 +++++++----------- models/auth.go | 4 +++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/controllers/core/core.go b/controllers/core/core.go index a7da217..fe5e7b0 100644 --- a/controllers/core/core.go +++ b/controllers/core/core.go @@ -432,6 +432,11 @@ func StarterAdmin() gin.HandlerFunc { a.SetPassword(signupVals.Password) 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) c.JSON(http.StatusOK, util.NextMsg{Next: "db verify"}) diff --git a/main.go b/main.go index fc57666..210dee2 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "log" "net/http" @@ -28,26 +27,23 @@ func main() { Migrate(db) r := gin.Default() - v1 := r.Group("/v1") - - // Ping functionality - v1.GET("/doot", core.Doot()) + // Fresh admin functionality if config.Config.AllowFreshAdminGeneration { var adminCount int64 database.Db.Model(models.Admin{}).Count(&adminCount) if adminCount == 0 { randUri := uuid.New() - v1.POST("/"+randUri.String(), core.StarterAdmin()) - - fmt.Println("#################") - fmt.Println("No admins and AllowFreshAdminGeneration=TRUE") - fmt.Println("Sign up starter at: /" + randUri.String()) - fmt.Println("#################") + r.POST("/"+randUri.String(), core.StarterAdmin()) } } + v1 := r.Group("/v1") + + // Ping functionality + v1.GET("/doot", core.Doot()) + // Standard user signup, verify, login and forgot/reset pw v1.POST("/signup", core.UserSignup()) v1.POST("/login", core.UserLogin()) diff --git a/models/auth.go b/models/auth.go index a9b4813..b1b0f43 100644 --- a/models/auth.go +++ b/models/auth.go @@ -1,6 +1,7 @@ package models import ( + "encoding/base32" "errors" "strings" "time" @@ -88,5 +89,6 @@ func (a *Auth) ValidateTwoFactor(tfCode string, stamp time.Time) error { } func (a *Auth) GenerateNewTwoFactorSecret() { - a.TwoFactorSecret = string(util.GenerateHmac(20)) + secretBytes := util.GenerateHmac(20) + a.TwoFactorSecret = base32.StdEncoding.EncodeToString(secretBytes) }