|
1 | 1 | import graphene
|
2 | 2 | from django.contrib.auth import authenticate
|
| 3 | +from django.contrib.auth.models import Permission |
3 | 4 |
|
4 | 5 | from django.conf import settings
|
5 | 6 |
|
| 7 | +from nxtbn.users.admin_types import PermissionType |
6 | 8 | from nxtbn.users.api.storefront.serializers import JwtBasicUserSerializer
|
| 9 | +from nxtbn.users.models import User |
7 | 10 | from nxtbn.users.utils.jwt_utils import JWTManager
|
8 | 11 |
|
9 | 12 | class AdminTokenType(graphene.ObjectType):
|
@@ -105,9 +108,38 @@ def mutate(self, info, refresh_token):
|
105 | 108 | return AdminTokenRefreshMutation(refresh=response)
|
106 | 109 | else:
|
107 | 110 | raise Exception("Invalid or expired refresh token")
|
| 111 | + |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | +class AttachPermissionMutation(graphene.Mutation): |
| 116 | + class Arguments: |
| 117 | + user_id = graphene.Int(required=True) |
| 118 | + permission_codename = graphene.String(required=True) |
| 119 | + |
| 120 | + success = graphene.Boolean() |
| 121 | + message = graphene.String() |
| 122 | + |
| 123 | + def mutate(self, info, user_id, permission_codename): |
| 124 | + try: |
| 125 | + user = User.objects.get(id=user_id) |
| 126 | + except User.DoesNotExist: |
| 127 | + return AttachPermissionMutation(success=False, message="User not found") |
| 128 | + |
| 129 | + try: |
| 130 | + permission = Permission.objects.get(codename=permission_codename) |
| 131 | + except Permission.DoesNotExist: |
| 132 | + return AttachPermissionMutation(success=False, message="Permission not found") |
| 133 | + |
| 134 | + # Add the permission to the user |
| 135 | + user.user_permissions.add(permission) |
| 136 | + |
| 137 | + return AttachPermissionMutation(success=True, message="Permission assigned successfully") |
| 138 | + |
108 | 139 |
|
109 | 140 | class AdminUserMutation(graphene.ObjectType):
|
110 | 141 | login = AdminLoginMutation.Field()
|
111 | 142 | refresh_token = AdminTokenRefreshMutation.Field()
|
| 143 | + attach_permission = AttachPermissionMutation.Field() |
112 | 144 |
|
113 | 145 |
|
0 commit comments