Files
wallet-go-api/pkg/middleware/secretCode.go
2021-08-02 10:19:58 -07:00

46 lines
1.0 KiB
Go

package middleware
import (
"net/http"
"os"
"wallet-api/pkg/models"
"wallet-api/pkg/utl/configs"
"github.com/gin-gonic/gin"
)
// Secret Code Middleware.
//
// Checks if secret code from body is valid.
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()
}
// Extracts the secret code from body
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"`
}