Add Auth class and refactor User model