from django.contrib.auth.tokens import PasswordResetTokenGenerator import six import hmac, hashlib, base64, json, time class AccountActivationTokenGenerator(PasswordResetTokenGenerator): def _make_hash_value(self, user, timestamp): return ( six.text_type(user.pk) + six.text_type(timestamp) + six.text_type(user.is_active) ) # Function to create a custom token for user authentication def create_token(user_id, username=None, secret_key="your-very-secret-key-here-change-this!"): expires = int(time.time()) + (24 * 3600) # 24 hours payload = json.dumps({"user_id": user_id, "username": username, "expires": expires}) encoded_payload = base64.b64encode(payload.encode()).decode() signature = base64.b64encode( hmac.new(secret_key.encode(), encoded_payload.encode(), hashlib.sha256).digest() ).decode() return f"{encoded_payload}.{signature}" account_activation_token = AccountActivationTokenGenerator()