Ah. Well that's what I thought, and that's where I get confused.

Realistically speaking, we have, say, 10.000 public repositories and
any given user may have 2 or 3 private repositories. This means that
when the user searches, he should search among all those 10.000 public
ones, but also his 2 or 3 private ones. That means we would have to
query for repo_id:1 OR repo_id:2 OR .... repo_id:10000. This is going
to get very long...


Jesper



On Wed, Mar 25, 2009 at 9:10 PM, Alejandro Gonzalez
<alejandrogonzalezd...@gmail.com> wrote:
> try using db for permission management and when u want to make a rep public
> u just have to add it's id or name to everyuser permissions field. i think
> you don't need to add any "is_public" field to index, just an id or name
> field in wich the indexed doc is.So you can pre-filter the reps quering the
> db obtaining the reps for wich user has permissions and adding this
> restrictions to the solr query. this way you can't change reps'permissions
> without re-indexing. so the query for solr if the current user is allowed
> for search in the 1 and 2 reps should be something like ...rep_id:1OR2...
>
>
> Alex
>
>
> On Wed, Mar 25, 2009 at 8:06 PM, Jesper Nøhr <jes...@noehr.org> wrote:
>
>> OK, we're getting closer. I just have two final questions regarding this
>> then:
>>
>> 1. This would also include all the public repositories, right? If so,
>> how would such a query look? Some kind of is_public:true AND ...?
>>
>> 2. When a repository is made public, the is_public property in the
>> Solr index needs to reflect this. How can such an update be made
>> without having to purge and re-index?
>>
>>
>> Jesper
>>
>>
>> On Wed, Mar 25, 2009 at 6:29 PM, Alejandro Gonzalez
>> <alejandrogonzalezd...@gmail.com> wrote:
>> > ok so u can create a table in a DB where you have a row foreach user and
>> a
>> > field with the reps he/she can access. Then you just have to take a look
>> on
>> > the db and include the repository name in the index. so you just have to
>> > control (using query parameters) if the query is done for the right reps
>> for
>> > that user.
>> >
>> > is it good for u?
>> >
>> >
>> >
>> > On Wed, Mar 25, 2009 at 6:20 PM, Jesper Nøhr <jes...@noehr.org> wrote:
>> >
>> >> Hm, I must be missing something, then.
>> >>
>> >> Consider this.
>> >>
>> >> There are three repositories, A and B, C. There are two users, U1 and
>> U2.
>> >>
>> >> Repository A is public, while B and C are private. Only U1 can access
>> >> B. No one can access C.
>> >>
>> >> I index this data, such that Is_Private is true for B.
>> >>
>> >> Now, when U2 searches, he will only see data for repo A. This is
>> correct.
>> >>
>> >> When U1 searches, what happens? AFAIK, he will also only see data for
>> >> A, unless we specify Is_Private:True, but then he will only see data
>> >> for B (and C, which he doesn't have access to.)
>> >>
>> >> Secondly, say we grant U2 access to B. How do we tell Solr that he can
>> >> see it, then?
>> >>
>> >> Sorry if I'm not making much sense here, but I'm quite confused.
>> >>
>> >>
>> >> Jesper
>> >>
>> >>
>> >>
>> >> On Wed, Mar 25, 2009 at 6:13 PM, Alejandro Gonzalez
>> >> <alejandrogonzalezd...@gmail.com> wrote:
>> >> > i can't see the problem about that. you can manage your users using a
>> DB
>> >> and
>> >> > keep there the permissions they could have, and create or erase users
>> >> > without problems. you just have to manage a "working index" field for
>> >> each
>> >> > user with repositories' ids he can access. or u can create several
>> >> indexes
>> >> > and a users solr index with a multi-valued field with the indexes the
>> >> user
>> >> > can access.
>> >> >
>> >> > if then u want to turn a private repository into public u just have to
>> >> > change the permissions field in your DB or users' index.
>> >> >
>> >> > On Wed, Mar 25, 2009 at 6:02 PM, Jesper Nøhr <jes...@noehr.org>
>> wrote:
>> >> >
>> >> >> On Wed, Mar 25, 2009 at 5:57 PM, Eric Pugh
>> >> >> <ep...@opensourceconnections.com> wrote:
>> >> >> > You could index the user name or ID, and then in your application
>> add
>> >> as
>> >> >> > filter the username as you pass the query back to Solr.  Maybe have
>> a
>> >> >> > access_type that is Public or Private, and then for public searches
>> >> only
>> >> >> > include the ones that meet the access_type of Public.
>> >> >>
>> >> >> That makes sense. Two questions on that:
>> >> >>
>> >> >> 1. More than one user can have access to a repository, so how would
>> >> >> that work? Also, if a user is added/removed, what's the best way to
>> >> >> keep that in sync?
>> >> >>
>> >> >> 2. In the event that a repository that is private, is made public,
>> how
>> >> >> easy would it be to run an "UPDATE" so to speak?
>> >> >>
>> >> >>
>> >> >> Jesper
>> >> >>
>> >> >> > On Mar 25, 2009, at 12:52 PM, Jesper Nøhr wrote:
>> >> >> >
>> >> >> >> Hi list,
>> >> >> >>
>> >> >> >> I've finally settled on Solr, seeing as it has almost everything I
>> >> >> >> could want out of the box.
>> >> >> >>
>> >> >> >> My setup is a complicated one. It will serve as the search backend
>> on
>> >> >> >> Bitbucket.org, a mercurial hosting site. We have literally
>> thousands
>> >> >> >> of code repositories, as well as users and other data. All this
>> needs
>> >> >> >> to be indexed.
>> >> >> >>
>> >> >> >> The complication comes in when we have private repositories. Only
>> >> >> >> select users have access to these, but we still need to index
>> them.
>> >> >> >>
>> >> >> >> How would I go about accomplishing this? I can't think of a clean
>> way
>> >> to
>> >> >> >> do it.
>> >> >> >>
>> >> >> >> Any pointers much appreciated.
>> >> >> >>
>> >> >> >>
>> >> >> >> Jesper
>> >> >> >
>> >> >> > -----------------------------------------------------
>> >> >> > Eric Pugh | Principal | OpenSource Connections, LLC | 434.466.1467
>> |
>> >> >> > http://www.opensourceconnections.com
>> >> >> > Free/Busy: http://tinyurl.com/eric-cal
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >>
>> >> >
>> >>
>> >
>>
>

Reply via email to