| @@ -1,22 +1,67 @@ | |||||
| package repo | package repo | ||||
| import ( | import ( | ||||
| "net/http" | |||||
| "code.gitea.io/gitea/modules/log" | |||||
| "code.gitea.io/gitea/models" | |||||
| "code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
| routeRepo "code.gitea.io/gitea/routers/repo" | routeRepo "code.gitea.io/gitea/routers/repo" | ||||
| ) | ) | ||||
| func GetSuccessChunks(ctx *context.APIContext) { | func GetSuccessChunks(ctx *context.APIContext) { | ||||
| if errStr := checkDatasetPermission(ctx); errStr != "" { | |||||
| ctx.JSON(http.StatusForbidden, ctx.Tr(errStr)) | |||||
| } | |||||
| routeRepo.GetSuccessChunks(ctx.Context) | routeRepo.GetSuccessChunks(ctx.Context) | ||||
| } | } | ||||
| func checkDatasetPermission(ctx *context.APIContext) string { | |||||
| datasetId := ctx.QueryInt64("dataset_id") | |||||
| dataset, err := models.GetDatasetByID(datasetId) | |||||
| if err != nil { | |||||
| log.Warn("can not find dataset", err) | |||||
| return "dataset.query_dataset_fail" | |||||
| } | |||||
| repo, err := models.GetRepositoryByID(dataset.RepoID) | |||||
| if err != nil { | |||||
| log.Warn("can not find repo", err) | |||||
| return "dataset.query_dataset_fail" | |||||
| } | |||||
| permission, err := models.GetUserRepoPermission(repo, ctx.User) | |||||
| if err != nil { | |||||
| log.Warn("can not find repo permission for user", err) | |||||
| return "dataset.query_dataset_fail" | |||||
| } | |||||
| if !permission.CanWrite(models.UnitTypeDatasets) { | |||||
| return "error.no_right" | |||||
| } | |||||
| return "" | |||||
| } | |||||
| func NewMultipart(ctx *context.APIContext) { | func NewMultipart(ctx *context.APIContext) { | ||||
| if errStr := checkDatasetPermission(ctx); errStr != "" { | |||||
| ctx.JSON(http.StatusForbidden, ctx.Tr(errStr)) | |||||
| } | |||||
| routeRepo.NewMultipart(ctx.Context) | routeRepo.NewMultipart(ctx.Context) | ||||
| } | } | ||||
| func GetMultipartUploadUrl(ctx *context.APIContext) { | func GetMultipartUploadUrl(ctx *context.APIContext) { | ||||
| if errStr := checkDatasetPermission(ctx); errStr != "" { | |||||
| ctx.JSON(http.StatusForbidden, ctx.Tr(errStr)) | |||||
| } | |||||
| routeRepo.GetMultipartUploadUrl(ctx.Context) | routeRepo.GetMultipartUploadUrl(ctx.Context) | ||||
| } | } | ||||
| func CompleteMultipart(ctx *context.APIContext) { | func CompleteMultipart(ctx *context.APIContext) { | ||||
| if errStr := checkDatasetPermission(ctx); errStr != "" { | |||||
| ctx.JSON(http.StatusForbidden, ctx.Tr(errStr)) | |||||
| } | |||||
| routeRepo.CompleteMultipart(ctx.Context) | routeRepo.CompleteMultipart(ctx.Context) | ||||
| } | } | ||||