Added current account & middleware to fetch account

This commit is contained in:
perp 2024-06-06 19:56:24 +01:00
parent 398b354158
commit 3ed41590c7
2 changed files with 41 additions and 0 deletions

View File

@ -3,11 +3,13 @@ package context
import ( import (
"git.supernets.org/perp/gopay/internal/config" "git.supernets.org/perp/gopay/internal/config"
"git.supernets.org/perp/gopay/internal/database" "git.supernets.org/perp/gopay/internal/database"
"git.supernets.org/perp/gopay/internal/database/account"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
type Context struct { type Context struct {
*gin.Context *gin.Context
Account *account.Model
Config *config.Config Config *config.Config
Database *database.Database Database *database.Database
} }

View File

@ -0,0 +1,39 @@
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
}