// Get renders project page func (pc *ProjectController) Get() { var err error isSysAdmin := false uid := pc.GetSession("userId") if uid != nil { isSysAdmin, err = dao.IsAdminRole(uid) if err != nil { log.Warningf("Error in checking Admin Role for user, id: %d, error: %v", uid, err) isSysAdmin = false } } pc.Data["CanCreate"] = !config.OnlyAdminCreateProject() || isSysAdmin pc.Forward("page_title_project", "project.htm") }
// Post ... func (p *ProjectAPI) Post() { p.userID = p.ValidateUser() isSysAdmin, err := dao.IsAdminRole(p.userID) if err != nil { log.Errorf("Failed to check admin role: %v", err) } if !isSysAdmin && config.OnlyAdminCreateProject() { log.Errorf("Only sys admin can create project") p.RenderError(http.StatusForbidden, "Only system admin can create project") return } var req projectReq p.DecodeJSONReq(&req) public := req.Public err = validateProjectReq(req) if err != nil { log.Errorf("Invalid project request, error: %v", err) p.RenderError(http.StatusBadRequest, fmt.Sprintf("invalid request: %v", err)) return } projectName := req.ProjectName exist, err := dao.ProjectExists(projectName) if err != nil { log.Errorf("Error happened checking project existence in db, error: %v, project name: %s", err, projectName) } if exist { p.RenderError(http.StatusConflict, "") return } project := models.Project{OwnerID: p.userID, Name: projectName, CreationTime: time.Now(), Public: public} projectID, err := dao.AddProject(project) if err != nil { log.Errorf("Failed to add project, error: %v", err) dup, _ := regexp.MatchString(dupProjectPattern, err.Error()) if dup { p.RenderError(http.StatusConflict, "") } else { p.RenderError(http.StatusInternalServerError, "Failed to add project") } return } p.Redirect(http.StatusCreated, strconv.FormatInt(projectID, 10)) }