Add validations and authentication to user model