Exemplo n.º 1
0
    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)
            }
        }