tasks icon indicating copy to clipboard operation
tasks copied to clipboard

Password not found

Open selwynorren opened this issue 4 years ago • 10 comments

What Happened

I have Caldav successfully setup in the online account plug, so when launching tasks I try to add a new task in my Caldav account, however I get the following pop up message that creating a new task failed and the details how Password not found Screenshot from 2021-07-29 11-01-29

The terminal output there shows ** (io.elementary.tasks:2): CRITICAL **: 10:56:48.089: MainWindow.vala:281: Password not found

Expected Behavior

Create a task using my caldav account as that is linked to Google

Steps to Reproduce

Add a caldav account to the online accounts setting launch tasks and try add a task using the Caldav account

Logs

As already provided

Platform Information

elementary OS 6 Early Access Built on Ubuntu 20.04.1 LTS Linux 5.8.0-63-generic

selwynorren avatar Jul 29 '21 09:07 selwynorren

I am now running Elementary OS 6 Stable and I am still having this same issue. I have a feeling I am not loading the caldav detail correct for this

I am using: https://www.google.com/calendar/dav/myusername/events

Is thsi correct, or should I be using something else to connect to my Google Workspace account?

selwynorren avatar Aug 11 '21 21:08 selwynorren

@danrabbit AFAIK you are using Tasks with the Google backend - maybe you can help out?

marbetschar avatar Aug 12 '21 09:08 marbetschar

Maybe the same issue that we have with Flatpaked mail? i tested the non-sandboxed version and it fails with:

MainWindow.vala:259: Unable to resolve the WebDAV uri from backend.

what i believe is expected since GTasks is not a webDAV, so the Google calDAV uri isn't supposed to work here.

Marukesu avatar Aug 12 '21 16:08 Marukesu

I get the same Password not found error with Nextcloud calDAV - when attempting to delete a task list, or change a task list color. Adding a new task works as expected.

I don't know if this is useful information, but the same calDAV setup in elementary Calendar allows me to change calendar colors and add/edit events with no problem, but clicking the delete button on calendars doesn't do anything.

cameralibre avatar Aug 12 '21 23:08 cameralibre

I setup my google in the online accounts settings and also faced this issue.

dcharles525 avatar Aug 13 '21 01:08 dcharles525

https://github.com/elementary/tasks/issues/269 seems to be related.

marbetschar avatar Aug 22 '21 11:08 marbetschar

@Marukesu I think you are right and we are dealing with a Flatpak issue here. Does the following reasoning make sense to you?

Some operations do work in Flatpak, because they are ultimately passed to the system EDS for synchronization (e.g. adding a task). However, there are a few operations which are backend specific and are not officially supported by EDS. Those operations fail, because they try to retrieve the backend credentials from within the Flatpak sandbox - which fails for the same reason as we encountered in Mail.

The operations not working within Flatpak are: Adding a task list, Removing a task list, Change a task list's name, Changing a task list's color. Of course this only applies for synchronized accounts - not the local one.

marbetschar avatar Aug 22 '21 11:08 marbetschar

so after this last post I uninstalled the flatpak version of tasks and opted to build from source.

Now when I try and add a tasks to my Google Account I get the following error: Unable to resolve the WebDAV uri from backend.

In the terminal I get this error ** (io.elementary.tasks:10854): CRITICAL **: 21:07:43.863: MainWindow.vala:285: Unable to resolve the WebDAV uri from backend.

I also noticed that when compiling from source the app icon is missing.

selwynorren avatar Aug 22 '21 19:08 selwynorren

Those operations fail, because they try to retrieve the backend credentials from within the Flatpak sandbox

Something i tried locally is providing a fallback to lookup_password_sync that get the password from the system and save them on the sandbox. It's bassically e_source_credentials_provider_impl_password_lookup_sync function, divided into two parts:

     // on the host, in a daemon connected to DBus
    public string lookup_credentials (string uid) throws Error {
        string? password;
        E.secret_store_lookup_sync (uid, out password, null);
        if (password == null) {
            throw new IOError.NOT_FOUND ("Password not found");
        }

       return password;
    }

    // inside the sandbox
    public E.NamedParameters? get_credentials_from_host (E.Source source) throws Error {
        var password = dbus_interface.lookup_credentials (source.uid);
        var parameters = new E.NamedParameters ();
        parameters.set (E.SOURCE_CREDENTIAL_PASSWORD, password);
        return parameters;
    }

So when we try to get the credential, we can do this:

E.NamedParameters credentials;
try {
    credential_provider.lookup_password_sync (source, null, out credentials);
} catch (Error e) {
    if (e is Error.NOT_FOUND && is_sandboxed ()) {
        credentials = get_credentials_from_host (source);
        credential_provider.store_sync (source, credentials, true);  // so we only escape the sandbox only one time
    } else {
        throw e;
    }
}

Now when I try and add a tasks to my Google Account I get the following error: Unable to resolve the WebDAV uri from backend.

@selwynorren as i said on my first comment, i believe that's expected because Google CalDAV API don't support tasks, right now, the only way to add a Google account to tasks is using evolution from apt.

Marukesu avatar Aug 23 '21 01:08 Marukesu

@selwynorren as i said on my first comment, i believe that's expected because Google CalDAV API don't support tasks, right now, the only way to add a Google account to tasks is using evolution from apt.

Thanks, I never made the connection of what you were saying in your first comment. Such a pity, I have high hopes for Tasks and cant wait to see the Google Tasks API integrated (I see it is available) Not that I used Google Tasks all that often, however I do need a way to sync my task list between my various systems and my entire company is Google Workspace enabled, so it would have been nice.

I will try the evolution system and see how that works for me, I seem to recall not much success when I was using the daily builds.

Thanks everyone for their hard work

selwynorren avatar Aug 23 '21 07:08 selwynorren