Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/remove rest chats auth #698

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 1 addition & 31 deletions connect/api/v1/project/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from connect.celery import app as celery_app
from connect.common import tasks
from connect.common.models import (
ChatsRole,
ProjectAuthorization,
RocketAuthorization,
Service,
Expand All @@ -32,7 +31,6 @@
OpenedProject,
ProjectRole,
TemplateProject,
RequestChatsPermission,
ChatsAuthorization,
)

Expand Down Expand Up @@ -218,22 +216,15 @@ def get_pending_authorizations(self, obj):
}
for i in obj.requestpermissionproject_set.all():
rocket_authorization = RequestRocketPermission.objects.filter(email=i.email)
chats_authorization = RequestChatsPermission.objects.filter(email=i.email)
chats_role = None
if(len(rocket_authorization) > 0):
# TODO: Remove rocket
rocket_authorization = rocket_authorization.first()
chats_role = rocket_authorization.role

if len(chats_authorization) > 0:
chats_authorization = chats_authorization.first()
chats_role = chats_authorization.role

response["users"].append(
dict(
email=i.email,
project_role=i.role,
created_by=i.created_by.email,
chats_role=chats_role
)
)
return response
Expand Down Expand Up @@ -381,27 +372,6 @@ def validate(self, attrs):
return attrs


class RequestChatsPermissionSerializer(serializers.ModelSerializer):
class Meta:
model = RequestChatsPermission
fields = ["email", "project", "role", "created_by"]

email = serializers.EmailField(max_length=254, required=True)
project = serializers.PrimaryKeyRelatedField(
queryset=Project.objects,
style={"show": False},
required=True,
)
created_by = serializers.HiddenField(
default=serializers.CurrentUserDefault(), style={"show": False}
)

def validate(self, attrs):
if attrs.get("role") == ChatsRole.NOT_SETTED.value:
raise PermissionDenied(_("You cannot set user role 0"))
return attrs


class ReleaseChannelSerializer(serializers.Serializer):
channel_uuid = serializers.CharField(required=True)
user = serializers.CharField(required=True)
Expand Down
10 changes: 0 additions & 10 deletions connect/api/v1/project/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
ChatsAuthorization,
OrganizationAuthorization,
Project,
RequestChatsPermission,
RequestPermissionProject,
RequestRocketPermission,
ProjectAuthorization,
Expand Down Expand Up @@ -461,9 +460,7 @@ def create(request, *args, **kwargs):
project_auth = project.project_authorizations.filter(user__email=email)

request_rocket_authorization = RequestRocketPermission.objects.filter(email=email, project=project)
request_chats_authorization = RequestChatsPermission.objects.filter(email=email, project=project)
rocket_authorization = None
chats_authorization = None

user_name = ''
first_name = ''
Expand All @@ -480,7 +477,6 @@ def create(request, *args, **kwargs):
elif project_auth.exists():
project_auth = project_auth.first()
rocket_authorization = project_auth.rocket_authorization
chats_authorization = project_auth.chats_authorization
user_name = project_auth.user.username
first_name = project_auth.user.first_name
last_name = project_auth.user.last_name
Expand All @@ -506,12 +502,6 @@ def create(request, *args, **kwargs):
else:
if chats_role and len([item for item in ChatsAuthorization.ROLE_CHOICES if item[0] == chats_role]) == 0:
return Response({"status": 422, "message": f"{chats_role} is not a valid chats role!"})
if request_chats_authorization.exists():
request_chats_authorization = request_chats_authorization.first()
request_chats_authorization.role = chats_role
request_chats_authorization.save()
elif chats_authorization or chats_role:
RequestChatsPermission.objects.create(email=email, role=chats_role, project=project, created_by=created_by)

return Response({
"status": 200,
Expand Down
6 changes: 0 additions & 6 deletions connect/api/v2/projects/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
OpenedProject,
ProjectRole,
TemplateProject,
RequestChatsPermission,
)
from connect.internals.event_driven.producer.rabbitmq_publisher import RabbitmqPublisher
from connect.template_projects.models import TemplateType
Expand Down Expand Up @@ -324,16 +323,11 @@ def get_pending_authorizations(self, obj): # pragma: no cover
}
for i in obj.requestpermissionproject_set.all():
rocket_authorization = RequestRocketPermission.objects.filter(email=i.email)
chats_authorization = RequestChatsPermission.objects.filter(email=i.email)
chats_role = None
if(len(rocket_authorization) > 0):
rocket_authorization = rocket_authorization.first()
chats_role = rocket_authorization.role

if len(chats_authorization) > 0:
chats_authorization = chats_authorization.first()
chats_role = chats_authorization.role

response["users"].append(
dict(
email=i.email,
Expand Down
21 changes: 21 additions & 0 deletions connect/common/migrations/0081_auto_20230828_1348.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 3.2.20 on 2023-08-28 13:48

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('common', '0080_auto_20230824_1906'),
]

operations = [
migrations.AlterField(
model_name='recentactivity',
name='action',
field=models.CharField(choices=[('UPDATE', 'Entity updated'), ('TRAIN', 'Entity Trained'), ('ADD', 'Add'), ('INTEGRATE', 'Entity integrated'), ('CREATE', 'Entity Created')], max_length=15),
),
migrations.DeleteModel(
name='RequestChatsPermission',
),
]
11 changes: 0 additions & 11 deletions connect/common/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1195,17 +1195,6 @@ class RequestRocketPermission(models.Model):
created_by = models.ForeignKey(User, models.CASCADE)


class RequestChatsPermission(models.Model):
email = models.EmailField(_("email"))
role = models.PositiveIntegerField(
_("role"),
choices=ChatsAuthorization.ROLE_CHOICES,
default=ChatsRole.NOT_SETTED.value,
)
project = models.ForeignKey(Project, models.CASCADE)
created_by = models.ForeignKey(User, models.CASCADE)


class Service(models.Model):
class Meta:
verbose_name = _("service")
Expand Down
64 changes: 1 addition & 63 deletions connect/common/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

from connect.authentication.models import User
from connect.common.models import (
ChatsRole,
Project,
Service,
Organization,
Expand All @@ -21,7 +20,6 @@
ProjectRoleLevel,
RocketAuthorization,
RequestRocketPermission,
RequestChatsPermission,
OpenedProject,
RecentActivity
)
Expand Down Expand Up @@ -86,13 +84,7 @@ def create_service_status(sender, instance, created, **kwargs):
project_auth = instance.get_user_authorization(authorization.user)
project_auth.role = authorization.role
project_auth.save()
if not settings.TESTING and project_auth.is_moderator:
RequestChatsPermission.objects.create(
email=project_auth.user.email,
role=ChatsRole.ADMIN.value,
project=project_auth.project,
created_by=project_auth.user
)

elif update_fields and "flow_organization" in update_fields:
for permission in instance.project_authorizations.all():
update_user_permission_project(
Expand Down Expand Up @@ -246,36 +238,13 @@ def request_permission_project(sender, instance, created, **kwargs):
auth_user = auth_user.first()
auth_user.role = instance.role
auth_user.save(update_fields=["role"])

if not settings.TESTING and auth_user.is_moderator:
RequestChatsPermission.objects.create(
email=instance.email,
role=ChatsRole.ADMIN.value,
project=instance.project,
created_by=instance.created_by
)
instance.delete()
instance.project.send_email_invite_project(email=instance.email)


@receiver(post_save, sender=ProjectAuthorization)
def project_authorization(sender, instance, created, **kwargs):
if created:
if instance.is_moderator:
RequestChatsPermission.objects.create(
email=instance.user.email,
role=ChatsRole.ADMIN.value,
project=instance.project,
created_by=instance.user
)
else:
RequestChatsPermission.objects.create(
email=instance.user.email,
role=ChatsRole.AGENT.value,
project=instance.project,
created_by=instance.user
)

RecentActivity.objects.create(
action="ADD",
entity="USER",
Expand Down Expand Up @@ -332,37 +301,6 @@ def request_rocket_permission(sender, instance, created, **kwargs):
instance.delete()


@receiver(post_save, sender=RequestChatsPermission)
def request_chats_permission(sender, instance, created, **kwargs):
if created:
user = User.objects.filter(email=instance.email)
if user.exists():
user = user.first()
project_auth = instance.project.project_authorizations.filter(user=user)
chats_instance = ChatsRESTClient()
if project_auth.exists():
project_auth = project_auth.first()
chats_role = ChatsRole.ADMIN.value if project_auth.is_moderator else ChatsRole.AGENT.value
if not project_auth.chats_authorization:
if not settings.TESTING:
chats_instance.update_user_permission(
project_uuid=str(instance.project.uuid),
user_email=user.email,
permission=chats_role
)
else:
# project_auth.chats_authorization.role = chats_role
# project_auth.chats_authorization.save(update_fields=["role"])
if not settings.TESTING:
chats_instance.update_user_permission(
permission=chats_role,
user_email=user.email,
project_uuid=str(instance.project.uuid)
)
# project_auth.save(update_fields=["chats_authorization"])
instance.delete()


@receiver(post_save, sender=Project)
def send_email_create_project(sender, instance, created, **kwargs):
if created:
Expand Down
Loading