def clean(self): """Test that the first code is correct""" data = super(GridCardActivationForm, self).clean() key = data.get("key") first_code = data.get("first_code") if not (key and first_code): return data seed = util.key_to_seed(key) if first_code != util.get_hotp(seed, 0): self._errors["first_code"] = self.error_class(["Invalid first code"]) del data["first_code"] return data
def save(self): try: token = UserAuthToken.objects.get(user=self.user) except UserAuthToken.DoesNotExist: token = UserAuthToken(user=self.user) base36_with_checksum = self.cleaned_data["key"] seed = util.key_to_seed(base36_with_checksum) token.type = UserAuthToken.TYPE_HOTP token.reset_seed(seed) # Start at the second code token.counter = 1 token.save()
def clean(self): """Test that the first code is correct""" data = super(GridCardActivationForm, self).clean() key = data.get("key") first_code = data.get("first_code") if not (key and first_code): return data seed = util.key_to_seed(key) if first_code != util.get_hotp(seed, 0): self._errors["first_code"] = self.error_class( ["Invalid first code"]) del data["first_code"] return data