Witam!
Mam stworzony panel w Rails Admin, do tego mam zainstalowany CanCan.
Mialo to dzialac tak jesli chce stworzyc nowy post musze sie zalogowac. Po zalogowaniu tworze post z panelu admina lub bezposrednio ze strony. Po tym jesli chce edytowac lub usunac post moge to zrobic tylko jesli go stworzylem lub jesli jestem superadmin.
W panelu Rails Admin za pomoca tego pliku ability udalo sie ograniczyc dostep do innych postow widac je ale nie mozna ich edytowac lub zmianiac. Niestety jesli sie zaloguje i nie wchodze w panel admina tylko dzialam bezposrednio http://localhost:3000/posts/4/edit moge edytowac post nawet jesli nie jestem jego wlascicielem.
Co radzicie ? Pewnie trzeba by stworzyc funkcje np sprawdz_wlasnosc i za kazdym razem sprawdzac? Czy to jest najprostrzy sposob?
Czy moze wykorzystac do tego
load_and_authorize_resource
W kontrolerze doralem dwie linie
before_filter :authenticate_user!, :only => [:new, :edit, :create, :destroy]
load_and_authorize_resource
A w widoku
<% if can? :show, post %>
<td><%= link_to 'Show', post %></td>
<% end %>
<% if can? :update, post %>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<% end %>
<% if can? :destroy, post %>
<td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
Po tych operacjach zniknely linki do show edit i destroy, jedynie jak jestem zalogowany jako superadmin widze je. W innym wypadku nie sa widoczne. A chcialbym aby user ktory stworzyl post mogl go edytowac.