Придумайте ограничение регистрации для администратора - PullRequest
3 голосов
/ 29 июля 2011

Я работаю над приложением Rails, которое использует Devise в качестве модуля аутентификации, однако я хочу настроить его так, чтобы CanCan разрешал только администраторам создавать нового пользователя.Мне трудно понять, как настроить контроллер для Devise, чтобы это можно было сделать.Любая помощь будет оценена.

Ответы [ 2 ]

5 голосов
/ 29 июля 2011

Вам не нужно ничего настраивать: D

  • Удалить: можно зарегистрировать в вашей модели Devise.

  • Создайте свой CRUD для пользователей * (просто пользователи скаффолдов)

  • Используйте CanCan для разрешения пользователей на ваших пользователей Контроллер.

* Посмотрите вики Devise о том, как создать CRUD для пользователей, есть трюк с маршрутизацией, который нужно сделать

0 голосов
/ 29 июля 2011

Вы можете создать «Пользовательский» контроллер, который будет управлять пользователями, а затем просто установить для него разрешения. Таким образом, в вашем новом пользовательском контроллере вы можете получить что-то вроде:

class UserController < ApplicationController
  load_and_authorize_resource

  def index
  end

  def new
  end

  def show
  end

  def create
    if @user.save
      flash[:notice] = "Successfully created User." 
      redirect_to root_path
    else
      render :action => 'new'
    end
  end

  def edit
  end

  def update
    params[:user].delete(:password) if params[:user][:password].blank?
    params[:user].delete(:password_confirmation) if params[:user][:password].blank? and params[:user][:password_confirmation].blank?
    if @user.update_attributes(params[:user])
      flash[:notice] = "Successfully updated User."
      redirect_to user_index_path
    else
      render :action => 'edit'
    end
  end

  def destroy
    if @user.destroy
      flash[:notice] = "Successfully deleted User."
      redirect_to user_index_path
    end
  end

end

Предполагается, что администраторы настроены на:

can :manage, :all

Тебе должно быть хорошо идти.

В вашем файле маршрутов вам нужно будет настроить ваши маршруты:

resources :user, :controller => "user"

Надеюсь, это поможет!

...