Added current account & middleware to fetch account
This commit is contained in:
parent
398b354158
commit
3ed41590c7
@ -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
|
||||||
}
|
}
|
||||||
|
39
internal/context/middleware.go
Normal file
39
internal/context/middleware.go
Normal 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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user