create user model with validations, secure passwords, and authentication