refactor authentication (#1950)

This commit is contained in:
zryfish
2020-03-15 17:55:55 +08:00
committed by GitHub
parent abf0d66b22
commit eb8a3c0dc6
32 changed files with 522 additions and 381 deletions

View File

@@ -33,7 +33,7 @@ func (h ProjectPipelineHandler) GetDevOpsProjectMembersHandler(request *restful.
err := h.projectOperator.CheckProjectUserInRole(username, projectId, devops.AllRoleSlice)
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
orderBy := request.QueryParameter(params.OrderByParam)
@@ -45,7 +45,7 @@ func (h ProjectPipelineHandler) GetDevOpsProjectMembersHandler(request *restful.
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -62,14 +62,14 @@ func (h ProjectPipelineHandler) GetDevOpsProjectMemberHandler(request *restful.R
err := h.projectOperator.CheckProjectUserInRole(username, projectId, devops.AllRoleSlice)
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
project, err := h.projectMemberOperator.GetProjectMember(projectId, member)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -85,26 +85,26 @@ func (h ProjectPipelineHandler) AddDevOpsProjectMemberHandler(request *restful.R
err := request.ReadEntity(&member)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
if govalidator.IsNull(member.Username) {
err := fmt.Errorf("error need username")
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
if !reflectutils.In(member.Role, devops.AllRoleSlice) {
err := fmt.Errorf("err role [%s] not in [%s]", member.Role,
devops.AllRoleSlice)
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
err = h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
@@ -113,7 +113,7 @@ func (h ProjectPipelineHandler) AddDevOpsProjectMemberHandler(request *restful.R
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -129,41 +129,41 @@ func (h ProjectPipelineHandler) UpdateDevOpsProjectMemberHandler(request *restfu
err := request.ReadEntity(&member)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
member.Username = request.PathParameter("member")
if govalidator.IsNull(member.Username) {
err := fmt.Errorf("error need username")
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
if username == member.Username {
err := fmt.Errorf("you can not change your role")
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
if !reflectutils.In(member.Role, devops.AllRoleSlice) {
err := fmt.Errorf("err role [%s] not in [%s]", member.Role,
devops.AllRoleSlice)
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
err = h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
project, err := h.projectMemberOperator.UpdateProjectMember(projectId, member)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -180,13 +180,13 @@ func (h ProjectPipelineHandler) DeleteDevOpsProjectMemberHandler(request *restfu
err := h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
username, err = h.projectMemberOperator.DeleteProjectMember(projectId, member)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(struct {

View File

@@ -15,13 +15,13 @@ func (h PipelineSonarHandler) GetPipelineSonarStatusHandler(request *restful.Req
err := h.projectOperator.CheckProjectUserInRole(username, projectId, devops.AllRoleSlice)
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
sonarStatus, err := h.pipelineSonarGetter.GetPipelineSonar(projectId, pipelineId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(sonarStatus)
@@ -35,13 +35,13 @@ func (h PipelineSonarHandler) GetMultiBranchesPipelineSonarStatusHandler(request
err := h.projectOperator.CheckProjectUserInRole(username, projectId, devops.AllRoleSlice)
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
sonarStatus, err := h.pipelineSonarGetter.GetMultiBranchPipelineSonar(projectId, pipelineId, branchId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(sonarStatus)

View File

@@ -30,14 +30,14 @@ func (h ProjectPipelineHandler) GetDevOpsProjectHandler(request *restful.Request
err := h.projectOperator.CheckProjectUserInRole(username, projectId, devops.AllRoleSlice)
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
project, err := h.projectOperator.GetProject(projectId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -53,21 +53,21 @@ func (h ProjectPipelineHandler) UpdateProjectHandler(request *restful.Request, r
err := request.ReadEntity(&project)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, request, err)
return
}
project.ProjectId = projectId
err = h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
project, err = h.projectOperator.UpdateProject(project)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}

View File

@@ -29,14 +29,14 @@ func (h ProjectPipelineHandler) CreateDevOpsProjectCredentialHandler(request *re
err := request.ReadEntity(&credential)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
credentialId, err := h.projectCredentialOperator.CreateProjectCredential(projectId, username, credential)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -54,14 +54,14 @@ func (h ProjectPipelineHandler) UpdateDevOpsProjectCredentialHandler(request *re
err := request.ReadEntity(&credential)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
credentialId, err = h.projectCredentialOperator.UpdateProjectCredential(projectId, credentialId, credential)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -80,7 +80,7 @@ func (h ProjectPipelineHandler) DeleteDevOpsProjectCredentialHandler(request *re
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -99,7 +99,7 @@ func (h ProjectPipelineHandler) GetDevOpsProjectCredentialHandler(request *restf
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -113,7 +113,7 @@ func (h ProjectPipelineHandler) GetDevOpsProjectCredentialsHandler(request *rest
jenkinsCredentials, err := h.projectCredentialOperator.GetProjectCredentials(projectId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(jenkinsCredentials)

View File

@@ -29,20 +29,20 @@ func (h ProjectPipelineHandler) CreateDevOpsProjectPipelineHandler(request *rest
err := request.ReadEntity(&pipeline)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
err = h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
pipelineName, err := h.projectPipelineOperator.CreateProjectPipeline(projectId, pipeline)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -60,14 +60,14 @@ func (h ProjectPipelineHandler) DeleteDevOpsProjectPipelineHandler(request *rest
err := h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, request, err)
return
}
pipelineName, err := h.projectPipelineOperator.DeleteProjectPipeline(projectId, pipelineId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -86,20 +86,20 @@ func (h ProjectPipelineHandler) UpdateDevOpsProjectPipelineHandler(request *rest
err := request.ReadEntity(&pipeline)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
err = h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
pipelineName, err := h.projectPipelineOperator.UpdateProjectPipeline(projectId, pipelineId, pipeline)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
@@ -118,14 +118,14 @@ func (h ProjectPipelineHandler) GetDevOpsProjectPipelineConfigHandler(request *r
err := h.projectOperator.CheckProjectUserInRole(username, projectId, []string{devops.ProjectOwner, devops.ProjectMaintainer})
if err != nil {
klog.Errorf("%+v", err)
api.HandleForbidden(resp, err)
api.HandleForbidden(resp, nil, err)
return
}
pipeline, err := h.projectPipelineOperator.GetProjectPipelineConfig(projectId, pipelineId)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}

View File

@@ -22,38 +22,38 @@ func (h S2iBinaryHandler) UploadS2iBinaryHandler(req *restful.Request, resp *res
err := req.Request.ParseMultipartForm(bytefmt.MEGABYTE * 20)
if err != nil {
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
if len(req.Request.MultipartForm.File) == 0 {
err := restful.NewError(http.StatusBadRequest, "could not get file from form")
klog.Errorf("%+v", err)
api.HandleBadRequest(resp, err)
api.HandleBadRequest(resp, nil, err)
return
}
if len(req.Request.MultipartForm.File["s2ibinary"]) == 0 {
err := restful.NewError(http.StatusBadRequest, "could not get file from form")
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
if len(req.Request.MultipartForm.File["s2ibinary"]) > 1 {
err := restful.NewError(http.StatusBadRequest, "s2ibinary should only have one file")
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
defer req.Request.MultipartForm.RemoveAll()
file, err := req.Request.MultipartForm.File["s2ibinary"][0].Open()
if err != nil {
klog.Error(err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
filemd5, err := hashutil.GetMD5(file)
if err != nil {
klog.Error(err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
md5, ok := req.Request.MultipartForm.Value["md5"]
@@ -61,7 +61,7 @@ func (h S2iBinaryHandler) UploadS2iBinaryHandler(req *restful.Request, resp *res
if md5[0] != filemd5 {
err := restful.NewError(http.StatusBadRequest, fmt.Sprintf("md5 not match, origin: %+v, calculate: %+v", md5[0], filemd5))
klog.Error(err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
}
@@ -69,7 +69,7 @@ func (h S2iBinaryHandler) UploadS2iBinaryHandler(req *restful.Request, resp *res
s2ibin, err := h.s2iUploader.UploadS2iBinary(ns, name, filemd5, req.Request.MultipartForm.File["s2ibinary"][0])
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
resp.WriteAsJson(s2ibin)
@@ -83,7 +83,7 @@ func (h S2iBinaryHandler) DownloadS2iBinaryHandler(req *restful.Request, resp *r
url, err := h.s2iUploader.DownloadS2iBinary(ns, name, fileName)
if err != nil {
klog.Errorf("%+v", err)
api.HandleInternalError(resp, err)
api.HandleInternalError(resp, nil, err)
return
}
http.Redirect(resp.ResponseWriter, req.Request, url, http.StatusFound)