Files
wallet-go-api/pkg/middleware/secretCode.go
2021-07-03 00:01:25 +02:00

42 lines
953 B
Go

package middleware
import (
"net/http"
"os"
"wallet-api/pkg/models"
"wallet-api/pkg/utl/configs"
"github.com/gin-gonic/gin"
)
func SecretCode(c *gin.Context) {
exceptionReturn := new(models.Exception)
secretCode := ExtractCode(c)
secret := os.Getenv("SECRET_CODE")
if secret == "" {
secret = configs.SecretCode
}
if secret != secretCode.SecretCode {
exceptionReturn.ErrorCode = "401101"
exceptionReturn.StatusCode = 401
exceptionReturn.Message = "Invalid secret code"
c.AbortWithStatusJSON(exceptionReturn.StatusCode, exceptionReturn)
}
c.Set("migrate", secretCode)
c.Next()
}
func ExtractCode(c *gin.Context) SecretCodeModel {
secret := new(SecretCodeModel)
if err := c.ShouldBindJSON(&secret); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return SecretCodeModel{}
}
return *secret
}
type SecretCodeModel struct {
SecretCode string `json:"secretCode"`
Version string `json:"version"`
}