Changing password is not working right

Hi I am trying to change a password from my DB,
adding a new user works… login in as the new user also works… to
change the user password does not works right…
I basically using a bit of the login code with the new user code…
what I am trying to do…( I MUST use unix crypt no way I can change this
unfortunately)

  1. I need to check for the email and password and I add this to
    variables of course the password I need to encrypted from plain text
    before I check this…( I also do this when login in… and works)
  2. after that is true then I go ahead to try to change the password…

the issue? I seem to change it but after that I cant log in anymore… so
somehow the .crypt(salt) that I am using for login and creating the
user is not working here… Im a noob so please let me know what can this
be.

I also cant seem to see anything on the development.log :frowning: how can I
see what is going on between the form and rails? with no eyes I cant
troubleshoot.

----------------snip-----------------
def change_password

    old_password = params[:crypt_old].crypt(params[:crypt_old])
    new_password = params[:crypt_new].crypt(params[:crypt_new])
    username = params[:email]
    auth2 = Users.find(:first, :conditions => [ "email = '%s' AND

crypt = ‘%s’",username, old_password ])
if auth2
auth2.update_attribute(:crypt, new_password)
redirect_to :action => ‘si’
else
redirect_to :action => ‘no’
end
end
end

------------- snip ------------------

<%= error_messages_for ‘login’ %>

Enter your email, your old and new password <% form_tag :action => 'change_password' do %>

Email
<%= text_field_tag :email %>

Old Password
<%= password_field_tag :crypt_old %>

New Password
<%= password_field_tag :crypt_new %>

<%= submit_tag “Login” %>
<% end %>

Hi–

See my comments interleaved and at the end.

On Mar 18, 2008, at 1:10 PM, ReK2 wrote:

I also cant seem to see anything on the development.log :frowning: how can I
see what is going on between the form and rails? with no eyes I cant
troubleshoot.

Use the logger to see what’s going on.

----------------snip-----------------
def change_password
old_password = params[:crypt_old].crypt(params[:crypt_old])
# See if the value is what we expect
logger.debug “old password:\n” + old_password.inspect

   new_password = params[:crypt_new].crypt(params[:crypt_new])
      # See if the new password is what we think we should see
      logger.debug "new password:\n" + new_password.inspect

end
<% form_tag :action => ‘change_password’ do %>

New Password
<%= password_field_tag :crypt_new %>

<%= submit_tag “Login” %>
<% end %>

I would expect params[:crypt_new] and params[:crypt_old] to contain
simple strings. That suggests that your code that references
params[:crypt_new].params[:crypt_new] may not be working as you expect.

The reason I used the “inspect” method in the logger.debug call is in
case the object has more information to reveal than a typical to_s
would reveal.

Hope this gets you going.

On Mar 18, 2008, at 1:50 PM, ReK2 wrote:

OK, you started your server with something like script/server, right?
Open another window, cd to the directory of your rails application and
(assuming you are running *nix) just type:

tail -f log/development.log

And all the logging messages will scroll by as you hit your site with
a Web browser.

Im confused, were do I have a params[].params[]?
I do have a .crypt(salt)
at
params[:crypt_new].crypt(params[:crypt_new])

The code is what you posted. I don’t know what it’s supposed to do.
Look over what’s happening with debug logs and see where that leads you.

Hope this helps.

OK, you started your server with something like script/server, right?
Open another window, cd to the directory of your rails application and
(assuming you are running *nix) just type:

tail -f log/development.log

And all the logging messages will scroll by as you hit your site with
a Web browser.

Hi, I am running it under apache, hmmm maybe is showing on the apache
logs?
let me check

Chris F.

Hi, I added this lines, thanks for the tips. hmm but after I run it I
still don’t see anything on the log…
I can only see in the log when I use the console manually
./script/console and do queries that way to test my code.
but from the controller nothing at all :frowning:

params[:crypt_new].params[:crypt_new]

Im confused, were do I have a params[].params[]?
I do have a .crypt(salt)
at
params[:crypt_new].crypt(params[:crypt_new])

basically is using its own password as salt. this is how I have it on
login/create etc and seems to work.

Thanks so much

–then–

cd /path/to/your/app
mongrel_rails mongrel::start

Hi, hey thanks, yes I was even thinking in running ngix. the thing is
that we dont want to run 2 different webservers on this server, we need
apache to run most of our php sites,( am a php developer getting into
the ruby world now hehe) BTWthe Apache logs dint give me the results of
those two lines I added… :frowning:
I really wish I could debug this… is probably something very simple to
fix.
am I doing correct the sentence to update the objet on the db? my manual
debug always ends up there.

Thanks

ohh forgot to add Im running it under cgi.

rek2
escribi

On Mar 18, 2008, at 3:30 PM, ReK2 wrote:

a Web browser.

Hi, I am running it under apache, hmmm maybe is showing on the
apache logs?
let me check

Chris F.

You’re running directly under Apache? As in mod_ruby? Or CGI? I would
suggest switching to mongrel right away. It will speed up your
development process immensely and you’ll find it hosts Rails more
neatly than does Apache’s mod_ruby and it’s orders of magnitude faster
than CGI.

All you have to do is:

gem install mongrel

–then–

cd /path/to/your/app
mongrel_rails mongrel::start

On Mar 18, 2008, at 12:47 PM, rek2 wrote:

All you have to do is:
that we dont want to run 2 different webservers on this server, we

Thanks

Run it under mongrel on your development machine. When you get it
working, deploy it to your server under mongrel and proxy from apache
using something like this:

<VirtualHost *:80>
ServerName www.yourapplication.com
DocumentRoot /var/www/rails/yourapplication/current/public
ProxyRequests off
ProxyPass / http://localhost:8021/
ProxyPassReverse / http://localhost: 8021
ProxyPreserveHost on

Your mongrel would be started on your production server using
something like:

mongrel_rails mongrel::start -e production -p 8021 -d

And that creates a mongrel listening on port 8021, which you’ve told
Apache to proxy requests to. Presto an Apache/mongrel solution. When
you get more traffic, look into using mod_proxy_balancer, but it
sounds like right now you don’t have this working on your development
system, correct?

ProxyPreserveHost on

sounds like right now you don’t have this working on your development
system, correct?

Hi, thanks for the tip, well first the good news… I good my app to
work!!
what I did is start the webserver that comes with rails, this do was
login fine…
so I saw the issue right away… the problem was that I have another
model that I use
for the editing of the user settings and there I told encrypt to encrypt
that part … now I thought
that this model and this other controller will be different … so
basically I was encrypting two times the password
this is why after I changed the password I coulnt log in with the new or
neither old password … :slight_smile:
login always saves my live no matter what I do.
About production/development…
this is another part I don’t understand…
I am doing my development on the production server ;-)(me runs to
hide./…) hehe this is on a subdirectory on his own subdomain(using
apache with vhosts)
so under ruby on rails I have everything as development on the settings
since I was following tutorials to set it up…
my question how do I move it to development? for DB what I did is I did
a mysql dump of the real data and dumped into a development DB on the
same server… and this is the one I am using with rails… I will have to
point rails to the real live DB.(that is indentical)
so how do I do this? I have not found anything similar to my case.

Thanks again!

On Mar 19, 2008, at 10:05 AM, rek2 wrote:

how do I move it to development? for DB what I did is I did
a mysql dump of the real data and dumped into a development DB on
the
same server… and this is the one I am using with rails… I will
have to
point rails to the real live DB.(that is indentical)
so how do I do this?

Same way you would do it if you were writing PHP. Use mysqldump, gzip
it, and copy it to your local machine. Unzip it and load it into you
newly created local mysql database and point your local database.yml
at it.

Same way you would do it if you were writing PHP. Use mysqldump, gzip
it, and copy it to your local machine. Unzip it and load it into you
newly created local mysql database and point your local database.yml
at it.

Hi, but is the same mysql server, only different database… I don’t need
to dump anything I alredy did that to create a copy…
so then should I just pointed to the live one?
so basically
server: same server
db name: changethis to the right one.?

my confusiong comes because Rails have 3 entries on the DB,
development
testing
production

how do I tell rails to use production? as it is now… I have the same
settings on all 3… but I am using production since there is no testing
or production db by that name.

Thanks again.

On Mar 19, 2008, at 12:02 PM, ReK2 wrote:

my confusiong comes because Rails have 3 entries on the DB,
development
testing
production

how do I tell rails to use production? as it is now… I have the same
settings on all 3… but I am using production since there is no
testing
or production db by that name.

If you really want to develop on a production box (a bad idea in
general), then copy the database, change the entry for development to
point to the copy of the database and party on it. I would strongly
encourage you to put entries for test and production that don’t point
to live data – at least until you’ve completely tested your app.

If you really want to develop on a production box (a bad idea in
general),

I know I know…

then copy the database, change the entry for development to
point to the copy of the database and party on it.

hmm if I have to change the development entry to point to the live one…
then
why is there a production entry? I was hoping so I can keep the
development DB put my life one
under production and somehow migrate to production every time I do a
change on development…

anyway to do this? that way I can still test if I have to add new tables
to one and if it works move to production.

I found something similar to what I want… but that does not mean that
my code is pointing to production…

  unning migrations for production and test databases

If you would like to specify what rails environment to use for the
migration, use the RAILS_ENV shell variable.

For example:

|
$ export RAILS_ENV=production
$ rake db:migrate
|

|
$ export RAILS_ENV=test
$ rake db:migrate
|

|
$ export RAILS_ENV=development
$ rake db:migrate
|

something like this will be perfect if I can tell rails… ok point to
dev or point to production…

ReK2
escribi

DATABASES. Sorry for yelling, but the first thing the test task does
is initialize the database so you lose whatever was there before –
not what you want in dev or production.

Finally, there is production and that’s the one where your very
important data is stored. I simply don’t fill in any values for
production until I’m close to running an app in production mode. If
there’s a chance to make a mistake, I want to avoid that and the cost
of recreating production data is too high to mess with.

Yes, and that is how I have it…
my application as of now is running 100% as I want it to… this is why I
started to think on production…
I was using all this time development environment… now I added to the
production muy production db…
and I will like to know how to switch from one to the other… etc…
and yes I did order the book is on his way it will take 2 days more :frowning:

Thanks.

On Mar 19, 2008, at 1:16 PM, ReK2 wrote:

I found something similar to what I want… but that does not mean that
my code is pointing to production…

 unning migrations for production and test databases

If you would like to specify what rails environment to use for the
migration, use the RAILS_ENV shell variable.

For example:

I think you may be misunderstanding how database.yml is supposed to
work. You have any number of configurations, each corresponding to how
you’ve set RAILS_ENV. Normally, these are development, test, and
production.

Development points to a database you plan to use to test things out
without affecting the live production environment. Test points to a
database that your tests will use. This is important because you
should be testing your code and those tests will run against a test
database. I cannot overemphasize: DO NOT LET TEST POINT AT YOUR OTHER
DATABASES. Sorry for yelling, but the first thing the test task does
is initialize the database so you lose whatever was there before –
not what you want in dev or production.

Finally, there is production and that’s the one where your very
important data is stored. I simply don’t fill in any values for
production until I’m close to running an app in production mode. If
there’s a chance to make a mistake, I want to avoid that and the cost
of recreating production data is too high to mess with.

You might do well to pick up Agile Web D. With Ruby on Rails
by Thomas, et. al.