def create_user(cls, email, first_name, last_name, password, groups=[]): """ Responsible for validating new user input. Hashes password and raises UserExists error if is duplicate. Creates and saves a new user. """ # let validation error bubble up for right now validate_email(email) # check if user exists based on email try: cls.objects.get(email=email) # how should User be referred to ? cls or User? raise UserExists except User.DoesNotExist: pass # hash bpassword encrypted_password = encrypt_password(password) now_datetime = datetime.now() new_user = cls( email = email, first_name = first_name, last_name = last_name, password = encrypted_password, datetime_joined = now_datetime, last_login = now_datetime, is_active = True ) if groups: new_user.groups = groups new_user.save() return new_user
def authenticate(cls, email, password): """ Check to see if a user's credentials are correct. @param email string @param password string @return User object or None """ encrypted_password = encrypt_password(password) try: user = cls.objects.get(email=email, password=encrypted_password, is_active=True) return user except cls.DoesNotExist: return None