elementary / tasks

Synced tasks and reminders on elementary OS
https://elementary.io
GNU General Public License v3.0
84 stars 22 forks source link

Password not found #263

Open selwynorren opened 3 years ago

selwynorren commented 3 years ago

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 commented 3 years ago

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?

marbetschar commented 3 years ago

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

Marukesu commented 3 years ago

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.

cameralibre commented 3 years ago

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.

dcharles525 commented 3 years ago

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

marbetschar commented 3 years ago

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

marbetschar commented 3 years ago

@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.

selwynorren commented 3 years ago

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.

Marukesu commented 3 years ago

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.

selwynorren commented 3 years ago

@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