def validate(self, attrs): authenticate_kwargs = { self.username_field: attrs[self.username_field], 'password': attrs['password'] } try: authenticate_kwargs['request'] = self.context['request'] except KeyError: pass user = CustomUser.authenticate(**authenticate_kwargs) if user is None or not user.is_active: raise exceptions.AuthenticationFailed( self.error_messages['no_active_account'], 'no_active_account', ) else: user_dict = dict() for attr in ATTRS: user_dict[attr] = user.__getattribute__(attr) user_dict['of_node'] = CustomUser.determine_permissions( authenticate_kwargs['email'], user) refresh = self.get_token(user) return { 'user': user_dict, 'tokens': { 'refresh': str(refresh), 'access': str(refresh.access_token) } }