func (s *ProjectService) update(req *restful.Request, resp *restful.Response, p *project.Project) { raw := &ProjectEntity{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } user := filters.GetUser(req) if p.Owner != user.Id { resp.WriteServiceError(http.StatusForbidden, services.AuthForbidErr) return } mgr := s.Manager() defer mgr.Close() if raw.Name != "" { p.Name = raw.Name } if err := mgr.Projects.Update(p); err != nil { if mgr.IsDup(err) { resp.WriteServiceError( http.StatusConflict, services.NewError(services.CodeDuplicate, "project with this name and owner is existed")) return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteEntity(p) }
func (s *UserService) create(req *restful.Request, resp *restful.Response) { // TODO (m0sth8): Check permissions raw := &user.User{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } mgr := s.Manager() defer mgr.Close() obj, err := mgr.Users.Create(raw) if err != nil { if mgr.IsDup(err) { resp.WriteServiceError( http.StatusConflict, services.NewError(services.CodeDuplicate, "user with this email is existed")) return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteHeader(http.StatusCreated) resp.WriteEntity(obj) }
// disabled func (s *ScanService) update(req *restful.Request, resp *restful.Response, pl *scan.Scan) { // TODO (m0sth8): Check permissions // TODO (m0sth8): Forbid changes in scan after finished status raw := &scan.Scan{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } mgr := s.Manager() defer mgr.Close() raw.Id = pl.Id if err := mgr.Scans.Update(raw); err != nil { if mgr.IsNotFound(err) { resp.WriteErrorString(http.StatusNotFound, "Not found") return } if mgr.IsDup(err) { resp.WriteServiceError( http.StatusConflict, services.NewError(services.CodeDuplicate, "scan with this name and version is existed")) return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteHeader(http.StatusOK) resp.WriteEntity(raw) }
func (s *ProjectService) membersCreate(req *restful.Request, resp *restful.Response, p *project.Project) { raw := &project.Member{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } if raw.User == "" { resp.WriteServiceError(http.StatusBadRequest, services.NewBadReq("user is required")) return } u := filters.GetUser(req) if p.Owner != u.Id { resp.WriteServiceError(http.StatusForbidden, services.AuthForbidErr) return } for _, member := range p.Members { if member.User == raw.User { resp.WriteServiceError(http.StatusConflict, services.NewError(services.CodeDuplicate, "User is already member")) return } } mgr := s.Manager() defer mgr.Close() mUser, err := mgr.Users.GetById(raw.User) if err != nil { if mgr.IsNotFound(err) { resp.WriteErrorString(http.StatusNotFound, "User not found") return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } member := &project.Member{User: mUser.Id} p.Members = append(p.Members, member) err = mgr.Projects.Update(p) if err != nil { if mgr.IsNotFound(err) { resp.WriteErrorString(http.StatusNotFound, "Not found") return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteHeader(http.StatusCreated) resp.WriteEntity(member) }
func (s *ProjectService) create(req *restful.Request, resp *restful.Response) { // TODO (m0sth8): Check permissions for the user, he is might be blocked or removed raw := &ProjectEntity{} if err := req.ReadEntity(raw); err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusBadRequest, services.WrongEntityErr) return } user := filters.GetUser(req) mgr := s.Manager() defer mgr.Close() obj := &project.Project{ Name: raw.Name, Owner: user.Id, } obj, err := mgr.Projects.Create(obj) if err != nil { if mgr.IsDup(err) { resp.WriteServiceError( http.StatusConflict, services.NewError(services.CodeDuplicate, "project with this name and owner is existed")) return } logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } resp.WriteHeader(http.StatusCreated) resp.WriteEntity(obj) }