Private
Public Access
1
0
Files
rowsandall/rowers/tokens.py

24 lines
983 B
Python

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()