gopay/internal/context/middleware.go

40 lines
662 B
Go

package context
import (
"strings"
"git.supernets.org/perp/gopay/internal/jwt"
)
// Get an account from token header
func (ctx *Context) GetAccount() {
// Get header
header := ctx.GetHeader("Authorization")
// Split value
split := strings.Split(header, " ")
// No bearer found
if len(split) != 2 {
ctx.Error(400, "MissingToken")
return
}
// Decode token
token, err := jwt.Decode(split[1])
if err != nil {
ctx.Error(400, "InvalidToken")
return
}
// Select account
account, err := ctx.Database.Account.SelectByID(token.ID)
if err != nil {
ctx.Error(500, "InternalServerError")
return
}
// Set account
ctx.Account = account
}