<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -2,11 +2,15 @@ class ProjectsController &lt; ApplicationController
   restrict_to :user
   
   def index
-    @projects = ProjectManager.all_projects_for_user current_user
+    @projects = ProjectPermission.find_all_projects_for_user(current_user)
   end
 
   def show
-    @project = ProjectManager.get_project_for_user(params[:id], current_user)
+    if @project=ProjectPermission.find_project_for_user(params[:id], current_user)
+      @project
+    else
+      raise AccessDenied
+    end
   end
 
   def new
@@ -14,7 +18,11 @@ class ProjectsController &lt; ApplicationController
   end
 
   def edit
-    @project = ProjectManager.get_project_for_user(params[:id], current_user)
+    if @project=ProjectPermission.find_project_for_user(params[:id], current_user)
+      @project
+    else
+      redirect_to &quot;/access_denied.html&quot;
+    end
   end
 
   def create
@@ -45,13 +53,20 @@ class ProjectsController &lt; ApplicationController
   end
 
   def destroy
-    @project = ProjectManager.get_project_for_user(params[:id], current_user)
+    if @project=ProjectPermission.find_project_for_user(params[:id], current_user)
+      @project
+    else
+      redirect_to &quot;/access_denied.html&quot;
+    end
     @project.destroy
     redirect_to projects_path
   end
   
   def workspace
-    @project = ProjectManager.get_project_for_user(params[:id], current_user)
-    @stories = @project.incomplete_stories
+    if @project=ProjectPermission.find_project_for_user(params[:id], current_user)
+      @stories = @project.incomplete_stories
+    else
+      redirect_to &quot;/access_denied.html&quot;
+    end
   end
 end</diff>
      <filename>app/controllers/projects_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -184,6 +184,9 @@ private
   end
 
   def find_project
-    @project = ProjectManager.get_project_for_user(params[:project_id], current_user)
+    unless @project=ProjectPermission.find_project_for_user(params[:project_id], current_user)
+      redirect_to &quot;/access_denied.html&quot;
+      false
+    end
   end
 end</diff>
      <filename>app/controllers/stories_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,5 @@
 class ProjectManager
   class &lt;&lt; self
-    def all_projects_for_user(user)
-      ProjectPermission.find_all_projects_for_user(user)
-    end
-    
     def get_project_for_user(project_id, user)
       if project=ProjectPermission.find_project_for_user(project_id, user)
         project</diff>
      <filename>app/managers/project_manager.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,11 +9,11 @@ describe ProjectsController, &quot;#index&quot; do
     @user = mock_model(User)
     login_as @user
     @projects = stub(&quot;projects&quot;)
-    ProjectManager.stub!(:all_projects_for_user).and_return(@projects)
+    ProjectPermission.stub!(:find_all_projects_for_user).and_return(@projects)
   end
   
   it &quot;asks the project manager for all projects for the current user&quot; do
-    ProjectManager.should_receive(:all_projects_for_user).with(@user).and_return(@projects)
+    ProjectPermission.stub!(:find_all_projects_for_user).with(@user).and_return(@projects)
     get_index
   end
   
@@ -57,18 +57,18 @@ describe ProjectsController, &quot;#show&quot; do
   before do
     @user = mock_model(User)
     @project = mock_model(Project)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
     login_as @user
   end
 
-  it &quot;asks the ProjectManager to find the requested project for the current user&quot; do
-    ProjectManager.should_receive(:get_project_for_user).with(@project.id.to_s, @user)
+  it &quot;asks the ProjectPermission to find the requested project for the current user&quot; do
+    ProjectPermission.should_receive(:find_project_for_user).with(@project.id.to_s, @user)
     get_show
   end
   
   describe &quot;a user with proper privileges&quot; do
     before do
-      ProjectManager.stub!(:get_project_for_user).and_return(@project)      
+      ProjectPermission.stub!(:find_project_for_user).and_return(@project)      
     end
     
     it &quot;assigns the requested project&quot; do
@@ -85,7 +85,7 @@ describe ProjectsController, &quot;#show&quot; do
   
   describe &quot;a user without proper privileges&quot; do
     before do
-      ProjectManager.stub!(:get_project_for_user).and_raise(AccessDenied)
+      ProjectPermission.stub!(:find_project_for_user).and_return(nil)
     end
     
     it &quot;redirects to the 401 access denied page&quot; do
@@ -253,11 +253,11 @@ describe ProjectsController, '#edit' do
     @user = mock_model(User)
     login_as @user
     @project = mock_model(Project)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
   end
   
-  it &quot;asks the ProjectManager for the project for the current the current user&quot; do
-    ProjectManager.get_project_for_user(@project.id.to_s, @user)
+  it &quot;asks the ProjectPermission for the project for the current the current user&quot; do
+    ProjectPermission.should_receive(:find_project_for_user).with(@project.id.to_s, @user)
     get_edit
   end
   
@@ -276,7 +276,7 @@ describe ProjectsController, '#edit' do
   
   describe &quot;when the user doesn't have access to the project&quot; do
     before do
-      ProjectManager.stub!(:get_project_for_user).and_raise(AccessDenied)
+      ProjectPermission.stub!(:find_project_for_user).and_return(nil)
     end
     
     it &quot;redirects to the access denied page&quot; do
@@ -295,11 +295,11 @@ describe ProjectsController, '#destroy' do
     @user = mock_model(User)
     login_as @user
     @project = mock_model(Project, :destroy =&gt; nil)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
   end
-  
-  it &quot;asks the ProjectManager for the project for the current the current user&quot; do
-    ProjectManager.get_project_for_user(@project.id.to_s, @user)
+
+  it &quot;asks the ProjectPermission for the project for the current the current user&quot; do
+    ProjectPermission.find_project_for_user(@project.id.to_s, @user)
     delete_destroy
   end
   
@@ -324,7 +324,7 @@ describe ProjectsController, '#destroy' do
   
   describe &quot;when the user doesn't have access to the project&quot; do
     before do
-      ProjectManager.stub!(:get_project_for_user).and_raise(AccessDenied)
+      ProjectPermission.stub!(:find_project_for_user).and_raise(AccessDenied)
     end
     
     it &quot;redirects to the access denied page&quot; do
@@ -333,3 +333,39 @@ describe ProjectsController, '#destroy' do
     end
   end
 end
+
+describe ProjectsController, '#workspace' do
+  def get_workspace(params={})
+    get :workspace, params.reverse_merge(:id =&gt; @project.id)
+  end
+  
+  before do
+    @user = mock_model(User)
+    login_as @user
+  end
+  
+  describe 'when the user has access to the project' do
+    before do
+      @project = mock_model(Project, :incomplete_stories =&gt; [])
+      ProjectPermission.stub!(:find_project_for_user).and_return(@project)
+    end
+    
+    it &quot;assigns @stories&quot; do
+      @stories = mock(:stories)
+      @project.should_receive(:incomplete_stories).with().and_return(@stories)
+      get_workspace
+      assigns(:stories).should == @stories
+    end
+  end
+  
+  describe 'when the user does not have access to the project' do
+    before do
+      ProjectPermission.stub!(:find_project_for_user).and_return(nil)
+    end
+    
+    it &quot;redirects to access_denied&quot; do
+      get_workspace
+      response.should redirect_to(&quot;/access_denied.html&quot;)
+    end
+  end
+end
\ No newline at end of file</diff>
      <filename>spec/controllers/projects_controller_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ describe StoriesController, '#edit' do
     stub_login_for StoriesController
     @project = stub(&quot;project&quot;)
     @stories = stub(&quot;stories&quot;, :find =&gt; nil)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
     @project.stub!(:stories).and_return(@stories)
   end
   </diff>
      <filename>spec/controllers/stories_controller/stories_controller_edit_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ describe StoriesController, &quot;user with privileges requesting #index &quot; do
     @user.stub!(:has_privilege?).and_return(true)
     @stories_index_presenter = stub(&quot;story index presenter&quot;)
     StoriesIndexPresenter.stub!(:new).and_return(@stories_index_presenter)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
   end
 
   it &quot;returns successful&quot; do</diff>
      <filename>spec/controllers/stories_controller/stories_controller_index_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ describe StoriesController, '#reorder' do
     @project = mock_model(Project)
     @story_ids = [ &quot;3&quot;, &quot;2&quot;, &quot;&quot;, &quot;1&quot;]
     @renderer = mock(&quot;remote site renderer&quot;, :render_notice =&gt; nil, :render_error =&gt; nil)
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
     RemoteSiteRenderer.stub!(:new).and_return(@renderer)
     Story.stub!(:reorder)
     controller.expect_render(:update).and_yield(@page)    </diff>
      <filename>spec/controllers/stories_controller/stories_controller_reorder_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ describe StoriesController, '#update' do
     @stories = stub(&quot;stories&quot;, :find =&gt; @story)
     @project = stub(&quot;project&quot;, :stories =&gt; @stories)
     @story_params = { 'summary' =&gt; 'foo' }
-    ProjectManager.stub!(:get_project_for_user).and_return(@project)
+    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
   end
   
   it &quot;finds the requested story&quot; do</diff>
      <filename>spec/controllers/stories_controller/stories_controller_update_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,60 +1,5 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-describe ProjectManager, '.all_projects_for_user' do
-  def all_projects_for_user
-    ProjectManager.all_projects_for_user @user
-  end
-  
-  before do
-    @user = mock_model(User)
-    @projects = stub(&quot;projects&quot;)
-    ProjectPermission.stub!(:find_all_projects_for_user)
-  end
-  
-  it &quot;finds and returns all projects the passed in user has permissions on&quot; do
-    ProjectPermission.should_receive(:find_all_projects_for_user).with(@user).and_return(@projects)
-    all_projects_for_user.should == @projects
-  end
-end
-
-describe ProjectManager, '.get_project_for_user' do
-  def get_project_for_user
-    ProjectManager.get_project_for_user(@project.id, @user)
-  end
-  
-  before do
-    @user = mock_model(User)
-    @project = mock_model(Project)
-    ProjectPermission.stub!(:find_project_for_user).and_return(@project)
-  end
-  
-  it &quot;finds the requested project for the passed in user&quot; do
-    ProjectPermission.should_receive(:find_project_for_user).with(@project.id, @user).and_return(@project)
-    get_project_for_user
-  end
-  
-  describe &quot;when the requested project cannot be found for the user&quot; do
-    before do
-      ProjectPermission.stub!(:find_project_for_user).and_return(nil)
-    end
-    
-    it &quot;raise an AccessDenied exception&quot; do
-      lambda{
-        get_project_for_user
-      }.should raise_error(AccessDenied)
-    end
-  end
-  
-  describe &quot;when the requested project is found&quot; do
-    before do
-      ProjectPermission.stub!(:find_project_for_user).and_return(@project)
-    end
-    
-    it &quot;returns the project&quot; do
-      get_project_for_user.should == @project
-    end
-  end
-end
 
 describe ProjectManager, &quot;.update_project_for_user&quot; do
   def update_project_for_user(&amp;blk)</diff>
      <filename>spec/managers/project_manager_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>spec/controllers/projects_controller/projects_controller_workspace_spec.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>93c3c214996d46b74623beb7ad5ab1aecf1d8fca</id>
    </parent>
  </parents>
  <author>
    <name>Zach Dennis</name>
    <email>zach.dennis@gmail.com</email>
  </author>
  <url>http://github.com/zdennis/strac/commit/ddb2369418758a5ae72c344cd89e0801fa9980fe</url>
  <id>ddb2369418758a5ae72c344cd89e0801fa9980fe</id>
  <committed-date>2008-05-05T06:07:50-07:00</committed-date>
  <authored-date>2008-05-05T06:07:50-07:00</authored-date>
  <message>inlined ProjectManager#find_project_for_user and ProjectManager#find_all_projects_for_user in the ProjectsController and StoriesController</message>
  <tree>b7fa7a9edd2bd4e2a04258c62af4391e9d308e8f</tree>
  <committer>
    <name>Zach Dennis</name>
    <email>zach.dennis@gmail.com</email>
  </committer>
</commit>
