本文整理汇总了Golang中github.com/app-kit/go-appkit.Request.GetUser方法的典型用法代码示例。如果您正苦于以下问题:Golang Request.GetUser方法的具体用法?Golang Request.GetUser怎么用?Golang Request.GetUser使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/app-kit/go-appkit.Request
的用法示例。
在下文中一共展示了Request.GetUser方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ApiCreate
func (_ FilesResource) ApiCreate(res kit.Resource, obj kit.Model, r kit.Request) kit.Response {
// Verify that tmp path is set either in metadata or on model.
file := obj.(kit.File)
if file.GetTmpPath() == "" {
file.SetTmpPath(r.GetMeta().String("file"))
}
filePath := file.GetTmpPath()
if filePath == "" {
return kit.NewErrorResponse("no_tmp_path", "A tmp path must be set when creating a file", true)
}
tmpPath := getTmpPath(res)
if !strings.HasPrefix(filePath, tmpPath) && filePath[0] != '/' {
filePath = tmpPath + string(os.PathSeparator) + filePath
file.SetTmpPath(filePath)
}
// Build the file, save it to backend and persist it to the db.
err := res.Registry().FileService().BuildFile(file, r.GetUser(), true, true)
if err != nil {
kit.NewErrorResponse(err)
}
return &kit.AppResponse{
Data: file,
}
}
示例2: RunMethod
func (a *App) RunMethod(name string, r kit.Request, responder func(kit.Response), withFinishedChannel bool) (chan bool, apperror.Error) {
method := a.registry.Method(name)
if method == nil {
return nil, &apperror.Err{
Code: "unknown_method",
Message: fmt.Sprintf("The method %v does not exist", name),
}
}
if r.GetSession() == nil {
session, err := a.UserService().StartSession(r.GetUser(), "")
if err != nil {
return nil, err
}
r.SetSession(session)
}
instance := NewMethodInstance(method, r, responder)
if withFinishedChannel {
c := make(chan bool)
instance.finishedChannel = c
return c, a.sessionManager.QueueMethod(r.GetSession(), instance)
} else {
return nil, a.sessionManager.QueueMethod(r.GetSession(), instance)
}
}
示例3: ApiPartialUpdate
func (res *Resource) ApiPartialUpdate(obj kit.Model, r kit.Request) kit.Response {
if updateHook, ok := res.hooks.(ApiUpdateHook); ok {
return updateHook.ApiUpdate(res, obj, r)
}
user := r.GetUser()
err := res.PartialUpdate(obj, user)
if err != nil {
return kit.NewErrorResponse(err)
}
return &kit.AppResponse{
Data: obj,
}
}
示例4: ApiDelete
func (res *Resource) ApiDelete(id string, r kit.Request) kit.Response {
if deleteHook, ok := res.hooks.(ApiDeleteHook); ok {
return deleteHook.ApiDelete(res, id, r)
}
oldObj, err := res.FindOne(id)
if err != nil {
return kit.NewErrorResponse(err)
} else if oldObj == nil {
return kit.NewErrorResponse("not_found", "")
}
user := r.GetUser()
if err := res.Delete(oldObj, user); err != nil {
return kit.NewErrorResponse(err)
}
return &kit.AppResponse{
Data: oldObj,
}
}
示例5: ApiFindOne
func (res *Resource) ApiFindOne(rawId string, r kit.Request) kit.Response {
hook, ok := res.hooks.(ApiFindOneHook)
if ok {
return hook.ApiFindOne(res, rawId, r)
}
result, err := res.FindOne(rawId)
if err != nil {
return kit.NewErrorResponse(err)
} else if result == nil {
return kit.NewErrorResponse("not_found", "")
}
user := r.GetUser()
if allowFind, ok := res.hooks.(AllowFindHook); ok {
if !allowFind.AllowFind(res, result, user) {
return kit.NewErrorResponse("permission_denied", "")
}
}
return &kit.AppResponse{
Data: result,
}
}
示例6: ApiFind
func (res *Resource) ApiFind(query *db.Query, r kit.Request) kit.Response {
// If query is empty, query for all records.
if query == nil {
query = res.Q()
}
apiFindHook, ok := res.hooks.(ApiFindHook)
if ok {
return apiFindHook.ApiFind(res, query, r)
}
if alterQuery, ok := res.hooks.(ApiAlterQueryHook); ok {
alterQuery.ApiAlterQuery(res, query, r)
}
result, err := res.Query(query)
if err != nil {
return kit.NewErrorResponse(err)
}
user := r.GetUser()
if allowFind, ok := res.hooks.(AllowFindHook); ok {
finalItems := make([]kit.Model, 0)
for _, item := range result {
if allowFind.AllowFind(res, item, user) {
finalItems = append(finalItems, item)
}
}
result = finalItems
}
response := &kit.AppResponse{
Data: result,
}
// If a limit was set, count the total number of results
// and set count parameter in metadata.
limit := query.GetLimit()
if limit > 0 {
query.Limit(0).Offset(0)
count, err := res.backend.Count(query)
if err != nil {
return &kit.AppResponse{
Error: apperror.Wrap(err, "count_error", ""),
}
}
response.SetMeta(map[string]interface{}{
"count": count,
"total_pages": math.Ceil(float64(count) / float64(limit)),
})
}
if hook, ok := res.hooks.(ApiAfterFindHook); ok {
if err := hook.ApiAfterFind(res, result, r, response); err != nil {
return kit.NewErrorResponse(err)
}
}
return response
}