2015-02-19 3 views
3

Хорошо, что у меня есть API, который я создал для нашей команды обслуживания клиентов. Мы можем создавать учетные записи и пользователей, и все работает отлично.Изменить пароль разработчика вручную

Но когда я построил его, чтобы изменить пароль пользователя, он меняет их, но не будет входить в систему.

создать учетную запись у меня есть это кодирование:

def create 
    params["user"].delete("user_id") // this is being sent in from the api.. 
    params["user"]["encrypted_password"] = Password.new(Password.create(params["user"]["password"])) 
    params["user"]["password"] = Password.new(Password.create(params["user"]["password"])) 
    user = User.create(params["user"]) 
    if user 
     render json: {company: user}, status: 200 
    else 
     render json: {message: "Problem creating company"}, status: 500 
    end 
    end 

, который прекрасно работает

, но когда я иду, чтобы обновить пользователя и тот же:

params["user"]["encrypted_password"] = Password.new(Password.create(password)) 
    params["user"]["password"] = Password.new(Password.create(password)) 

Не работает правильно

def update 
    user = User.find(params[:id]) 
    password = params["user"].delete("user_password") 
    if password && !password.blank? 
     puts password 
     params["user"]["encrypted_password"] = Password.new(Password.create(password)) 
     params["user"]["password"] = Password.new(Password.create(password)) 
    end 

    if user.update_attributes(params["user"]) 
     render json: {company: user}, status: 200 
    else 
     render json: {message: "Problem updating company"}, status: 500 
    end 
    end 

Он не будет входить в систему после смены

ответ

7

Вам не нужно вводить пароль таким образом, просто установите пароль и подтверждение пароля, а программа позаботится обо всем остальном, не волнуйтесь, t быть сохраненным в обычном тексте, устройство автоматически преобразует обычный текст в хешированный пароль перед сохранением его в db

def update 
    user = User.find(params[:id]) 
    password = params["user"].delete("user_password") 
    if password && !password.blank? 
     user.password = user.password_confirmation = password 
    end 

    if user.save 
    render json: {company: user}, status: 200 
    else 
    render json: {message: "Problem updating company"}, status: 500 
    end 
end 
+0

Спасибо, что спас меня от разочарования –

Смежные вопросы