Socialify

Folder ..

Viewing accountFunctions.py
41 lines (34 loc) • 1.3 KB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import secrets
import uuid

from django.utils import timezone

from users.models import TokenStore, UserProfile


def generate_token():
    uid = uuid.uuid4().hex
    token = secrets.token_urlsafe(32)
    print(uid, token)
    return uid, token

def store_token(token_type, user, email=None):
    previous_tokens = TokenStore.objects.filter(user=user, token_type=token_type)
    if previous_tokens.exists():
        previous_tokens.delete()
    uid, token = generate_token()
    token_store = TokenStore.objects.create(
        user=user,
        email=email if email is not None else user.email,
        uid=uid,
        token=token,
        token_type=token_type,
        expires=timezone.now() + timezone.timedelta(minutes=30),
    )
    token_store.save()
    return uid, token

def verify_token(token_type, uid, token):
    try:
        token_store = TokenStore.objects.get(token_type=token_type, uid=uid, token=token)
        if token_store.expires > timezone.now() and not token_store.verified and token_store.token_type == token_type and token_store.uid == uid and token_store.token == token:
            token_store.verified = True
            UserProfile.objects.filter(user=token_store.user).update(email_verified=True)
            token_store.save()

        return token_store
    except TokenStore.DoesNotExist:
        return None