github.com/covergates/covergates@v0.2.2-0.20201009050117-42ef8a19fb95/routers/api/request/context.go (about)

     1  package request
     2  
     3  import (
     4  	"github.com/covergates/covergates/core"
     5  	"github.com/gin-gonic/gin"
     6  	log "github.com/sirupsen/logrus"
     7  )
     8  
     9  const (
    10  	keyUser = "user"
    11  )
    12  
    13  // WithUser context
    14  func WithUser(c *gin.Context, user *core.User) {
    15  	c.Set(keyUser, user)
    16  }
    17  
    18  // UserFrom context
    19  func UserFrom(c *gin.Context) (*core.User, bool) {
    20  	data, ok := c.Get(keyUser)
    21  	if !ok {
    22  		return nil, false
    23  	}
    24  	user, ok := data.(*core.User)
    25  	if !ok {
    26  		return nil, false
    27  	}
    28  	return user, true
    29  }
    30  
    31  // MustGetUserFrom current context, otherwise panic
    32  func MustGetUserFrom(c *gin.Context) *core.User {
    33  	data := c.MustGet(keyUser)
    34  	user, ok := data.(*core.User)
    35  	if !ok {
    36  		log.Panic("user not found in current context")
    37  	}
    38  	return user
    39  }