2017-02-22 73 views
0

我知道我应该把代码放在用户控制器的创建操作中,但我不确定代码是什么。注册后用户如何登录用户?

这是我的控制器代码:

# frozen_string_literal: true 
class UsersController < ProtectedController 
    skip_before_action :authenticate, only: [:signup, :signin] 

    # POST '/sign-up' 
    def signup 
    user = User.create(user_creds) 
    if user.valid? 
     render json: user, status: :created 
    else 
     render json: user.errors, status: :bad_request 
    end 
    end 

    # POST '/sign-in' 
    def signin 
    creds = user_creds 
    if (user = User.authenticate creds[:email], 
           creds[:password]) 
     render json: user, serializer: UserLoginSerializer, root: 'user' 
    else 
     head :unauthorized 
    end 
    end 

    # DELETE '/sign-out/1' 
    def signout 
    if current_user == User.find(params[:id]) 
     current_user.logout 
     head :no_content 
    else 
     head :unauthorized 
    end 
    end 

    # PATCH '/change-password/:id' 
    def changepw 
    if !current_user.authenticate(pw_creds[:old]) || 
     (current_user.password = pw_creds[:new]).blank? || 
     !current_user.save 
     head :bad_request 
    else 
     head :no_content 
    end 
    end 

    def index 
    render json: User.all 
    end 

    def show 
    user = User.find(params[:id]) 
    render json: user 
    end 

    def update 
    head :bad_request 
    end 

    private 

    def user_creds 
    params.require(:credentials) 
      .permit(:email, :password, :password_confirmation) 
    end 

    def pw_creds 
    params.require(:passwords) 
      .permit(:old, :new) 
    end 

    private :user_creds, :pw_creds 
end 

我知道我应该在我创建的用户改变一些东西

,但不知道在哪里

我试图标志下使用@current_user =用户但它没有工作。

+1

你使用的是设计宝石吗? – theBrezilien

回答

0

您是否希望用户在注册时登录?

# POST '/sign-up' 
def signup 
    user = User.create(user_creds) 
    if user.valid? 
    User.authenticate(user_creds[:email], user_creds[:password]) 
    render json: user, status: :created 
    else 
    render json: user.errors, status: :bad_request 
    end 
end 
+0

是的,这就是我想要的。你的建议没有用 – momo

+0

你在使用设计吗? –

+0

我不使用设计 – momo