/artists/show_or_new: make public; add "artist doesn't exist" page.

* Fix access denied error when anonymous users open /artists/show_or_new.

* When the artist doesn't exist, take user to "artist doesn't exist"
  page instead of redirecting to /artists/new.
This commit is contained in:
evazion
2017-07-06 18:17:21 -05:00
parent e5598be20e
commit cc54c16fac
3 changed files with 10 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
class ArtistsController < ApplicationController
respond_to :html, :xml, :json
before_filter :member_only, :except => [:index, :show, :banned]
before_filter :member_only, :except => [:index, :show, :show_or_new, :banned]
before_filter :builder_only, :only => [:destroy]
before_filter :admin_only, :only => [:ban, :unban]
before_filter :load_artist, :only => [:ban, :unban, :show, :edit, :update, :destroy, :undelete]
@@ -96,7 +96,9 @@ class ArtistsController < ApplicationController
if @artist
redirect_to artist_path(@artist)
else
redirect_to new_artist_path(:name => params[:name])
@artist = Artist.new(name: params[:name])
@post_set = PostSets::Artist.new(@artist)
respond_with(@artist)
end
end

View File

@@ -0,0 +1,5 @@
<%= render layout: "show" do %>
<div>
<p>This artist entry does not exist. <%= link_to "Create new artist entry", new_artist_path(name: params[:name]) %>.</p>
</div>
<% end %>

View File

@@ -42,7 +42,7 @@ class ArtistsControllerTest < ActionController::TestCase
assert_redirected_to(@masao)
get :show_or_new, { name: "nobody" }, { user_id: @user.id }
assert_redirected_to(new_artist_path(name: "nobody"))
assert_response :success
end
should "get the edit page" do