@@ -112,7 +112,7 @@ def mutate(self, info, refresh_token):
112
112
113
113
114
114
115
- class AttachPermissionMutation (graphene .Mutation ):
115
+ class TogglePermissionMutation (graphene .Mutation ):
116
116
class Arguments :
117
117
user_id = graphene .Int (required = True )
118
118
permission_codename = graphene .String (required = True )
@@ -124,22 +124,26 @@ def mutate(self, info, user_id, permission_codename):
124
124
try :
125
125
user = User .objects .get (id = user_id )
126
126
except User .DoesNotExist :
127
- return AttachPermissionMutation (success = False , message = "User not found" )
127
+ return TogglePermissionMutation (success = False , message = "User not found" )
128
128
129
129
try :
130
130
permission = Permission .objects .get (codename = permission_codename )
131
131
except Permission .DoesNotExist :
132
- return AttachPermissionMutation (success = False , message = "Permission not found" )
132
+ return TogglePermissionMutation (success = False , message = "Permission not found" )
133
133
134
- # Add the permission to the user
135
- user .user_permissions .add (permission )
134
+ if user .user_permissions .filter (id = permission .id ).exists ():
135
+ # If the permission is already assigned, remove it
136
+ user .user_permissions .remove (permission )
137
+ return TogglePermissionMutation (success = True , message = "Permission removed successfully" )
138
+ else :
139
+ # Otherwise, add the permission
140
+ user .user_permissions .add (permission )
141
+ return TogglePermissionMutation (success = True , message = "Permission assigned successfully" )
136
142
137
- return AttachPermissionMutation (success = True , message = "Permission assigned successfully" )
138
-
139
143
140
144
class AdminUserMutation (graphene .ObjectType ):
141
145
login = AdminLoginMutation .Field ()
142
146
refresh_token = AdminTokenRefreshMutation .Field ()
143
- attach_permission = AttachPermissionMutation .Field ()
147
+ toggle_permission = TogglePermissionMutation .Field ()
144
148
145
149
0 commit comments