mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
85 lines
2.0 KiB
Go
85 lines
2.0 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/container"
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
"github.com/crawlab-team/crawlab/core/models/delegate"
|
|
"github.com/crawlab-team/crawlab/core/models/models"
|
|
"github.com/crawlab-team/crawlab/core/models/service"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
var TokenController *tokenController
|
|
|
|
var TokenActions []Action
|
|
|
|
type tokenController struct {
|
|
ListActionControllerDelegate
|
|
d ListActionControllerDelegate
|
|
ctx *tokenContext
|
|
}
|
|
|
|
func (ctr *tokenController) Post(c *gin.Context) {
|
|
var err error
|
|
var t models.Token
|
|
if err := c.ShouldBindJSON(&t); err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
u, err := ctr.ctx.userSvc.GetCurrentUser(c)
|
|
if err != nil {
|
|
HandleErrorUnauthorized(c, err)
|
|
return
|
|
}
|
|
t.Token, err = ctr.ctx.userSvc.MakeToken(u)
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
if err := delegate.NewModelDelegate(&t, GetUserFromContext(c)).Add(); err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
HandleSuccess(c)
|
|
}
|
|
|
|
type tokenContext struct {
|
|
modelSvc service.ModelService
|
|
userSvc interfaces.UserService
|
|
}
|
|
|
|
func newTokenContext() *tokenContext {
|
|
// context
|
|
ctx := &tokenContext{}
|
|
|
|
// dependency injection
|
|
if err := container.GetContainer().Invoke(func(
|
|
modelSvc service.ModelService,
|
|
userSvc interfaces.UserService,
|
|
) {
|
|
ctx.modelSvc = modelSvc
|
|
ctx.userSvc = userSvc
|
|
}); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return ctx
|
|
}
|
|
|
|
func newTokenController() *tokenController {
|
|
modelSvc, err := service.GetService()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
ctr := NewListPostActionControllerDelegate(ControllerIdToken, modelSvc.GetBaseService(interfaces.ModelIdToken), TokenActions)
|
|
d := NewListPostActionControllerDelegate(ControllerIdToken, modelSvc.GetBaseService(interfaces.ModelIdToken), TokenActions)
|
|
ctx := newTokenContext()
|
|
|
|
return &tokenController{
|
|
ListActionControllerDelegate: *ctr,
|
|
d: *d,
|
|
ctx: ctx,
|
|
}
|
|
}
|