func getAppOrError(name string, u *auth.User) (app.App, error) { app := app.App{Name: name} err := app.Get() if err != nil { return app, &errors.Http{Code: http.StatusNotFound, Message: fmt.Sprintf("App %s not found.", name)} } if !auth.CheckUserAccess(app.Teams, u) { return app, &errors.Http{Code: http.StatusForbidden, Message: "User does not have access to this app"} } return app, nil }
func serviceInstanceAndAppOrError(instanceName, appName string, u *auth.User) (instance service.ServiceInstance, a app.App, err error) { err = db.Session.ServiceInstances().Find(bson.M{"name": instanceName}).One(&instance) if err != nil { err = &errors.Http{Code: http.StatusNotFound, Message: "Instance not found"} return } if !auth.CheckUserAccess(instance.Teams, u) { err = &errors.Http{Code: http.StatusForbidden, Message: "This user does not have access to this instance"} return } err = db.Session.Apps().Find(bson.M{"name": appName}).One(&a) if err != nil { err = &errors.Http{Code: http.StatusNotFound, Message: fmt.Sprintf("App %s not found.", appName)} return } if !auth.CheckUserAccess(a.Teams, u) { err = &errors.Http{Code: http.StatusForbidden, Message: "This user does not have access to this app"} return } return }
func getServiceOrError(name string, u *auth.User) (service.Service, error) { s := service.Service{Name: name} err := s.Get() if err != nil { return s, &errors.Http{Code: http.StatusNotFound, Message: "Service not found"} } if !auth.CheckUserAccess(s.OwnerTeams, u) { msg := "This user does not have access to this service" return s, &errors.Http{Code: http.StatusForbidden, Message: msg} } return s, err }
func getServiceAndTeamOrError(serviceName string, teamName string, u *auth.User) (*service.Service, *auth.Team, error) { service := &service.Service{Name: serviceName} err := service.Get() if err != nil { return nil, nil, &errors.Http{Code: http.StatusNotFound, Message: "Service not found"} } if !auth.CheckUserAccess(service.Teams, u) { msg := "This user does not have access to this service" return nil, nil, &errors.Http{Code: http.StatusForbidden, Message: msg} } t := new(auth.Team) err = db.Session.Teams().Find(bson.M{"_id": teamName}).One(t) if err != nil { return nil, nil, &errors.Http{Code: http.StatusNotFound, Message: "Team not found"} } return service, t, nil }