Skip to content

Conversation

iamfortune
Copy link
Contributor

@iamfortune iamfortune commented Aug 12, 2025

DOC-10950

PR to update the SGW access function

Preview URL

Docs Team credentials.

Copy link
Contributor

@sarahlwelton sarahlwelton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple quick things!

@@ -32,6 +32,9 @@ This grants access to the specified channel(s) for all users assigned that role.

The effects of all access calls by all active documents are effectively combined in a union, so if _any_ document grants a user access to a channel, that user has access to the channel.

The `access()` function grants access to users or roles that do not yet exist.
When you create such users or define roles later, the previous granted access permissions apply to them.

NOTE: The sync function `access()` call does not support the wildcard ('***') for granting access to all channels.
To grant a user access to all channels, use the REST API channel grant endpoint.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have a link to documentation about this endpoint?

Copy link
Contributor Author

@iamfortune iamfortune Aug 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I didn't find one, spoke to a SGW eng (Tor), he's not sure of the links too, i found this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, not sure if that's quite right. Are we sure that an endpoint with that functionality exists? That there is a way to grant a user access to all channels in one go?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a slight semantic distinction, this isn't an endpoint so we don't have an API reference for this. This is part of a set of javascript call that Sync Gateway provides. We don't have better documentation for this function, it probably never existed, but this is an attempt to clarify the behavior for users.

The statement as written is correct.

As far as the general concepts. Channel grants via a sync function are referred to as dynamic channel grants. They do not support granting access to all channels, however the following line refers to granting all channels:

NOTE: The sync function access() call does not support the wildcard ('***') for granting access to all channels.
To grant a user access to all channels, use the REST API channel grant endpoint.

That endpoint is https://docs.couchbase.com/sync-gateway/current/rest-api/rest_api_admin.html#tag/Database-Security/operation/put_db-_user-name

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@torcolvin , to clarify, then, is it incorrect to say that a user could "grant a user access to all channels"? Do we need to word this better?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This statement is correct to grant a user access to all channels as part of the REST API channel grant endpoint. The page that this PR is addressing is not talking about that endpoint in general, but the behavior of the functions available in the sync function.

I do feel that perhaps I am not understanding the question.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants