Rails 求教关于 grape api 的 login 方法要怎么写

jjzxcc · 2013年05月15日 · 最后由 jjzxcc 回复于 2013年05月15日 · 3871 次阅读

我现在的 login 方法为

def create
    @user = User.find_by_email(params[:session][:email].downcase)
    if @user && @user[:locked]
      flash[:error] = '该账户已锁定,请先解锁。'
      redirect_to new_session_path
    elsif @user && !@user[:locked] && @user.authenticate(params[:session][:password]) && @user[:last_login].nil?
      sign_in @user
      flash[:notice] = "第一次登录,请先修改密码。"
      redirect_to edit_password_users_path(@user)
    elsif @user && !@user[:locked] && @user.authenticate(params[:session][:password]) && !@user[:last_login].nil?
      @user.update_attributes(:failed_attempts=> 0, :last_login => Time.now)
      sign_in @user
      flash[:success] = "用户登录成功。"
      redirect_back_or  current_users_path
    else
      flash[:error] = '邮箱或者密码错误。'
      redirect_to new_session_path
    end
  end

我这样写 grape api 不知道对不对?

post 'login' do 
    @user = User.find_by_email(params[:session][:email].downcase)
    if @user && @user[:locked]
      error!({"error" => "该账户已锁定,请先解锁。" }, 400)
    elsif @user && !@user[:locked] && @user.authenticate(params[:session][:password]) && @user[:last_login].nil?
      sign_in @user
      redirect "/edit_password"
    elsif @user && !@user[:locked] && @user.authenticate(params[:session][:password]) && !@user[:last_login].nil?
      @user.update_attributes(:failed_attempts=> 0, :last_login => Time.now)
      sign_in @user
      redirect  "/current"
    else
      error!({"error" => "邮箱或者密码错误。" }, 400)
    end
  end

求指点。。。。。。

求指点。。。。

主要是想问需不需要

redirect "/edit_password"
redirect  "/current"

这两步。 还是直接返回

present @user

就好了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号