Never been to CodeSnippets 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!)

About this user

Julik Tarkhanov

1 total

Automatically cipher user password

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


1 total