alai-server/backend/middlewares/auth.go

32 lines
780 B
Go

package middlewares
import (
"errors"
"net/http"
"strings"
"git.cromer.cl/Proyecto-Titulo/alai-server/backend/utils"
"github.com/julienschmidt/httprouter"
)
func Authenticate(handle httprouter.Handle) httprouter.Handle {
return func(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
reqToken := request.Header.Get("Authorization")
splitToken := strings.Split(reqToken, "Bearer ")
if len(splitToken) < 2 {
utils.JSONErrorOutput(writer, http.StatusUnauthorized, errors.New("no token received").Error())
return
}
tokenString := splitToken[1]
err := utils.ValidateToken(tokenString)
if err != nil {
utils.JSONErrorOutput(writer, http.StatusUnauthorized, err.Error())
return
}
handle(writer, request, params)
}
}