Never been to TextSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

Automatically cipher user password (See related posts)

This allows you to cipher the password of the user automatically upon entry. This way you can allow entry of raw ciphered password via web services etc. as well as keep it ciphered in the database (for instance as a char(32))

require 'md5'
class User < ActiveRecord::Base
        before_save :cipher_password!
    def self.login(login, password)
                password = MD5.new(password).to_s unless password.to_s =~ /^[\dabcdef]{32}$/
                self.find_by_login_and_password(login, password)
        end
        
        private
                def cipher_password!
                        unless password.to_s =~ /^[\dabcdef]{32}$/
                                write_attribute("password", MD5.new(password).to_s)
                                # this is needed for virtual validation
                                @password_confirmation = MD5.new(@password_confirmation).to_s if @password_confirmation
                        end
                end
end



Comments on this post

dasil003 posts on Nov 03, 2005 at 19:15
Very nice julik, I was just working on my own solution for this.
dasil003 posts on Nov 26, 2005 at 01:19
It might be a good idea to modify this so that the hash itself is not accepted as the password.

You need to create an account or log in to post comments to this site.


Related Posts