Я использую гем attr_encrypted, и в моей среде также установлено устройство.
У меня есть модель пользователя, которая обрабатывается устройством, а столбец базы данных: encrypted_password.
Пользователи могут сохранять клиентов, и я хочу зашифровать имя и возраст клиентов с помощью пароля пользователя.
мой файл client.rb выглядит так: Здесь данные успешно зашифрованы.
class Client < ActiveRecord::Base
attr_accessor :name :age
attr_encrypted :name, :age, key: "test1234"
Но я хотел бы зашифровать данные с помощью Users.password. Что-то вроде этого:
class Client < ActiveRecord::Base
attr_accessor :name :age
attr_encrypted :name, :age, key: current_user.encrypted_password
current_user — это вспомогательный метод Devise, но, поскольку это из сеанса, я не могу получить к нему доступ в модели. В принципе, я хотел бы зашифровать все данные клиентов с помощью пароля пользователя. Но если я сделаю это с зашифрованным_паролем, то у меня уже есть пароль для расшифровки всего поля. Я хочу обеспечить безопасность своих пользователей и не хочу знать или иметь возможность просматривать их данные. Значит, единственный способ сделать это — зашифровать все данные предварительно хэшированным паролем пользователя?
редактировать:
user.encrypted_password уже хеширован, и всякий раз, когда я получаю доступ к базе данных, я могу использовать его для расшифровки всех данных, верно?
Поэтому я должен запросить пароль пользователя -> хешировать его, как это делает devise, - сравнить его с user.encrypted_password?
У меня где-то логическая ошибка?
Как бы вы решили это?