Как получить зашифрованный пароль из базы данных, чтобы показать (все еще как :: пароль) при обновлении / редактировании? - PullRequest
0 голосов
/ 18 октября 2018

Я могу добавлять новых пользователей в ActiveAdmin.Я могу просмотреть его как зашифрованную строку пароля, но при редактировании поля пароля остаются пустыми.

Я знаю, что они остаются неизменными, но с точки зрения UX, мне нужно показать человеку, редактирующему пользователя, что пароль уже на месте.Я использую проверку устройства, таким образом, зашифрованный пароль.

Как я могу это сделать?

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Так что просто обновление, если кому-то может понадобиться это в будущем.

Поскольку вы обычно не можете вернуть зашифрованный пароль обратно в поле пароля для обновления, я решил, что другой обходной путь - это возможность скрыть два поля пароля при обновлении и выполнить для них отдельное действиечто только пользователь может изменить пароль по электронной почте.

В ActiveAdmin я написал такую ​​форму:

form do |f|
f.inputs 'Admin Details' do
  f.input :email
  if f.object.new_record?
    f.input :password, as: :password
    f.input :password_confirmation, :label => "Password Confirmation"
  end
end
f.actions

end

Дорожным препятствием для этого решения является проверка.Я должен иметь возможность позволить пользователю обновлять другие поля без необходимости каждый раз обновлять пароль.Это не идеальное решение, но я проверяю их присутствие только при создании.

validates :password,
presence: {
  :message => 'Password cannot be blank'
},
:confirmation => true,
on: :create

validates :password,
    :confirmation => { 
      case_sensitive: true
     }, 
    :length => { 
      :within => 8..128, 
      too_short: "Password is too short (minimum is 8 characters)",
      too_long: "Password is too long (maximum is 128 characters)" 
    }, 
    :unless => lambda{ |adminuser| adminuser.password.blank? },
    on: :create

  validates :password_confirmation,
  presence: {
    :message => 'Field cannot be blank'
  }, 
  on: :create

Так что да, он отправляет инструкции по изменению пароля по электронной почте, передавая токен

0 голосов
/ 18 октября 2018

Я пересмотрел ответ от этого и получил его так:

# app/admin/inputs/readonly_input.rb

class ReadonlyInput < Formtastic::Inputs::StringInput
  def to_html
    input_wrapping do
      label_html <<
      template.content_tag('div', @object.send(method))
    end
  end
end

# app/admin/admin_users.rb

ActiveAdmin.register AdminUser do
  # ...

  form do |f|
    f.semantic_errors
    f.inputs 'Admin Details' do
      f.input :email
      f.input :encrypted_password, label: "Current Password", as: :readonly
      f.input :password
      f.input :password_confirmation
    end
    f.actions
  end 
end
...