Admin create & login working
This commit is contained in:
@@ -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"})
|
||||||
|
|||||||
18
main.go
18
main.go
@@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
@@ -28,26 +27,23 @@ 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("#################")
|
|
||||||
fmt.Println("No admins and AllowFreshAdminGeneration=TRUE")
|
|
||||||
fmt.Println("Sign up starter at: /" + randUri.String())
|
|
||||||
fmt.Println("#################")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v1 := r.Group("/v1")
|
||||||
|
|
||||||
|
// Ping functionality
|
||||||
|
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())
|
||||||
v1.POST("/login", core.UserLogin())
|
v1.POST("/login", core.UserLogin())
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user