func (s *ProjectService) list(req *restful.Request, resp *restful.Response) { // TODO (m0sth8): check permissions query, err := fltr.FromRequest(req, manager.ProjectFltr{}) if err != nil { resp.WriteServiceError(http.StatusBadRequest, services.NewBadReq(err.Error())) return } u := filters.GetUser(req) admin := false // if user is not admin then show him only his projects or where he has membership if !admin { query = manager.Or(fltr.GetQuery(&manager.ProjectFltr{Owner: u.Id, Member: u.Id})) } mgr := s.Manager() defer mgr.Close() results, count, err := mgr.Projects.FilterByQuery(query) if err != nil { logrus.Error(stackerr.Wrap(err)) resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } result := &project.ProjectList{ Meta: pagination.Meta{Count: count}, Results: results, } resp.WriteEntity(result) }
func (s *MeService) info(req *restful.Request, resp *restful.Response) { mgr := s.Manager() defer mgr.Close() u := filters.GetUser(req) query := manager.Or(fltr.GetQuery(&manager.ProjectFltr{Owner: u.Id, Member: u.Id})) projects, count, err := mgr.Projects.FilterByQuery(query) if err != nil { logrus.Error(stackerr.Wrap(err)) } else { // TODO (m0sth8): create default project when user on create is triggered. // create one default project if count == 0 { p, err := mgr.Projects.CreateDefault(u.Id) if err != nil { logrus.Error(stackerr.Wrap(err)) // It might be possible, that default project is already created // So, client should repeat request resp.WriteServiceError(http.StatusInternalServerError, services.DbErr) return } else { projects = append(projects, p) } } } info := me.Info{ User: u, Projects: projects, } resp.WriteEntity(info) }