MCPcopy
hub / github.com/prowler-cloud/prowler / create

Method create

api/src/backend/api/v1/views.py:1025–1085  ·  view source on GitHub ↗
(self, request, *args, **kwargs)

Source from the content-addressed store, hash-verified

1023 ]
1024 )
1025 def create(self, request, *args, **kwargs):
1026 invitation_token = request.query_params.get("invitation_token", None)
1027 invitation = None
1028
1029 serializer = self.get_serializer(
1030 data=request.data, context=self.get_serializer_context()
1031 )
1032 serializer.is_valid(raise_exception=True)
1033
1034 if invitation_token:
1035 invitation = validate_invitation(
1036 invitation_token, serializer.validated_data["email"]
1037 )
1038
1039 # Proceed with creating the user and membership
1040 user = User.objects.db_manager(MainRouter.admin_db).create_user(
1041 **serializer.validated_data
1042 )
1043 tenant = (
1044 invitation.tenant
1045 if invitation_token
1046 else Tenant.objects.using(MainRouter.admin_db).create(
1047 name=f"{user.email.split('@')[0]} default tenant"
1048 )
1049 )
1050 role = (
1051 Membership.RoleChoices.MEMBER
1052 if invitation_token
1053 else Membership.RoleChoices.OWNER
1054 )
1055 Membership.objects.using(MainRouter.admin_db).create(
1056 user=user, tenant=tenant, role=role
1057 )
1058 if invitation:
1059 user_role = []
1060 for role in invitation.roles.all():
1061 user_role.append(
1062 UserRoleRelationship.objects.using(MainRouter.admin_db).create(
1063 user=user, role=role, tenant=invitation.tenant
1064 )
1065 )
1066 invitation.state = Invitation.State.ACCEPTED
1067 invitation.save(using=MainRouter.admin_db)
1068 else:
1069 role = Role.objects.using(MainRouter.admin_db).create(
1070 name="admin",
1071 tenant_id=tenant.id,
1072 manage_users=True,
1073 manage_account=True,
1074 manage_billing=True,
1075 manage_providers=True,
1076 manage_integrations=True,
1077 manage_scans=True,
1078 unlimited_visibility=True,
1079 )
1080 UserRoleRelationship.objects.using(MainRouter.admin_db).create(
1081 user=user,
1082 role=role,

Callers 15

create_test_user_rbacFunction · 0.45
tenants_fixtureFunction · 0.45
invitations_fixtureFunction · 0.45
providers_fixtureFunction · 0.45
processor_fixtureFunction · 0.45
provider_groups_fixtureFunction · 0.45
roles_fixtureFunction · 0.45

Calls 8

validate_invitationFunction · 0.90
UserSerializerClass · 0.90
get_serializerMethod · 0.80
create_userMethod · 0.80
allMethod · 0.80
getMethod · 0.65
saveMethod · 0.45

Tested by 15

create_test_user_rbacFunction · 0.36
tenants_fixtureFunction · 0.36
invitations_fixtureFunction · 0.36
providers_fixtureFunction · 0.36
processor_fixtureFunction · 0.36
provider_groups_fixtureFunction · 0.36
roles_fixtureFunction · 0.36