Make a better User model, including secure password authentication