2012-06-08 2 views
0

내 응용 프로그램에서 사용자 등록을 허용하지 않고 응용 프로그램을 관리하는 유일한 관리자가 관리하는 것은 매우 작은 사람들이 사용하기위한 것입니다.사용자가 생성 된 후 리디렉션 경로를 변경하는 방법은 무엇입니까?

내가 지금 사용자를 만들 때. 내가 작성한 사용자에게 자동으로 로그인되어 있습니다. 로그인 메시지로 플래시 메시지가 표시된 홈페이지로 리디렉션됩니다.

더 많은 것을 만들면이 문제가 발생하지 않습니다. 내가 말해 오류를받을로서 다음 한 사용자는 메신저는 이미 서명했다.

은 여기 내 user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :username, :password, :password_confirmation, :remember_me 
end 

내 users_controller.rb의

class UsersController < ApplicationController 
    # GET /users 
    # GET /users.xml 
    def index 
    @users = User.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @users } 
    end 
    end 

    # GET /users/1 
    # GET /users/1.xml 
    def show 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 

    # GET /users/new 
    # GET /users/new.xml 
    def new 
    @user = User.new 
    @current_method = "new" 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 

    # GET /users/1/edit 
    def edit 
    @user = User.find(params[:id]) 
    end 

    # POST /users 
    # POST /users.xml 
    def create 
    @user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     format.xml { render :xml => @user, :status => :created, :location => @user } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /users/1 
    # PUT /users/1.xml 
    def update 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     if @user.update_attributes(params[:user]) 
     format.html { redirect_to(@user, :notice => 'User was successfully updated.') } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /users/1 
    # DELETE /users/1.xml 
    def destroy 
    @user = User.find(params[:id]) 
    @user.destroy 

    respond_to do |format| 
     format.html { redirect_to(users_url) } 
     format.xml { head :ok } 
    end 
    end 
end 

개 내 경로

DocumentManager::Application.routes.draw do 

    devise_for :users 

    get "index/index" 
    devise_for :users, :controllers => {:sessions => 'sessions'} 
    resources :clients, :jobs, :users 


end 

사람이 올바른 방향으로 날 지점 또는 찾고 메신저 기능을 얻는 방법을 알 수 있습니까?

내가 말했듯이. 사용자 생성 화면으로 돌아가려면 리디렉션이 필요합니다. 사용자는 자동으로 로그인하지 말고 플래시 메시지는 다른 것으로 지정해야합니다.

+3

당신이 당신의 UsersController 번호로 받고있어 확실한 조치를 생성하고, Devises하지 않기 :: RegistrationsController # create? 양식을 보여 주시겠습니까? – alony

답변

0

이것은 가입 후 사용자를 기록하는 Devise registrations 컨트롤러를 사용하고 있기 때문에 발생합니다. 또한 등록 모듈을 사용 중지하지 않으므로 모든 사용자가 /users/sign_up에 액세스하는 계정을 만들 수 있습니다.

당신이 원하는 일을하기 위해, 다음을 수행하십시오

  1. registerable 모듈을 제거;
  2. before_filter을 통해 사용자 컨트롤러의 액세스를 관리자에게만 제한합니다.
  3. 경로상의 devise_for 중 하나를 제거하십시오.
  4. 사용자 컨트롤러를 사용하여 사용자를 생성하십시오.

또한 임의의 암호를 설정하고 로그인 한 후 비밀번호 수정 링크를 보내는 처음으로 암호를 생성하는 사용자를 요청할 수 있습니다.

관련 문제