public ActionResult LoadProject(int projectId) { ProjectRepository repo = new ProjectRepository(); dynamic config; Project project = repo.LoadProject(projectId, out config); if (project == null) { return(HttpNotFound()); } if (!project.IsSample) { if (!User.Identity.IsAuthenticated) { return(HttpNotFound()); //td: right error } if (User.Identity.GetUserId() != project.UserID) { return(HttpNotFound()); //td: right error } } var path = new Scope(null) as dynamic; path.ToolPath = Path.Combine(Server.MapPath("~/App_Data"), "Tools"); IRuntimeProject runtime = _manager.createRuntime(project.ProjectType, project.Name, config, path, new ProjectStorage(project)); foreach (var file in project.ProjectFiles) { runtime.add(file.Name, file.ID, file.Contents); } Session["project"] = runtime; if (!project.IsSample) { Session["projectId"] = project.ID; } else { Session["SampleProjectId"] = project.ID; } return(Json(new { defaultFile = runtime.defaultFile(), tree = new[] { projectTree(project, runtime) } }, JsonRequestBehavior.AllowGet)); }