49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package domain
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/chaitin/panda-wiki/consts"
|
|
)
|
|
|
|
type APIToken struct {
|
|
ID string `json:"id" gorm:"primaryKey"`
|
|
Name string `json:"name" gorm:"not null"`
|
|
UserID string `json:"user_id" gorm:"not null"`
|
|
Token string `json:"token" gorm:"uniqueIndex;not null"`
|
|
KbId string `json:"kb_id" gorm:"not null"`
|
|
Permission consts.UserKBPermission `json:"permission" gorm:"not null"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func (APIToken) TableName() string {
|
|
return "api_tokens"
|
|
}
|
|
|
|
type CtxAuthInfo struct {
|
|
IsToken bool
|
|
Permission consts.UserKBPermission
|
|
UserId string
|
|
KBId string
|
|
}
|
|
|
|
type contextKey string
|
|
|
|
const (
|
|
CtxAuthInfoKey contextKey = "ctx_auth_info"
|
|
)
|
|
|
|
func GetAuthInfoFromCtx(c context.Context) *CtxAuthInfo {
|
|
v := c.Value(CtxAuthInfoKey)
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
ctxAuthInfo, ok := v.(*CtxAuthInfo)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return ctxAuthInfo
|
|
}
|