package auth
import (
"strings"
"github.com/gofiber/fiber/v2"
"github.com/limanmys/render-engine/internal/liman"
"github.com/limanmys/render-engine/pkg/logger"
)
func New () fiber .Handler {
return authorization
}
func authorization(c *fiber .Ctx ) error {
if len (c .FormValue ("token" )) > 0 {
user , err := liman .AuthWithToken (
strings .Trim (c .FormValue ("token" ), "" ),
)
if err != nil {
return logger .FiberError (fiber .StatusUnauthorized , err .Error())
}
c .Locals ("user_id" , user )
return c .Next ()
}
if len (c .FormValue ("liman-token" )) > 0 {
user , err := liman .AuthWithAccessToken (
strings .Trim (c .FormValue ("liman-token" ), "" ),
)
if err != nil {
return logger .FiberError (fiber .StatusUnauthorized , err .Error())
}
c .Locals ("user_id" , user )
return c .Next ()
}
if len (string (c .Request ().Header .Peek ("Authorization" ))) > 0 {
user , err := liman .AuthWithToken (
strings .Trim (string (c .Request ().Header .Peek ("Authorization" )), "" ),
)
if err != nil {
return logger .FiberError (fiber .StatusUnauthorized , err .Error())
}
c .Locals ("user_id" , user )
return c .Next ()
}
return logger .FiberError (fiber .StatusUnauthorized , "authorization token is missing" )
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .