added user model and authentication