24 lines
983 B
Python
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()
|