forked from github/plane
feat: jitsu events for sign in and sign up (#423)
* feat: jitsu events for sign in and sign up * dev: update event data
This commit is contained in:
parent
88754e6fc0
commit
836dc4027b
@ -3,6 +3,7 @@ import uuid
|
|||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
import json
|
import json
|
||||||
|
import requests
|
||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
@ -85,6 +86,28 @@ class SignInEndpoint(BaseAPIView):
|
|||||||
"user": serialized_user,
|
"user": serialized_user,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Send event to Jitsu for tracking
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": "email",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get("HTTP_USER_AGENT"),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_UP",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
return Response(data, status=status.HTTP_200_OK)
|
return Response(data, status=status.HTTP_200_OK)
|
||||||
# Sign in Process
|
# Sign in Process
|
||||||
else:
|
else:
|
||||||
@ -114,7 +137,27 @@ class SignInEndpoint(BaseAPIView):
|
|||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
access_token, refresh_token = get_tokens_for_user(user)
|
access_token, refresh_token = get_tokens_for_user(user)
|
||||||
|
# Send event to Jitsu for tracking
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": "email",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get("HTTP_USER_AGENT"),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_IN",
|
||||||
|
},
|
||||||
|
)
|
||||||
data = {
|
data = {
|
||||||
"access_token": access_token,
|
"access_token": access_token,
|
||||||
"refresh_token": refresh_token,
|
"refresh_token": refresh_token,
|
||||||
@ -268,6 +311,29 @@ class MagicSignInEndpoint(BaseAPIView):
|
|||||||
if str(token) == str(user_token):
|
if str(token) == str(user_token):
|
||||||
if User.objects.filter(email=email).exists():
|
if User.objects.filter(email=email).exists():
|
||||||
user = User.objects.get(email=email)
|
user = User.objects.get(email=email)
|
||||||
|
# Send event to Jitsu for tracking
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": "code",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get(
|
||||||
|
"HTTP_USER_AGENT"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_IN",
|
||||||
|
},
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
user = User.objects.create(
|
user = User.objects.create(
|
||||||
email=email,
|
email=email,
|
||||||
@ -275,6 +341,29 @@ class MagicSignInEndpoint(BaseAPIView):
|
|||||||
password=make_password(uuid.uuid4().hex),
|
password=make_password(uuid.uuid4().hex),
|
||||||
is_password_autoset=True,
|
is_password_autoset=True,
|
||||||
)
|
)
|
||||||
|
# Send event to Jitsu for tracking
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": "code",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get(
|
||||||
|
"HTTP_USER_AGENT"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_UP",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
user.last_active = timezone.now()
|
user.last_active = timezone.now()
|
||||||
user.last_login_time = timezone.now()
|
user.last_login_time = timezone.now()
|
||||||
|
@ -5,6 +5,7 @@ import os
|
|||||||
|
|
||||||
# Django imports
|
# Django imports
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
# Third Party modules
|
# Third Party modules
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
@ -204,7 +205,26 @@ class OauthEndpoint(BaseAPIView):
|
|||||||
"last_login_at": timezone.now(),
|
"last_login_at": timezone.now(),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": f"oauth-{medium}",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get("HTTP_USER_AGENT"),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_IN",
|
||||||
|
},
|
||||||
|
)
|
||||||
return Response(data, status=status.HTTP_200_OK)
|
return Response(data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
except User.DoesNotExist:
|
except User.DoesNotExist:
|
||||||
@ -253,6 +273,26 @@ class OauthEndpoint(BaseAPIView):
|
|||||||
"user": serialized_user,
|
"user": serialized_user,
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
}
|
}
|
||||||
|
if settings.JITSU_BASE_API:
|
||||||
|
_ = requests.post(
|
||||||
|
settings.JITSU_BASE_API,
|
||||||
|
headers={
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-Auth-Token": settings.JITSU_SECRET_KEY,
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"event_id": uuid.uuid4().hex,
|
||||||
|
"event_data": {
|
||||||
|
"medium": f"oauth-{medium}",
|
||||||
|
},
|
||||||
|
"user": {"email": email},
|
||||||
|
"device_ctx": {
|
||||||
|
"ip": request.META.get("REMOTE_ADDR"),
|
||||||
|
"user_agent": request.META.get("HTTP_USER_AGENT"),
|
||||||
|
},
|
||||||
|
"event_type": "SIGN_UP",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
SocialLoginConnection.objects.update_or_create(
|
SocialLoginConnection.objects.update_or_create(
|
||||||
medium=medium,
|
medium=medium,
|
||||||
|
@ -78,3 +78,6 @@ if DOCKERIZED:
|
|||||||
|
|
||||||
WEB_URL = os.environ.get("WEB_URL", "localhost:3000")
|
WEB_URL = os.environ.get("WEB_URL", "localhost:3000")
|
||||||
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
||||||
|
|
||||||
|
JITSU_SECRET_KEY = os.environ.get("JITSU_SECRET_KEY", False)
|
||||||
|
JITSU_BASE_API = os.environ.get("JITSU_BASE_API", False)
|
||||||
|
@ -226,3 +226,6 @@ RQ_QUEUES = {
|
|||||||
WEB_URL = os.environ.get("WEB_URL")
|
WEB_URL = os.environ.get("WEB_URL")
|
||||||
|
|
||||||
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
||||||
|
|
||||||
|
JITSU_SECRET_KEY = os.environ.get("JITSU_SECRET_KEY", False)
|
||||||
|
JITSU_BASE_API = os.environ.get("JITSU_BASE_API", False)
|
||||||
|
@ -187,3 +187,6 @@ RQ_QUEUES = {
|
|||||||
WEB_URL = os.environ.get("WEB_URL")
|
WEB_URL = os.environ.get("WEB_URL")
|
||||||
|
|
||||||
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
PROXY_BASE_URL = os.environ.get("PROXY_BASE_URL", False)
|
||||||
|
|
||||||
|
JITSU_SECRET_KEY = os.environ.get("JITSU_SECRET_KEY", False)
|
||||||
|
JITSU_BASE_API = os.environ.get("JITSU_BASE_API", False)
|
||||||
|
Loading…
Reference in New Issue
Block a user