Moncho Chavez
Moncho Chavez

Reputation: 694

Validation on Devise on other controller

Hi maybe this is a fool question, there are info in a lot of posts, but i do not understand because im learning rails..

I have made this controller, posts_controller.rb

def index
    @posts = Post.all
end 

def show
  @post = Post.find(params[:id])
end


def create
  @post = Post.new(params[:post])
  @post.save
  redirect_to @post
end


def new
end

end

This is now public.. How can i make this just for admins, Im using devise. this is the controller for > SecureController

class SecureController < ApplicationController

  before_filter :authenticate_user!

  authorize_resource

  def has_role?(current_user, role)
    return !!current_user.roles.find_by_name(role)
  end

  rescue_from CanCan::AccessDenied do |exception|
    render :file => "#{Rails.root}/public/403.html", :status => 403, :layout => false
  end

end

Also Registratons controller

class RegistrationsController < Devise::RegistrationsController
  protected

  def after_sign_up_path_for(resource)
    if current_user.user_type == 'player'
      player_steps_path
    elsif current_user.user_type == 'coach'
      coach_steps_path
    elsif current_user.user_type == 'elite'
      candidates_path
    end
  end
end

How can i make that domain.com/posts/new is just available for Admin, but domain.com/posts is open to everyone..

Also i see there is views for admin... how can i make domain.com/admin/posts/new to work?

Any Documentation will be nice, but also a explanation, cause as i said, im just learning rails.

thanks

Upvotes: 0

Views: 156

Answers (1)

rb512
rb512

Reputation: 6948

Use :except

before_filter :authenticate_user!, :except => [:new]

Upvotes: 1

Related Questions